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

        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 硬解析与软解析

    共享池的调整与优化(Shared pool Tuning)

    Buffer cache 的调整与优化(一)

    Oracle 表缓存(caching table)的使用

 

有关ORACLE体系结构请参考

    Oracle 表空间与数据文件

    Oracle 密码文件

    Oracle 参数文件

    Oracle 联机重做日志文件(ONLINE LOG FILE)

    Oracle 控制文件(CONTROLFILE)

    Oracle 归档日志

    Oracle 回滚(ROLLBACK)和撤销(UNDO)

    Oracle 数据库实例启动关闭过程

    Oracle 10g SGA 的自动化管理

    Oracle 实例和Oracle数据库(Oracle体系结构)

 

有关闪回特性请参考

    Oracle 闪回特性(FLASHBACK DATABASE)

    Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)

    Oracle 闪回特性(Flashback Query、Flashback Table)

    Oracle 闪回特性(Flashback Version、Flashback Transaction)

 

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

    Oracle 冷备份

    Oracle 热备份

    Oracle 备份恢复概念

    Oracle 实例恢复

    Oracle 基于用户管理恢复的处理(详细描述了介质恢复及其处理)

    SYSTEM 表空间管理及备份恢复

    SYSAUX表空间管理及恢复

 

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

    RMAN 概述及其体系结构

    RMAN 配置、监控与管理

    RMAN 备份详解

    RMAN 还原与恢复

    RMAN catalog 的创建和使用

    基于catalog 创建RMAN存储脚本

基于catalog 的RMAN 备份与恢复

使用RMAN迁移文件系统数据库到ASM

    RMAN 备份路径困惑(使用plus archivelog时)

 

有关ORACLE故障请参考

    ORA-32004 的错误处理

    ORA-01658 错误

    CRS-0215 错误处理

    ORA-00119,ORA-00132 错误处理

    又一例SPFILE设置错误导致数据库无法启动

    对参数FAST_START_MTTR_TARGET = 0 的误解及设定

    SPFILE 错误导致数据库无法启动(ORA-01565)

 

有关ASM请参考

    创建ASM实例及ASM数据库

    ASM 磁盘、目录的管理

    使用 ASMCMD 工具管理ASM目录及文件

 

有关SQL/PLSQL请参考

    SQLPlus 常用命令

    替代变量与SQL*Plus环境设置

    使用Uniread实现SQLplus翻页功能

    SQL 基础-->SELECT 查询

    SQL 基础--> NEW_VALUE 的使用

    SQL 基础--> 集合运算(UNION 与UNION ALL)

    SQL 基础--> 常用函数

    SQL 基础--> 视图(CREATE VIEW)

    SQL 基础--> 创建和管理表

    SQL 基础--> 多表查询

    SQL 基础--> 过滤和排序

    SQL 基础--> 子查询

    SQL 基础--> 分组与分组函数

    SQL 基础--> 层次化查询(START BY ... CONNECT BY PRIOR)

    SQL 基础--> ROLLUP与CUBE运算符实现数据汇总

    PL/SQL --> 游标

    PL/SQL --> 异常处理(Exception)

    PL/SQL --> 语言基础

    PL/SQL --> 流程控制

    PL/SQL --> PL/SQL记录

    PL/SQL --> 包的创建与管理

    PL/SQL --> 隐式游标(SQL%FOUND)

    PL/SQL --> 包重载、初始化

    PL/SQL --> DBMS_DDL包的使用

    PL/SQL --> DML 触发器

    PL/SQL --> INSTEAD OF 触发器

    PL/SQL --> 存储过程

    PL/SQL --> 函数

    PL/SQL --> 动态SQL

    PL/SQL --> 动态SQL的常见错误

 

有关ORACLE其它特性

    Oracle 常用目录结构(10g)

    使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例

    日志记录模式(LOGGING 、FORCE LOGGING 、NOLOGGING)

    表段、索引段上的LOGGING与NOLOGGING

    Oralce OMF 功能详解

    Oracle 用户、对象权限、系统权限  

    Oracle 角色、配置文件

    Oracle 分区表

    Oracle 外部表

    使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)

    簇表及簇表管理(Index clustered tables)

    数据泵 EXPDP 导出工具的使用

    数据泵 IMPDP 导入工具的使用

    导入导出 Oracle 分区表数据

    SQL*Loader使用方法

    启用用户进程跟踪

    配置非默认端口的动态服务注册

    配置ORACLE 客户端连接到数据库

    system sys,sysoper sysdba 的区别

    ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME

    Oracle 补丁全集 (Oracle 9i 10g 11g Path)

    Oracle 10.2.0.1 升级到 10.2.0.4

    Oracle 彻底 kill session


原文链接:  http://blog.csdn.net/robinson_0612/article/details/6530890

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值