DBV 的使用
一、簡介
DBV是一個常用的工具,Oracle MOS上有一篇文章介紹DBV:[ID 35512.1]。
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)
注:這種方式要求資料庫處於開啟的狀態。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2663932/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dbv segment_id
- DBV:冷備份的校驗和恢復
- 分貝單位的本質(下半篇),dBm、dBFS、dBV的妙處你想象不到
- Scrapy框架的使用之Scrapyrt的使用框架
- ActiveMQ的使用及整合spring的使用例項MQSpring
- Docker框架的使用系列教程(四)容器的使用Docker框架
- Urllib庫的使用一---基本使用
- ECharts的使用Echarts
- DbVisualizer的使用
- Typeof的使用
- iview 的使用View
- Trait 的使用AI
- lombok的使用Lombok
- MybatisGenerator的使用MyBatis
- valueForKeyPath的使用
- ThreadLocal的使用thread
- elasticsearch的使用Elasticsearch
- CoreData的使用
- joomla的使用OOM
- sqlmap的使用SQL
- echars的使用
- SVG 的使用SVG
- FlowableAPI的使用API
- pycnblog的使用
- netcat的使用
- jextract的使用
- pinia的使用
- pip 的使用
- Docker的使用Docker
- Promise的使用Promise
- SVN的使用
- EndNote的使用
- git的使用+Git
- git 的使用Git
- Bootstarp的使用boot
- GRPC的使用RPC
- Maven的使用Maven
- Scanner的使用