共計 2926 個字符,預計需要花費 8 分鐘才能閱讀完成。
這篇文章主要介紹“怎么使用 DBV”,在日常操作中,相信很多人在怎么使用 DBV 問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用 DBV”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
一、簡介
dbverify 工具的主要目的是為了檢查數據文件的物理結構,包括數據文件是否損壞,是否存在邏輯壞塊,以及數據文件中包含何種類型的數據。
二、原理
DBV 檢查以確保 Oracle 數據文件:
數據文件有一個有效的塊頭
每個數據塊在文件中有一個特殊的“wrapper”標識塊,這“wrapper”是為了校驗正確性
數據 (表) 和索引塊是內部一致的
從 8.1.6 起:多塊類型的內部一致性(如回滾 segment blocks)
三、DBV 限制
DBV 只能檢測可以被 ANALYZE TABLE .. VALIDATE STRUCTURE CASCADE 命令檢測的塊,像索引、表錯誤等
這個工具只能用于對數據文件。它不能用來驗證歸檔文件或控制文件。
你可以使用 DBV 驗證自動儲存管理(ASM)文件。
然而,數據庫必須打開,選擇用戶名已使用
例如:dbv file=+DG1/ORCL/datafile/system01.dbf userid=system/sys
DBV 檢查用戶名 / 密碼為 ASM 文件管理,當數據庫不是 open 狀態則不可能。
在大多數版本的 UNIX,DBV 基于文件擴展名。DBV 要求 datafile 必須有擴展名
如果裸設備沒有擴展名,可以創建一個 link,然后在進行 dbv 檢查。
例如:ln -s /dev/rdsk/mydevice /tmp/mydevice.dbf
對于原始設備,你應該使用“END”參數,以避免運行結束的文件空間的結束。
例如:dbv FILE=/dev/rdsk/r1.dbf END= last_block_number
用 file#=5 找到 END 值
select BYTES/8192 from v$datafile where FILE#=5;
BYTES/8192
----------
5120
dbv file=/dev/rdsk/r1.dbf blocksize=8192 END=5120
DBV 可能無法掃描數據文件大于 2GB 同時報告”dbv-100”。如果你得到了 dbv-100 錯誤首先請檢查文件大小。
DBV 從 8.1.6 起如果從 Oracle 7 遷移,基于回滾段塊會報虛假錯誤。見錯誤:1359160 和注意事項:118008.1。
DBV only checks a block in isolation -it does not know if the block is part of an existing object or not.
DBV 只檢查這個塊,它不知道這個塊是否是一個已經存在的對象的一部分。
DBV 在 SCO Unix 上是不可用的,另見 Bug:814249
DBV 是向下兼容的,不可用于高版本
四、DBV 示例
驗證 ASM 上的文件
查詢數據文件路徑
select file_name from dba_data_Files;
dbv check ASM 上的文件,注意添加 userid 參數
[oracle@rac2 ~]$ dbv file= +DATA/anqing/datafile/undotbs02.dbf userid=sys/oracle
驗證普通 datafile
實例沒有啟動的情況下進行 datafile 驗證
這種情況下,db 沒有啟動,要進入數據文件的存放目錄后在運行該命令,不然會報找不到數據文件。
dbv file=undotbs01.dbf
DB open 狀態,驗證指定段
可以通過 sys_dba_segs 表獲取 tablespace_id,header_file, header_block 三個字段,他們分別對應 tsn,relfile,
block.
select tablespace_id,header_file, header_block from sys_dba_segs where segment_name = TA
TABLESPACE_ID HEADER_FILE HEADER_BLOCK
------------- ----------- ------------
0 1 71513
語法:dbv USERID=username/password SEGMENT_ID=tsn.relfile.block
[oracle@rac2 ~]$ dbv segment_id=0.1.71513 userid=system/oracle
注:這種方式要求數據庫處于打開的狀態。
驗證數據拷貝
由于 dbv 可以在實例關閉情況下驗證數據文件,因此 dbv 也可以驗證數據文件的拷貝。這個拷貝指的是通過 RMAN 的 COPY 命令或者操作系統命令 cp 拷貝的數據文件,而不是 RMAN 生成的備份集格式。
通過比較 2 個 dbv 的結果來比較 datafile 的 copy
[oracle@node1 ~]$ dbv file= /oradata/orcl/test01.dbf userid=sys/oracle
DBVERIFY: Release 11.2.0.4.0 - Production on Wed Aug 17 15:15:52 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting(開始驗證) : FILE = /oradata/orcl/test01.dbf
DBVERIFY - Verification complete(驗證完成)
Total Pages Examined(檢查的頁總數) : 655360
Total Pages Processed (Data) 處理的頁總數 (數據): 261936
Total Pages Failing (Data) 失敗的頁總數 (數據): 0
Total Pages Processed (Index)處理的頁總數 (索引): 0
Total Pages Failing (Index)失敗的頁總數 (索引): 0
Total Pages Processed (Other)處理的頁總數 (其它): 876
Total Pages Processed (Seg)處理的總頁數 (段) : 3
Total Pages Failing (Seg)失敗的總頁數 (段) : 0
Total Pages Empty 空的頁總數 : 392545
Total Pages Marked Corrupt 標記為損壞的總頁數 : 0
Total Pages Influx 流入的頁總數 : 0
Total Pages Encrypted 加密的總頁數 : 0
Highest block SCN 最高塊 SCN : 117357549 (0.117357549)
到此,關于“怎么使用 DBV”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!