Oracle DBV 工具 介紹

xz43發表於2011-01-18
DBVERIFY工具的主要目的是為了檢查資料檔案的物理結構,包括資料檔案是否損壞,是否存在邏輯壞塊,以及資料檔案中包含何種型別的資料。
DBVERIFY工具可以驗證ONLINE或OFFLINE的資料檔案。不管資料庫是否開啟,都可以訪問資料檔案。
 
1.可以使用幫助檢視dbv的命令引數
C:\>dbv help=y
DBVERIFY: Release 11.1.0.7.0 - Production on 星期二 12月 15 23:35:24 2009
Copyright (c) 1982, 2007, 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)
 
 
2.具體使用說明
DBVERIFY 驗證資料檔案
FILE 輸入檔名
START 開始塊地址
END 結束塊地址
BLOCKSIZE 指定BLOCKSIZE尺寸
LOGFILE 指定LOG檔案
FEEDBACK 進度顯示
HELP 幫助
PARFILE 引數檔案
 
3. 簡單語法

3.1 dbv FILE=t_db1.dbf  FEEDBACK=100
 
E:\app\Administrator\oradata\orcl>dbv file=users01.dbf blocksize=8192
DBVERIFY: Release 11.1.0.7.0 - Production on 星期二 12月 15 23:54:55 2009
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
 
DBVERIFY - 開始驗證: FILE = E:\app\Administrator\oradata\orcl/users01.dbf
 
DBVERIFY - 驗證完成
檢查的頁總數: 640
處理的頁總數 (資料): 91
失敗的頁總數 (資料): 0
處理的頁總數 (索引): 33
失敗的頁總數 (索引): 0
處理的頁總數 (其它): 496
處理的總頁數 (段)  : 0
失敗的總頁數 (段)  : 0
空的頁總數: 20
標記為損壞的總頁數: 0
流入的頁總數: 0
加密的總頁數        : 0
最高塊 SCN            : 904088 (0.904088)
 
注意目錄,要進入資料檔案的存放目錄後在執行該命令,不然會報找不到資料檔案。
 

3.2  DBV工具還有一種在資料庫開啟的情況下使用的,驗證指定段的用法:
   dbv USERID=username/password SEGMENT_ID=tsn.relfile.block

DBVERIFY驗證段
USERID 指定使用者名稱和密碼
SEGMENT_ID 指定驗證的段
LOGFILE 指定LOG檔案
FEEDBACK 進度顯示
HELP 幫助
PARFILE 引數檔案
 
這種方法需要查詢表空間ID、段頭所在的資料檔案ID和以及段頭所在表空間ID,要獲取這個資訊可以透過SYS使用者查詢SYS_DBA_SEGS檢視。需要注意的是,Oracle文件給出的SYS_USER_SEGS檢視只能查詢SYS使用者的段,要查詢普通使用者的段資訊,需要訪問SYS_DBA_SEGS。
 
--------------------------------------------------------------------------------
SQL> create table DAVE (ID number);
表已建立。
SQL> SELECT TABLESPACE_ID, HEADER_FILE, HEADER_BLOCK FROM SYS_DBA_SEGS WHERE SEGMENT_NAME = 'DAVE';
TABLESPACE_ID HEADER_FILE HEADER_BLOCK
------------- ----------- ------------
            0           1        89976
E:\app\Administrator\oradata\orcl>dbv userid=system/admin segment_id=0.1.89976
 
DBVERIFY: Release 11.1.0.7.0 - Production on 星期三 12月 16 00:19:02 2009
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
DBVERIFY - 開始驗證: SEGMENT_ID = 0.1.89976
DBVERIFY - 驗證完成
 
檢查的頁總數: 9
處理的頁總數 (資料): 0
失敗的頁總數 (資料): 0
處理的頁總數 (索引): 0
失敗的頁總數 (索引): 0
處理的頁總數 (其它): 9
處理的總頁數 (段)  : 0
失敗的總頁數 (段)  : 0
空的頁總數: 0
標記為損壞的總頁數: 0
流入的頁總數: 0
加密的總頁數        : 0
最高塊 SCN            : 912858 (0.912858)
 
注:這種方式要求資料庫處於開啟的狀態。
 
4. 驗證資料複製
由於dbv可以在例項關閉情況下驗證資料檔案,因此dbv也可以驗證資料檔案的複製。這個複製指的是透過RMAN的COPY命令或者作業系統命令cp複製的資料檔案,而不是RMAN生成的備份集格式。

--------------------------------------------------------------------------------
U:Y0E:\app\Administrator\oradata\orcl>dbv file= USERS01bak.DBF blocksize=8192
DBVERIFY: Release 11.1.0.7.0 - Production on 星期三 12月 16 00:30:17 2009
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
DBVERIFY - 開始驗證: FILE = E:\app\Administrator\oradata\orcl/USERS01bak.DBF
DBVERIFY - 驗證完成
檢查的頁總數: 640
處理的頁總數 (資料): 91
失敗的頁總數 (資料): 0
處理的頁總數 (索引): 33
失敗的頁總數 (索引): 0
處理的頁總數 (其它): 496
處理的總頁數 (段)  : 0
失敗的總頁數 (段)  : 0
空的頁總數: 20
標記為損壞的總頁數: 0
流入的頁總數: 0
加密的總頁數        : 0
最高塊 SCN            : 904088 (0.904088)
 
 
一些注意事項:
1. 對於DBVERIFY工具,高版本可以自動識別低版本資料庫,比如11g的dbv訪問9i的資料庫,但是低版本的dbv訪問高版本會報如下之類的錯誤:
DBVERIFY -驗證正在開始: FILE = e:\oracle\oradata\Dave\test01.dbf

匯入的頁1 -可能是介質損壞
 
2. 檢視資料壞塊所在資料檔案號及塊號可以對錶進行一次全表掃描,如:
select count(*) from tablename;
 
如果有壞塊, 在掃描的時候就會報錯
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-684122/,如需轉載,請註明出處,否則將追究法律責任。

相關文章