DB2數(shù)據(jù)庫完整性暫掛SQL0668N的錯(cuò)誤案例
報(bào)錯(cuò),錯(cuò)誤號(hào)為:SQL0668N
詳細(xì)說明:
SQL0668N 不允許對(duì)表 '<表名>' 執(zhí)行操作, 原因碼。
解釋:
限制對(duì)表 '<表名>' 的訪問。原因基于下列原因碼
原因碼:
1 該表處于“設(shè)置完整性暫掛無訪問”狀態(tài)。未強(qiáng)制表的完整性并且表的內(nèi)容可能是無效的。如果從
屬表處于“設(shè)置完整性暫掛無訪問”狀態(tài),則對(duì)于未處于“設(shè)置完整性暫掛無訪問”狀態(tài)的父表或基
礎(chǔ)表執(zhí)行的操作也可能會(huì)接收到此錯(cuò)誤。
2 表處于“無數(shù)據(jù)移動(dòng)”狀態(tài)。當(dāng)處于此狀態(tài)時(shí),禁止導(dǎo)致數(shù)據(jù)移動(dòng)的操作。數(shù)據(jù)移動(dòng)操作包括
REDISTRIBUTE、數(shù)據(jù)庫分區(qū)鍵的更新、多維集群鍵的更新、范圍集群鍵的更新、數(shù)據(jù)分區(qū)鍵的更新和 REORG TABLE。
3 表處于“裝入暫掛”狀態(tài)。對(duì)此表的先前的 LOAD嘗試失敗。在重新啟動(dòng)或終止 LOAD操作之前不允許對(duì)表進(jìn)行訪問。
4 表處于“讀訪問”狀態(tài)。此狀態(tài)可以在聯(lián)機(jī)裝入(LOAD)處理(帶有 READ ACCESS 選項(xiàng)的 LOAD
INSERT)期間發(fā)生,或在聯(lián)機(jī)裝入(LOAD)操作后發(fā)生,除了在使用SET INTEGRITY
語句在表的新追加的部分驗(yàn)證所有約束之前。不允許對(duì)此表的更新活動(dòng)。
5 表處于“正在裝入”狀態(tài)。LOAD 實(shí)用程序當(dāng)前對(duì)此表進(jìn)行操作,直到 LOAD完成才允許訪問。
6 不能在 ESE 中刷新引用昵稱的具體化查詢表。
7 表處于“REORG 暫掛”狀態(tài)。在執(zhí)行包含 REORG 建議的操作的 ALTER TABLE語句后,可能會(huì)發(fā)生這種情況。
8 表處于“改變暫掛”狀態(tài)。當(dāng)在包含 REORG 建議的操作的 ALTER TABLE語句所在工作單元中使用該表時(shí),就可能會(huì)發(fā)生這種情況。
用戶響應(yīng):
1 對(duì)表 '<表名>' 執(zhí)行帶有 IMMEDIATE CHECKED 選項(xiàng)的SETINTEGRITY 語句,以使表脫離“設(shè)置完整性暫掛無訪問” 狀態(tài)。對(duì)于用戶維護(hù)的具體化查詢表,執(zhí)行帶有IMMEDIATE UNCHECKED選項(xiàng)的語句,而不是帶 IMMEDIATECHECKED選項(xiàng)。
2 對(duì)表 '<表名>'
的從屬立即具體化查詢表和登臺(tái)表執(zhí)行 REFRESH TABLE語句。可以通過先前的 LOAD INSERT 操作根據(jù)
'<表名>' 的追加數(shù)據(jù)以及通過先前帶有 ATTACH子句的 ALTER TABLE 語句根據(jù) '<表名>'
的連接數(shù)據(jù)以增量方式維護(hù)這些從屬立即具體化查詢表 和登臺(tái)表的內(nèi)容。
3 通過分別發(fā)出帶有 RESTART 或 TERMINATER 選項(xiàng)的LOAD來重新啟動(dòng)或終止先前失敗的對(duì)此表的 LOAD 操作。
4 發(fā)出 LOAD QUERY
命令以檢查該表是否正在裝入。如果是,則一直等到 LOAD 實(shí)用程序完成,或如有必要,重新啟動(dòng)或終止先前失敗的“裝入”操作。如果當(dāng)前未在進(jìn)行LOAD,則發(fā)出帶有 IMMEDIATE CHECKED 選項(xiàng)的 SET INTEGRITY語句以驗(yàn)證表的新裝入部分中的約束。
5 一直等到當(dāng)前 LOAD 操作完成。可用使用 LOAD QUERY命令來監(jiān)視裝入的進(jìn)度。
6 使用 MAINTAIN BY USER
選項(xiàng)定義具體化查詢表。然后,使用帶有子查詢的INSERT 語句填充具體化查詢表。
7 使用 REORG TABLE命令重組表(注意,不允許對(duì)處于“REORG暫掛”狀態(tài)的表執(zhí)行 INPLACE REORG TABLE)。
8 完成該工作單元,然后重新發(fā)出該命令。
sqlcode : -668
sqlstate : 57007
-------------------------------------------------------
解決方案:
在服務(wù)器端CLP執(zhí)行下列命令即可:
SET INTEGRITY FOR DB2ADMIN.ALARMTARGET IMMEDIATE CHECKED
說明:如果表處于'設(shè)置完整性暫掛'的狀態(tài),那么就需要盡快處理,否則該表不能進(jìn)行 Select、Update、Delete 等操作。
