为什么在查询系统表的时候偶尔会出现锁超时的错误? (DBMR2870)
当在并发环境中执行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