SAP HANA中表锁分析
更多内容请关注公众号:SAP Technical
写在前面
我们知道在SAP ECC里使用TCODE: SM12来查看表的锁定情况。通过SM12在系统中找到相关的记录。当然删除相关的记录可以解决问题,但这里需要提醒大家的是,这种记录不可以随便删除。如果别人正在处理相关记录而被你删除了,就会造成数据的错误和丢失。
遇到这种情况,我们首先要判断被LOCK的记录是否正被处理,如果没有就可以直接删除;如果有那只能等相关操作完成自动释放,或者通知相关使用人退出相关操作,也可以释放。
那么,在SAP HANA中怎么查看表锁的情况呢。我这里通过HANA Studio来查看表的锁定情况。当然前提条件是要使用具有CATALOG READ的权限的用户来查看。
实现过程
首先,我们来准备一下前提条件。
1,准备一个拥有CATALOG READ权限的用户,登录到HANA Studio。
2,登录到HANA系统并打开管理控制台。
3,选择“System Information”页签, 然后找到“Table Locks”来查看锁。
当然我们也可以通过执行“SYS.M_TABLE_LOCKS”视图来查看。如下图所示:
锁定模式分析:
●锁定模式:独占(EXCLUSIVE)
1、可以通过显式获取LOCK TABLE命令或隐式获取DDL命令。
2、持有锁的事务可以读取和写入表。
3、只有持有该锁的事务才能访问该表。
4、锁定EXCLUSIVE锁时锁定其他事务对表的锁定请求。
5、数据库发布在事务结束时获取锁。
●锁定模式:有目的的独占(INTENTIONAL EXCLUSIVE)
1、通过DML隐式获取。
2、多笔交易可以获得INTENTIONAL EXCLUSIVE锁。
3、在保留INTENTIONAL EXCLUSIVE锁的情况下,其他事务的表的异常锁请求被阻止。
4、数据库发布在事务结束时获取锁。