INSPECT 指令
INSPECT 指令會檢查資料庫的架構完整性,並檢查資料庫頁面的頁面一致性。 INSPECT 指令會檢查表格物件的結構及表格空間的結構是否有效。 交叉物件驗證會執行線上索引至資料一致性檢查。
範圍
在單一分割區資料庫環境中,範圍僅是單一分割區。 在分割的資料庫環境中,它是 db2nodes.cfg中定義的所有邏輯分割區的集合。 若為分割表格, CHECK DATABASE 及 CHECK TABLESPACE 選項包括個別資料分割區及未分割的索引。 CHECK TABLE 選項也適用於分割表格,不過它會檢查表格中的所有資料分割區及索引,而不是檢查單一資料分割區或索引。
授權
- SYSADM
- DBADM
- SYSCTRL
- SYSMAINT
- 單一表格時的 CONTROL 專用權。
必要連線
資料庫
指令語法
指令參數
- CHECK
- 指定檢查處理。
- DATABASE
- 指定整個資料庫。
- BEGIN TBSPACEID n
- 指定從具有給定表格空間 ID 號碼的表格空間開始處理。
- OBJECTID n
- 指定從具有給定表格空間 ID 號碼及物件 ID 號碼的表格開始處理。
- TABLESPACE
- NAME tablespace-name
- 指定具有給定表格空間名稱的單一表格空間。
- TBSPACEID n
- 指定具有給定表格空間 ID 號碼的單一表格空間。
- BEGIN OBJECTID n
- 指定從具有給定物件 ID 號碼的表格開始處理。
- TABLE
- NAME table-name
- 指定具有給定表格名稱的表格。
- SCHEMA schema-name
- 指定單一表格作業之指定表格名稱的綱目名稱。
- TBSPACEID n OBJECTID n
- 指定具有給定表格空間 ID 號碼及物件 ID 號碼的表格。
- ROWCOMPESTIMATE-TABLE
- 估計表格的列壓縮有效性。 您也可以指定要執行此作業的資料庫分割區。
不論是否指定 KEEP 選項,此作業都會保留 RESULTS 輸出檔。
此工具能夠取得表格資料的樣本,並從中建置字典。 然後可以使用此字典來針對範例中包含的記錄測試壓縮。 從此測試壓縮中收集資料,並從中進行下列預估:- 壓縮所節省的位元組百分比
- 壓縮所節省的頁面百分比
- 壓縮定義檔大小
- 擴充字典大小
如果此表格已設定 COMPRESS YES 屬性,且此表格尚未存在字典,則 INSPECT 會插入為了收集這些壓縮估計值而建置的字典。 INSPECT 會嘗試將字典並行插入其他存取表格的應用程式。 字典插入需要「專用表格變更」鎖定及「專用表格」鎖定上的「目的」。 INSPECT 只會將字典插入支援資料列壓縮的表格中。 對於分割表格,會在每一個分割區上建置並插入個別字典。
取樣表格列資料並建置表格的壓縮定義檔時, INSPECT 指令僅支援表格物件中的表格列資料。 如果表格包含 XML 直欄,則不會對資料進行取樣,且不會針對表格 XML 儲存體物件中的 XML 資料建置壓縮定義檔。 請改用表格函數。
ROWCOMPESTIMATE 選項不提供索引壓縮預估。 請改用表格函數。
此參數不支援 直欄組織 表格。
- RESULTS
- 指定結果輸出檔。 檔案將寫出至診斷資料目錄路徑。 如果檢查處理程序找不到任何錯誤,則會在 INSPECT 作業結束時消除此結果輸出檔。 如果檢查處理程序發現錯誤,則在 INSPECT 作業結束時不會消除此結果輸出檔。
- KEEP
- 指定一律保留結果輸出檔。
- file-name
- 指定結果輸出檔的名稱。 必須在診斷資料目錄路徑中建立檔案。
- ALL DBPARTITIONNUMS
- 指定要在 db2nodes.cfg 檔案中指定的所有資料庫分割區上執行作業。 如果未指定資料庫分割區子句,則這是預設值。
- EXCEPT
- 指定要對 db2nodes.cfg 檔案中指定的所有資料庫分割區執行作業,但資料庫分割區清單中指定的那些資料庫分割區除外。
- ON DBPARTITIONNUM | ON DBPARTITIONNUMS
- 在一組資料庫分割區上執行作業。
- db-partition-number1
- 指定資料庫分割區清單中的資料庫分割區號碼。
- db-partition-number2
- 指定第二個資料庫分割區號碼,以便將 db-partition-number1 直到 (含) db-partition-number2 的所有資料庫分割區併入資料庫分割區清單中。
- FOR ERROR STATE ALL
- 對於內部狀態已指出錯誤狀態的表格物件,檢查只會報告此狀態,而不會掃描物件。 指定此選項將透過物件進行處理掃描,即使內部狀態已列出錯誤狀態也一樣。
與 INDEXDATA 選項一起使用時,只要索引或資料物件處於錯誤狀態,就不會執行線上索引至資料一致性檢查。
- LIMIT ERROR TO n
- 受報告限制之物件的錯誤頁數。 當達到物件的錯誤頁數限制時,處理程序將停止檢查物件的其餘部分。
與 INDEXDATA 選項一起使用時, n 代表在線上索引至資料一致性檢查期間限制報告的錯誤數。
- LIMIT ERROR TO DEFAULT
- 限制物件錯誤報告的預設頁數。 此值是物件的延伸範圍大小。 此參數是預設值。
與 INDEXDATA 選項一起使用時, DEFAULT 代表在線上索引至資料一致性檢查期間限制報告的預設錯誤數。
- LIMIT ERROR TO ALL
- 報告的錯誤頁數沒有限制。
與 INDEXDATA 選項一起使用時, ALL 代表在線上索引至資料一致性檢查期間所報告的錯誤數沒有限制。
- EXTENTMAP
- 指定延伸範圍對映的處理層次。
- NORMAL
- 指定一般處理層次。 此選項是預設值。
- NONE
- 指定不處理。
- LOW
- 指定低處理層次。
- DATA
- 指定資料物件的處理層次。
- NORMAL
- 指定一般處理層次。 此選項是預設值。
- NONE
- 指定不處理。
- LOW
- 指定低處理層次。
- COL
- 指定 直欄組織 資料物件的處理層次。
- NORMAL
- 指定一般處理層次。 此選項是預設值。
- NONE
- 指定不處理。
- LOW
- 指定低處理層次。
- BLOCKMAP
- 指定區塊對映物件的處理層次。
- NORMAL
- 指定一般處理層次。 此選項是預設值。
- NONE
- 指定不處理。
- LOW
- 指定低處理層次。
此參數不支援 直欄組織 表格。
- INDEX
- 指定索引物件的處理層次。
- NORMAL
- 指定一般處理層次。 此選項是預設值。
- NONE
- 指定不處理。
- LOW
- 指定低處理層次。
- LONG
- 指定長物件的處理層次。
- NORMAL
- 指定一般處理層次。 此選項是預設值。
- NONE
- 指定不處理。
- LOW
- 指定低處理層次。
- LOB
- 指定 LOB 的處理層次。
- NORMAL
- 指定一般處理層次。 此選項是預設值。
- NONE
- 指定不處理。
- LOW
- 指定低處理層次。
- XML
- 指定 XML 直欄物件的處理層次。
- NORMAL
- 指定一般處理層次。 此選項是預設值。 會檢查 XML 物件的頁面是否有大部分不一致。 未檢查實際 XML 資料。
- NONE
- 指定不處理。
- LOW
- 指定低處理層次。 會檢查 XML 物件的頁面是否有一些不一致。 未檢查實際 XML 資料。
- INDEXDATA
- 指定以執行索引至資料一致性檢查。 依預設不會執行 INDEXDATA 檢查。
此參數不支援 直欄組織 表格。
範例
- 若要執行資料一致性的索引檢查,以容許對所有物件 (甚至目前所檢查的物件) 進行讀寫存取,請發出下列指令:
inspect check table name fea3 indexdata results keep fea3high.out - 若要執行資料一致性檢查的索引,以容許對所有物件 (包括目前正在檢查的物件) 的讀取或寫入權,請發出:
INSPECT CHECK TABLE NAME car SCHEMA vps INDEXDATA RESULTS KEEP table1.out - 若要預估如果 EMPLOYEE 表格中的資料已壓縮,將會節省多少儲存體空間,請發出:
INSPECT ROWCOMPESTIMATE TABLE NAME car SCHEMA vps RESULTS table2.out
使用注意事項
- 對於表格物件上的 CHECK 作業,可以指定物件的處理層次。 預設值為 NORMAL 層次,為物件指定 NONE 會排除它。 指定 LOW 會執行針對 NORMAL所執行的檢查子集。
- 可以透過指定 ID 值來識別表格空間或表格,將 CHECK DATABASE 選項指定為從特定表格空間或從特定表格開始。
- 您可以指定 ID 值來識別表格,以指定 CHECK TABLESPACE 選項從特定表格開始。
- 表格空間的處理只會影響位於表格空間中的物件。 使用 INDEXDATA 選項時例外。 只要索引物件位於表格空間中, INDEXDATA 就會檢查資料一致性的索引。 這表示:
- 如果資料物件所在的表格空間與索引物件所在的指定要檢查的表格空間不同,它仍然可以受益於 INDEXDATA 檢查。
- 若為分割的表格,每一個索引可以位於不同的表格空間中。 只有位於指定表格空間中的那些索引才會從索引至資料檢查中獲益。 如果您要針對一個表格檢查所有索引,請使用 CHECK TABLE 選項或 CHECK DATABASE 選項。
- 線上檢查處理程序將使用隔離層次未確定的讀取來存取資料庫物件。 將在 INSPECT 處理期間完成 COMMIT 處理程序。 建議在呼叫 INSPECT之前先發出 COMMIT 或 ROLLBACK ,以結束工作單元。
- 線上檢查檢查處理程序會將未格式化的檢驗資料結果寫出至指定的結果檔案。 檔案將寫出至診斷資料目錄路徑。 如果檢查處理找不到錯誤,則會在 INSPECT 作業結束時消除此結果輸出檔。 如果檢查處理發現錯誤,則在 INSPECT 作業結束時不會消除此結果輸出檔。 在檢查處理完成之後,若要查看檢驗詳細資料,必須使用公用程式 db2inspf來格式化檢驗結果資料。 結果檔案將具有資料庫分割區號碼的副檔名。
- 在分割的資料庫環境中,每一個資料庫分割區會產生其自己的結果輸出檔,其副檔名對應於其資料庫分割區號碼。 結果輸出檔的輸出位置將是資料庫管理程式診斷資料目錄路徑。 如果指定已存在的檔案名稱,則不會處理作業,必須先移除檔案,才能指定該檔案名稱。
- 一般線上檢查處理將使用隔離層次未確定的讀取來存取資料庫物件。 將壓縮定義檔插入表格將嘗試獲得寫入鎖定。 如需字典插入鎖定的詳細資料,請參閱 ROWCOMPESTIMATE 選項。 將在檢查處理期間完成確定處理。 建議在啟動檢查作業之前先發出 COMMIT 或 ROLLBACK ,以結束工作單元。
- INDEXDATA 選項只會檢查索引與資料之間的邏輯不一致。 因此,建議您在執行 INDEXDATA 檢查之前,先個別執行 INDEX 和 DATA 檢查,以排除任何實體毀損。
- 以 INDEXDATA 參數指定的 INSPECT 指令會執行資料一致性的索引檢查,同時容許對所有物件/表格的讀寫存取權,即使目前正在檢查的物件/表格也是如此。 INSPECT INDEXDATA 選項包括下列檢驗:
- 給定索引登錄的資料列存在。
- 資料值驗證的金鑰。
指定 INDEXDATA 選項時:- 依預設,只會使用明確指定的層次子句選項的值。 對於未明確指定的任何層次子句選項,會將預設層次從 NORMAL 改寫為 NONE。 例如,當 INDEXDATA 是指定的唯一層次子句選項時,依預設只會執行資料檢查的索引。
- BLOCKMAP 選項會傳回資訊,包括在重組以收回多維度叢集 (MDC) 或插入時間叢集 (ITC) 表格區塊之後,是否已收回區塊供表格空間使用。
- 如果 INSPECT 指令完成,但有資源錯誤或限制,例如: 系統記憶體不足,您應該在修正或提升資源錯誤或限制之後再次嘗試執行它。
- INSPECT 指令設計為與其他公用程式 (例如 REORG) 同步執行。 透過取得各種鎖定 (例如表格空間鎖定、表格鎖定、列鎖定等) 來管理並行性。 通常不會預期發生死鎖; 不過,視工作量及資料庫配置而定,可能會發生鎖定逾時。 另請注意,鎖定管理程式的死鎖偵測將在發生死鎖時處理死鎖,並任意選擇死鎖受害者。
