1 定義
oracle的壞塊可分為物理壞塊和邏輯壞塊。壞塊損壞資訊類似為:
ORA-01578: ORACLE data block corrupted (file # 6, block # 11)
ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/tbs01.dbf'
DBVERIFY工具的主要目的是為了檢查資料檔案、控制檔案的物理結構,包括資料檔案是否損壞,是否存在邏輯壞塊,以及資料檔案中包含何種類型的資料。不管資料庫是否開啟,都可以訪問資料檔案,也就是無論其是online還是offline。在Unix系統中位於:$ORACLE_HOME/bin/dbv。
2 命令
C:\Users\Administrator>dbvDBVERIFY: Release 10.2.0.1.0 - Production on 星期四 9月 20 01:24:37 2012Copyright (c) 1982, 2005, Oracle. All rights reserved.關鍵字 說明 (預設值)----------------------------------------------------FILE 要驗證的檔案 (無)START 起始塊 (檔案的第一個塊)END 結束塊 (檔案的最後一個塊)BLOCKSIZE 邏輯塊大小 (8192)LOGFILE 輸出日誌 (無)FEEDBACK 顯示進度 (0)PARFILE 參數檔案 (無)USERID 使用者名稱/口令 (無)SEGMENT_ID 段 ID (tsn.relfile.block) (無)HIGH_SCN 要驗證的最高塊 SCN (無) (scn_wrap.scn_base 或 scn)
注釋:
① 如果feedback=1000,則驗證1000個塊顯示一個.這個符號
② USERID --當驗證asm檔案時,要指定
③ FILE --使用者指定要驗證的資料檔案名
④ BLOCKSIZE --指定資料檔案的尺寸,預設值為8192,對於非8192塊將收到DBV-00103錯誤
⑤ PARFILE --可以像使用expdp/impdp一樣,將一些選項置於參數檔案裡面
⑥ SEGMENT_ID --校正段,需要資料表空間ID,資料檔案ID,段的頭部ID
3 限制
①DBV受版本限制,高版本可以自動識別低版本資料庫,比如11g的dbv訪問9i的資料庫,但是低版本的dbv訪問高版本會報錯。
②不支援聯機記錄檔,歸檔日誌,RMAN備份組驗證
③ 在許多Unix平台,DBV要求資料檔案要有副檔名,如果沒有可建立軟串連:
ln -s /dev/rdsk/mydevice /tmp/mydevice.dbf
4 案例
案例(一)
C:\Users\Administrator>dbv file=d:\oracle\product\10.2.0\oradata\ORCL\DATAFILE\O1_MF_USERS_7TQZTYTO_.DBFDBVERIFY: Release 10.2.0.1.0 - Production on 星期四 9月 20 01:04:07 2012Copyright (c) 1982, 2005, Oracle. All rights reserved.DBVERIFY - 開始驗證: FILE = d:\oracle\product\10.2.0\oradata\ORCL\DATAFILE\O1_MF_USERS_7TQZTYTO_.DBFDBVERIFY - 驗證完成檢查的頁總數: 42560 -- --校正的總頁面數,一個頁面即是一個資料區塊處理的頁總數 (資料): 40681失敗的頁總數 (資料): 0處理的頁總數 (索引): 97失敗的頁總數 (索引): 0處理的頁總數 (其它): 592處理的總頁數 (段) : 0失敗的總頁數 (段) : 0空的頁總數: 1190標記為損壞的總頁數: 0流入的頁總數: 0最高塊 SCN : 4772756 (0.4772756)
可以看到,dbverify給出的結果包括資料檔案包括的BLOCK數量,其中包括多少個資料區塊,多少個索引塊,多少空塊,多少個已經被標誌為壞塊的塊,多少個壞塊。注意:如果Total Pages Influx的值大於零,且未存在壞塊的情況下,是由於針對open狀態的檔案運行dbv程式遇到了一個當前正在被DBWn進程寫入的資料區塊。
案例(二)
DBV工具還有一種在資料庫開啟的情況下使用的,驗證指定段的使用方式
01:18:15 sys@ORCL (^ω^) SELECT TABLESPACE_ID, HEADER_FILE, HEADER_BLOCK01:19:27 2 FROM SYS_DBA_SEGS01:19:27 3 WHERE SEGMENT_NAME = 'S_EMP'01:19:29 4 /TABLESPACE_ID HEADER_FILE HEADER_BLOCK------------- ----------- ------------ 4 4 603C:\Users\Administrator>DBV userid=hr/hr segment_id=4.4.603DBVERIFY: Release 10.2.0.1.0 - Production on 星期四 9月 20 01:22:04 2012Copyright (c) 1982, 2005, Oracle. All rights reserved.DBVERIFY - 開始驗證: SEGMENT_ID = 4.4.603DBVERIFY - 驗證完成檢查的頁總數: 8處理的頁總數 (資料): 5失敗的頁總數 (資料): 0處理的頁總數 (索引): 0失敗的頁總數 (索引): 0處理的頁總數 (其它): 2處理的總頁數 (段) : 1失敗的總頁數 (段) : 0空的頁總數: 0標記為損壞的總頁數: 0流入的頁總數: 0最高塊 SCN : 4689412 (0.4689412)