DBVERIFY 工具的使用

beatony發表於2011-07-29
DBVERIFY 工具的使用
分類: Oracle 其它特性 46人閱讀 評論(0) 舉報

--**********************

-- DBVERIFY 工具的使用

--**********************

 

    Oracle 庫運程中由於硬體故障或操作系故障Oracle無法以Oracle格式來識別或所包含的容即現數塊損

故障,這個可以分質損壞以及邏輯損壞。下面出了檢查,以及使用DBVERIFY 工具塊檢查

 

一、塊檢查

    1.時檢查塊

        個數候,將對塊行一致性檢查檢查容包括

            的版本

            較塊cacheblock 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工具,高版本可以自動識別低版本,比如11gdbv訪問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.onlineoffline據檔案,使用下面的方法

        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

        如下面的查詢表空ID7,檔案ID6,段的ID35

        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= and

            between block_id and block_id+blocks-1;

           

            (ORA-01578出的壞的檔案塊號)

 

        下面使用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/,如需轉載,請註明出處,否則將追究法律責任。