DBVERIFY 工具的使用
--**********************
-- DBVERIFY 工具的使用
--**********************
Oracle 數據庫運行過程中由於硬體故障或操作系統故障導致導致Oracle無法以Oracle格式來識別或所包含的內容即為出現數據塊損壞
故障,這個壞塊可以分為介質損壞以及邏輯損壞。下面給出了塊的檢查,以及使用DBVERIFY 工具實施塊檢查。
一、塊檢查
1.何時檢查塊
當一個數據塊被讀或寫的時候,將對塊的進行一致性檢查,檢查的內容包括
塊的版本
比較塊在cache與block buffer中的數據塊地址
根據要求進行校驗(checksum)
2.損壞的數據塊的錯誤提示
可以從告警日誌檔案中找到該錯誤提示,以及在會話中發現損壞的數據塊時也會給出類似的提示
ORA-01578: ORACLE data block corrupted (file # 6, block # 11)
ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/tbs01.dbf'
3.與塊損壞的相關特性(幾種檢查工具)
------------------------------------------------------------------------------------------------
特性 壞塊偵測類型 能否修復損壞塊
------------------------------------------------------------------------------------------------
DBVERIFY 物理 否
ANALYZE 邏輯 否
DB_BLOCK_CHECKING 邏輯 否
DB_BLOCK_CHECKSUM 物理 否
exp 物理 否
FlashBack 邏輯 是
DBMS_REPAIR 邏輯 是
Block media recovery 未知 是
二、DBVERIFY工具介紹
特性
是一個運行於操作系統提示符下的外部程式,用於驗證數據檔案,檢查塊的一致性錯誤
僅僅針對數據檔案,能夠校驗open階段的數據檔案以及shutdown狀態下的數據檔案
可以驗證復制的數據檔案,也可以驗證備份的鏡像副本
不支援聯機日誌檔案,控制檔案,歸檔日誌,RMAN備份集驗證
被驗證的檔案可以位於檔案系統,ASM磁盤或原始裝置
在Unix系統中位於:$ORACLE_HOME/bin/dbv
在Windows系統中位於:%ORACLE_HOME%/bin/dbv.exe
對於DBVERIFY工具,高版本可以自動識別低版本數據庫,比如11g的dbv訪問9i的數據庫,但是低版本的dbv訪問高版本會報錯
三、DBVERIFY工具用法
1.獲取dbv的幫助資訊,直接在提示符下輸入dbv即可 或者輸入dbv help=y
[oracle@oradb orcl]$ dbv
DBVERIFY: Release 10.2.0.4.0 - Production on Tue Oct 26 18:21:09 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Keyword Description (Default)
----------------------------------------------------
FILE File to Verify (NONE)
START Start Block (First Block of File)
END End Block (Last Block of File)
BLOCKSIZE Logical Block Size (8192)--指定數據檔案的尺寸,預設值為8192,對於非8192塊將收到DBV-00103錯誤
LOGFILE Output Log (NONE) --用於顯示驗證進度
FEEDBACK Display Progress (0)
PARFILE Parameter File (NONE) --可以指定引數檔案
USERID Username/Password (NONE) --校驗段、ASM檔案需要使用
SEGMENT_ID Segment ID (tsn.relfile.block) (NONE) --校驗段,需要表空間ID,數據檔案ID,段的頭部ID
HIGH_SCN Highest Block SCN To Verify (NONE)
(scn_wrap.scn_base OR scn)
2.校驗online,offline數據檔案,使用下面的方法
dbv file=
[oracle@oradb orcl]$ dbv file=$ORACLE_BASE/oradata/orcl/tbs01.dbf
DBVERIFY: Release 10.2.0.4.0 - Production on Tue Oct 26 18:29:39 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/orcl/tbs01.dbf
DBVERIFY - Verification complete
Total Pages Examined : 128 --校驗的總頁面數,一個頁面即是一個數據塊
Total Pages Processed (Data) : 96 --已處理的數據頁面數
Total Pages Failing (Data) : 0 --已處理數據頁面的失敗數
Total Pages Processed (Index): 1 --已處理的索引頁面數
Total Pages Failing (Index): 0 --已處理索引頁面失敗數
Total Pages Processed (Other): 31 --已處理的其它頁面數
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 0
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 1152518 (0.1152518)
注意:如果Total Pages Influx的值大於零,且未存在壞塊的情況下,是由於針對open狀態的檔案運行dbv
程式遇到了一個當前正在被DBWn進程寫入的數據塊
[oracle@oradb orcl]$ dbv file=$ORACLE_BASE/oradata/orcl/tbs01.dbf feedback=1000
上面這句在執行時每驗證1000個塊將顯示一個"."號
--下面的校驗發現了I/O錯誤
[oracle@oradb orcl]$ dbv file=/u01/app/oracle/oradata/orcl/tbs01.dbf
DBVERIFY: Release 10.2.0.4.0 - Production on Tue Oct 26 18:26:21 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBV-00102: File I/O error on FILE (/u01/app/oracle/oradata/orcl/tbs01.dbf)
during end read operation (-1)
3.驗證指定段
該方法需要獲得段所在表空間的ID,段所在數據檔案的ID,段的頭部ID
如下面的查詢表空間的ID為7,檔案ID為6,段的頭部ID為35
sys@ORCL> select tablespace_id,tablespace_name,header_file,header_block
2 from sys_dba_segs
3 where segment_name='TB3';
TABLESPACE_ID TABLESPACE_NAME HEADER_FILE HEADER_BLOCK
------------- --------------- ----------- ------------
7 TBS1 6 35
注意:sys用戶的段可以查詢sys_user_segs,而普通用戶的段資訊,需要查詢sys_dba_segs
[oracle@oradb orcl]$ dbv userid=scott/tiger segment_id=7.6.35
DBVERIFY: Release 10.2.0.4.0 - Production on Tue Oct 26 18:50:01 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : SEGMENT_ID = 7.6.35
DBVERIFY - Verification complete
Total Pages Examined : 8
Total Pages Processed (Data) : 5
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing (Index): 0
Total Pages Processed (Other): 2
Total Pages Processed (Seg) : 1
Total Pages Failing (Seg) : 0
Total Pages Empty : 0
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 1152518 (0.1152518)
4.驗證復制的數據檔案或驗證備份的鏡像副本
RMAN> backup as copy datafile 6 --使用RMAN備份鏡像副本
2> format='/u01/app/oracle/bk/rmbk/cp_dfile6'
3> tag='Copy_datafile6';
[oracle@oradb orcl]$ dbv file=/u01/app/oracle/bk/rmbk/cp_dfile6
DBVERIFY: Release 10.2.0.4.0 - Production on Tue Oct 26 18:59:17 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /u01/app/oracle/bk/rmbk/cp_dfile6
DBVERIFY - Verification complete
Total Pages Examined : 128
Total Pages Processed (Data) : 96
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 1
Total Pages Failing (Index): 0
Total Pages Processed (Other): 31
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 0
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 1152518 (0.1152518)
RMAN命令中的BACKUP VALIDATE DATABASE命令通常用於檢查全庫,該命令不產生任何備份集,可以通過
Validate命令來檢查是否能備份,如數據檔案是否存在,是否存在壞塊不能被備份,查詢檢視
v$database_block_corruption,此檢視將檢查過程中存在的壞塊
如使用下面的查詢
RMAN> backup validate database;
RMAN> backup validate database archivelog all;
sys@ORCL> select * from v$database_block_corruption;
no rows selected
檢視v$database_block_corruption將列出損壞的壞塊所在的檔案位置,損壞塊的起始位置,損壞快的大
小以及損壞類型如果上述檢視中發現了壞塊,則可以通過SQL查詢獲得壞塊所影響的範圍,以及確定壞塊
所影響的是索引段還是UNDO段
select owner,segment_name,segment_type from dba_extents where file_id=
between block_id and block_id+blocks-1;
(
下面使用rman 來修復受損的數據塊
RMAN> run{
2> allocate channel ch1 device type disk;
3> blockrecover datafile 6 block 37;
4> release channel ch1;}
released channel: ORA_DISK_1
allocated channel: ch1
channel ch1: sid=139 devtype=DISK
Starting blockrecover at 26-OCT-10
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished blockrecover at 26-OCT-10
released channel: ch1
flasher@ORCL> alter table tb3 add constraint empno_tb3_pk
2 primary key(empno);
四、其它
1.事實上使用dbv工具可以對控制檔案進行驗證(數據庫處於OPEN狀態),參見下面的例子
[oracle10g:oracle:orcl]$ dbv file=control01.ctl
DBVERIFY: Release 10.2.0.4.0 - Production on Sun Jun 5 14:56:31 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBV-00103: Specified BLOCKSIZE (8192) differs from actual (16384) --根據提示知道blocksize的值為16384
[oracle@oradb orcl]$ dbv file=control01.ctl blocksize=16384
DBVERIFY: Release 10.2.0.4.0 - Production on Sun Jun 5 14:53:01 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = control01.ctl
DBVERIFY - Verification complete
Total Pages Examined : 404
Total Pages Processed (Data) : 0
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing (Index): 0
Total Pages Processed (Other): 40
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 364
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 775 (65535.775)
2.對聯機日誌檔案的驗證(數據庫處於OPEN狀態),不支援
[oracle10g:oracle:orcl]$ dbv file=redo01.log
DBVERIFY: Release 10.2.0.4.0 - Production on Sun Jun 5 15:01:09 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBV-00103: Specified BLOCKSIZE (8192) differs from actual (512)
[oracle10g:oracle:orcl]$ dbv file=redo01.log blocksize=512 --可以執行,但出現下面很多的提示(介質錯誤)
Page 88441 is influx - most likely media corrupt
Corrupt block relative dba: 0x00015979 (file 0, block 88441)
Fractured block found during dbv:
Data in bad block:
type: 1 format: 2 rdba: 0x00015979
last change scn: 0x8010.00000010 seq: 0x51 flg: 0x55
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xc2037800
check value in block header: 0x108
computed block checksum: 0x0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22578826/viewspace-703465/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dumpbin工具的使用
- doDBA工具的使用
- Caffeinated 6.828:使用的工具
- 高效的使用 Notepad++ 工具
- Oracle ASM AMDU工具的使用OracleASM
- Git 版本控制工具的使用Git
- AI工具的學習使用AI
- AIGC工具的使用測評AIGC
- certutil工具的使用介紹
- Linux NTP工具的基本使用Linux
- Windows XP debug工具的使用Windows
- Ecplise開發工具的使用
- 工具使用
- Android除錯工具Genymotion的使用Android除錯
- JVM調優工具Arthas的使用JVM
- chrome開發者工具的使用Chrome
- java的數學工具淺使用Java
- # 有點用的工具使用tricks
- Django(56)Mixins工具集的使用Django
- 網路診斷工具的使用
- JEB工具的介紹及使用
- yaf程式碼生成工具的使用
- dd工具使用
- snmpwalk工具使用
- 『政善治』Postman工具 — 14、NewMan工具的使用詳解Postman
- iproute2工具包的使用
- 後滲透工具Koadic的使用介
- MySQL-09.效能分析工具的使用MySql
- Nuxt Kit 實用工具的使用示例UX
- Linux下Cmake工具的使用【搬運】Linux
- 構建工具之Maven的使用(一)Maven
- vscode 工具使用方式VSCode
- docker slim工具使用Docker
- postman 工具使用TipsPostman
- win10如何使用hd tune pro工具_win10使用hd tune pro工具的教程Win10
- ftp工具,ftp工具怎麼使用,如何操作?使用教程圖解。FTP圖解
- MATLAB模糊資料工具箱的使用Matlab
- 網路效能測試工具iperf的使用
- Google guava工具類的介紹和使用GoGuava