为什么在查询系统表的时候偶尔会出现锁超时的错误? (DBMR2870)

~ 0 min
2017-01-18 10:16

当在并发环境中执行SQL语句的时候,例如:删除一张半的所有记录或者在DCI中通过"OUTPUT"删除后者创建表的时候,就会加系统X锁,这种情况下其他的连接就无法访问这张表了。这是正常的行为。

但是当你通过JDBA工具去查询某些系统表或者检查某些内容的时候,锁超时还是会发生,这是因为系统表不允许脏读。

如果你想在加了系统X锁的情况下通过JDBA工具去查询系统表或检查某些内容,你可以使用

“for browse” 选项像下面示例一样。

>select * from SYSTABLE for browse;

Or set DB_DBIND=1 in dmconfig.ini (需要重启数据库)

DB_DBIND=1 //系统表脏读的绑定

Or runtime set with

>call SETSYSTEMOPTION('DBIND', '1');

版本: All

产品: Normal/Bundle

平台: Windows/Linux

平均分: 0 (0 投票)

你不能对该内容发表评论

标签