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

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


五、 快捷参考

性能请参

    ​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 --> ROLLUPCUBE算符实现数汇总

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

    表段、索引段上的LOGGINGNOLOGGING​

    ​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​