由于該檢查所需的時間和該檢查可能導致的爭用,所以調(diào)度在活動最少的時候進行該檢查。建議您就在創(chuàng)建 0 級備份之前執(zhí)行該檢查。
確認類型 |
命令 |
系統(tǒng)目錄表 |
oncheck -cc |
數(shù)據(jù) |
oncheck -cD dbname |
擴展數(shù)據(jù)塊 |
oncheck -ce |
索引 |
oncheck -cI dbname |
保留頁 |
oncheck -cr |
邏輯日志和保留頁 |
oncheck -cR |
元數(shù)據(jù)和智能大對象 |
oncheck -cs |
您可以在數(shù)據(jù)庫服務器處于聯(lián)機方式時運行這些命令中的每個命令。有關每個命令如何在檢查對象時鎖定它們以及哪些用戶可以執(zhí)行確認的信息,請參閱 IBM Informix: Administrator's Reference 中的 oncheck。
在大多數(shù)情況下,如果這些確認過程中的一個或多個過程檢測到錯誤,則解決方案是從數(shù)據(jù)庫空間備份恢復數(shù)據(jù)庫。但是,錯誤的來源也可能是硬件或操作系統(tǒng)。
確認系統(tǒng)目錄表
要驗證系統(tǒng)目錄表,使用 oncheck -cc 命令。
每個數(shù)據(jù)庫包含它本身的系統(tǒng)目錄,該目錄包含關于數(shù)據(jù)庫表、列、索引、視圖、約束、存儲過程和特權的信息。
如果當確認完成時出現(xiàn)警告,該警告的僅有用途是提醒您找不到特定類型的記錄。這些警告并非指示您的數(shù)據(jù)、系統(tǒng)目錄或甚至數(shù)據(jù)庫設計有任何問題。該警告僅指示不存在任何表的同義詞;即,系統(tǒng)目錄在表 syssyntable 中不包含記錄。例如:如果您為沒有為任何表定義同義詞的數(shù)據(jù)庫確認系統(tǒng)目錄表,則可能出現(xiàn)以下警告:
WARNING: No syssyntable records found.
但是,如果您在確認系統(tǒng)目錄表時接收到錯誤消息,則情況就完全不同了。請立即與 IBM Informix 技術支持聯(lián)系。
確認數(shù)據(jù)頁
要確認數(shù)據(jù)頁,請使用 oncheck -cD 命令。
如果數(shù)據(jù)頁確認檢測到錯誤,則嘗試從指定表卸裝數(shù)據(jù)、刪除表、重新創(chuàng)建表以及重新裝入數(shù)據(jù)。有關裝入和卸裝數(shù)據(jù)的信息,請參閱《IBM Informix: 遷移指南》。如果該過程不成功,請從存儲空間備份執(zhí)行數(shù)據(jù)恢復。
確認擴展數(shù)據(jù)塊
要確認每個數(shù)據(jù)庫中的擴展數(shù)據(jù)塊,請使用 oncheck -ce 命令。
擴展數(shù)據(jù)塊一定不能重疊。如果該命令檢測到錯誤,請從存儲空間備份執(zhí)行數(shù)據(jù)恢復。
確認索引
要確認數(shù)據(jù)庫中每個表上的索引,請使用 oncheck -cI 命令。
如果該命令檢測到錯誤,則刪除并重新創(chuàng)建受影響的索引。
確認邏輯日志
要確認邏輯日志和保留頁,請使用 oncheck -cR 命令。
確認保留頁
要確認保留頁,請使用 oncheck -cr 命令。
保留頁是駐留在根數(shù)據(jù)庫空間初始塊開始處的頁。這些頁包含主數(shù)據(jù)庫服務器開銷信息。如果該命令檢測到錯誤,請從存儲空間備份執(zhí)行數(shù)據(jù)恢復。
該命令可能會提供警告。在大多數(shù)情況下,這些警告讓您注意的是您已經(jīng)知道的情況。
確認元數(shù)據(jù)
對每個數(shù)據(jù)庫執(zhí)行 oncheck -cs 以確認數(shù)據(jù)庫中所有智能大對象的元數(shù)據(jù)。如有必要,從數(shù)據(jù)庫空間備份恢復數(shù)據(jù)。
要確認表和表空間數(shù)據(jù),請在數(shù)據(jù)庫或表上使用 oncheck -cD 命令。
大多數(shù)的一般斷言失敗消息后面均跟隨其它信息,其它信息通常包含檢測到錯誤的表空間。如果該檢查驗證出不一致,則從表中卸裝數(shù)據(jù)、刪除表、重新創(chuàng)建表以及重新裝入數(shù)據(jù)。另外,不需要任何其它操作。
在許多情況中,數(shù)據(jù)庫服務器當斷言失敗時會立即停止。但是,當失敗看起來是特定于某表或較小實體時,數(shù)據(jù)庫服務器會繼續(xù)運行。
當斷言是由于數(shù)據(jù)庫服務器代表用戶訪問的數(shù)據(jù)頁上的不一致而失敗時,還會將錯誤發(fā)送至應用程序進程。SQL 錯誤取決于正在進行的操作。但是,ISAM 錯誤幾乎始終是 -105 或 -172,如下所示:
-105 ISAM error: bad isam file format
-172 ISAM error: Unexpected internal error