DB2 SQL错误:SQLCODE = -911,SQLSTATE = 40001,SQLERRMC = 68

时间:2012-09-17 16:31:14

标签: db2

我跑步时收到此错误:

alter table tablename add column columnname varchar(1) default 'N';
  

DB2 SQL错误:SQLCODE = -911,SQLSTATE = 40001,SQLERRMC = 68

如何解决?

4 个答案:

答案 0 :(得分:1)

alter语句希望在SYSIBM.SYSTABLES中的此行上获得X锁定。有一个打开的事务,该行/索引值处于不兼容的锁定状态。导致超时的此锁甚至可以来自以RS或RR隔离级别读取此行的打开游标。 终止当前尝试查询SYSTABLES的任何其他SQL以及可能尝试更新SYSTABLES的任何实用程序,如reorg和runstats,然后再次尝试更改。

答案 1 :(得分:0)

请参阅DB2 Info center(我为DB2 10选择了一个,很可能这个错误代码在其他版本中是相同的,但是双重检查!)。

似乎您的表上打开了一个事务,这会阻止您执行alter命令。

答案 2 :(得分:0)

在你改变一张桌子后,你需要重建:在这里重新开始:

答案 3 :(得分:0)

定期运行runstats脚本(这是一个DB2脚本),并将脚本设置为收集RUNSTATS WITH DISTRIBUTION AND DETAILED INDEXES ALL。

除了定期运行runstats脚本外,您还可以执行以下任务来避免此问题: 使用REOPT ONCE或REOPT ALTERS与命令行界面(CLI)包一起更改查询优化行为。 在DB2数据库中,更改表以使其易变。易失性表向DB2优化器指示表基数在运行时可以显着改变(从空到大,反之亦然)。因此,DB2使用索引来访问表而不是表扫描。