Query

修改包含大量數據的 db2 表

  • December 21, 2011

我在 DB2 中有一個表,它有 99 列和 900,000 條數據記錄。

我想用一個額外的列來改變表格,如下所示:

ALTER TABLE MYSCHEMA.PRODUCT ADD UPDATE_DT DATE

但是,查詢永遠不會完成,並且表的狀態顯示在 APPLICATION LIST 視窗中針對我的 id 鎖定,我必須從該視窗中強制殺死它。

我相信這是因為存在大量數據。

我在這裡錯過了什麼嗎?我怎樣才能實現我想要做的事情?

你檢查過 db2 診斷日誌嗎?它說什麼?

我想到的第一件事是,當事務日誌已滿時,數據庫可能不會回滾,而是您的更新永遠不會完成。

檢查數據庫日誌參數以查看是否有足夠的日誌空間來記錄事務。

BLK_LOG_DSK_FUL http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.ha.doc/doc/c0006131.html

向 DB2 表中添加列應該不會花費很長時間;在通過 DML 更改行或通過 REORG TABLE 命令重建整個表之前,結構更改不會應用於現有行。由於系統目錄表中只有幾行會立即受到特定 ALTER TABLE 語句的影響,因此您遇到的掛起不太可能是由於過多的事務日誌記錄造成的。

相反,可能會發生一些其他連接可能持有乾擾您的 ALTER TABLE 語句的鎖。如果 LOCKTIMEOUT 仍設置為 -1,則嘗試添加列的連接不會超時。如果您可以暫時強制關閉其餘使用者,您將清除表或系統目錄上的所有鎖定。

引用自:https://dba.stackexchange.com/questions/9225