博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DBVERIFY 工具的使用
阅读量:7024 次
发布时间:2019-06-28

本文共 7940 字,大约阅读时间需要 26 分钟。

  hot3.png

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

-- 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               ()

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

 

        [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) :          --已处理数据页面的失败数

        Total Pages Processed (Index): 1         --已处理的索引页面数

        Total Pages Failing   (Index):          --已处理索引页面失败数

        Total Pages Processed (Other): 31        --已处理的其它页面数

        Total Pages Processed (Seg)  :         

        Total Pages Failing   (Seg)  :

        Total Pages Empty            :

        Total Pages Marked Corrupt   :

        Total Pages Influx           :

        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) :

        Total Pages Processed (Index):

        Total Pages Failing   (Index):

        Total Pages Processed (Other): 2

        Total Pages Processed (Seg)  : 1

        Total Pages Failing   (Seg)  :

        Total Pages Empty            :

        Total Pages Marked Corrupt   :

        Total Pages Influx           :

        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) :

        Total Pages Processed (Index): 1

        Total Pages Failing   (Index):

        Total Pages Processed (Other): 31

        Total Pages Processed (Seg)  :

        Total Pages Failing   (Seg)  :

        Total Pages Empty            :

        Total Pages Marked Corrupt   :

        Total Pages Influx           :

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

            between block_id and block_id+blocks-1;

           

            (<F>和<B>分别是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) :

        Total Pages Failing   (Data) :

        Total Pages Processed (Index):

        Total Pages Failing   (Index):

        Total Pages Processed (Other): 40

        Total Pages Processed (Seg)  :

        Total Pages Failing   (Seg)  :

        Total Pages Empty            : 364

        Total Pages Marked Corrupt   :

        Total Pages Influx           :

        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: x00015979 (file , block 88441)

        Fractured block found during dbv:

        Data in bad block:

         type: 1 format: 2 rdba: x00015979

         last change scn: x8010.00000010 seq: x51 flg: x55

         spare1: x0 spare2: x0 spare3: x0

         consistency value in tail: xc2037800

         check value in block header: x108

         computed block checksum: x0

   

五、 快捷参考

有关性能优化请参考

    

    

    

    

 

有关ORACLE体系结构请参考

    

    

    

    

    

    

    

    

    

    

 

有关闪回特性请参考

    

    

    

    

 

有关基于用户管理的备份和备份恢复的概念请参考

    

    

    

    

    (详细描述了介质恢复及其处理)

    

    

 

有关RMAN的备份恢复与管理请参考

    

    

    

    

    

    

    

 

有关ORACLE故障请参考

    

    

    

    

    

    

    

 

有关ASM请参考

    

    

    

 

有关SQL/PLSQL请参考

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

 

有关ORACLE其它特性

    

    

    

    

    

     

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

原文链接: 

转载于:https://my.oschina.net/dtec/blog/47480

你可能感兴趣的文章
java 弹出窗口在屏幕中心_屏幕上的弹出式窗口中央?
查看>>
php 类中 全局变量,类名称中的PHP命名空间和全局变量问题
查看>>
php 封装一个sdk,PHP sdk实现在线打包代码示例
查看>>
php计算多选题的分数,多选题评分算法 求指导
查看>>
用php写post爬虫,PHP能写爬虫吗?(PHP实现爬虫技术示例)
查看>>
java setcontenprovider,7.6.2 ContentProvider的 openTypedAssetFile函数分析
查看>>
h5php大转盘抽奖,html5转盘抽奖 完整代码下载(网页版)
查看>>
java对象的重用,Java学习4——类的重用
查看>>
mysql8集群的优点,mysql8
查看>>
hbase排序 java,Java HBaseConfiguration.merge方法代码示例
查看>>
php 双重检查,java_Java中的双重检查(Double-Check)详解,在 Effecitve Java 一书的第 48 条 - phpStudy...
查看>>
java log4jppt,Java EE企业级应用开发第10章 Mybatis与Spring的整合.ppt
查看>>
matlab gui 暂停按钮,MATLAB GUI drawow渲染按钮’向下推’而不是’禁用’
查看>>
php sqlite3菜鸟,SQLite Autoincrement
查看>>
php fatalerrorexception,laravel5异常错误-FatalErrorException in Handler.php line 38
查看>>
oracle12c监控数据,Oracle 12C R2-新特性-监控PDB资源使用情况
查看>>
oracle 监听 sid_name,配置静态监听sid_name大小写造成无法登录
查看>>
sqlyog怎么导入oracle数据库,《如何文件复制到excel表格数据库中》 如何将EXCEL表导入ORACLE数据库中?...
查看>>
oracle12 se1和se2,小屏党的最终执念,12Mini和SE2,到底谁更值得入手?
查看>>
include top.php,Php 安全错误 Top 7
查看>>