zoukankan      html  css  js  c++  java
  • Oracle工具——DBVERIFY

    DBVERIFY工具用来验证数据文件的物理结构。

     

     

    DBVERIFY工具的主要目的是为了检查数据文件的物理结构,包括数据文件是否损坏,是否存在逻辑坏块,以及数据文件中包含何种类型的数据。

    DBVERIFY工具可以验证ONLINEOFFLINE的数据文件。不管数据库是否打开,都可以访问数据文件。一个最简单的访问数据文件的例子:

    E:oracle>dbv file=e:oracleoradataytk92users01.dbf blocksize=8192

    DBVERIFY: Release 9.2.0.4.0 - Production on 星期四 3 26 21:17:44 2009

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    DBVERIFY - 验证正在开始 : FILE = e:oracleoradataytk92users01.dbf


    DBVERIFY -
    验证完成

    检查的页总数 8160处理的页总数(数据):6867失败的页总数(数据):0处理的页总数(索引):743失败的页总数(索引):0处理的页总数(其它):270处理的总页数 () : 0失败的总页数 () : 0空的页总数 280标记为损坏的总页数:0汇入的页总数 0

    可以看到,dbverify给出的结果包括数据文件包括的BLOCK数量,其中包括多少个数据块,多少个索引块,多少空块,多少个已经被标志为坏块的块,多少个坏块。

    对于DBVERIFY工具,高版本可以自动识别低版本数据库,比如11g的dbv访问9i的数据库:

    DBVERIFY: Release 11.1.0.6.0 - Production on 星期四 3 26 21:34:28 2009

    Copyright (c) 1982, 2007, Oracle. All rights reserved.

    DBVERIFY - 开始验证: FILE = e:oracleoradataytk92users01.dbf


    DBVERIFY -
    验证完成

    检查的页总数: 8160处理的页总数 (数据): 7192失败的页总数 (数据): 0处理的页总数 (索引): 415失败的页总数 (索引): 0处理的页总数 (其它): 273处理的总页数 () : 0失败的总页数 () : 0空的页总数: 280标记为损坏的总页数: 0流入的页总数: 0加密的总页数 : 0最高块 SCN : 1963808326 (1.1963808326)

    但是低版本的dbv访问高版本会报错:

    E:oracle>dbv file=e:oracleoradataytk102yangtk01.dbf blocksize=8192

    DBVERIFY: Release 9.2.0.4.0 - Production on 星期四 3 26 21:42:06 2009

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    DBVERIFY - 验证正在开始 : FILE = e:oracleoradataytk102yangtk01.dbf汇入的页1 - 可能是介质损坏
    ***
    Corrupt block relative dba: 0x00000001 (file 0, block 1)
    Fractured block found during dbv:
    Data in bad block -
    type: 0 format: 0 rdba: 0x00000000
    last change scn: 0x0000.00000000 seq: 0x0 flg: 0x00
    consistency value in tail: 0x00000010
    check value in block header: 0x0, block checksum disabled
    spare1: 0x0, spare2: 0x0, spare3: 0x0
    ***

    标记为损坏的页2
    ***
    Corrupt block relative dba: 0x00000002 (file 0, block 2)
    Bad header found during dbv:
    Data in bad block -
    type: 2 format: 0 rdba: 0x00000000
    last change scn: 0x0000.00000000 seq: 0x0 flg: 0x00
    consistency value in tail: 0x00000000
    check value in block header: 0x0, block checksum disabled
    spare1: 0x0, spare2: 0x0, spare3: 0x0
    ***

    .
    .
    .
    汇入的页16384 - 可能是介质损坏
    ***
    Corrupt block relative dba: 0x00004000 (file 0, block 16384)
    Fractured block found during dbv:
    Data in bad block -
    type: 0 format: 0 rdba: 0x00000000
    last change scn: 0x0000.00000000 seq: 0x0 flg: 0x00
    consistency value in tail: 0x00000000
    check value in block header: 0x0, block checksum disabled
    spare1: 0x0, spare2: 0x0, spare3: 0x0
    ***

    DBVERIFY - 验证完成

    检查的页总数 16384处理的页总数(数据):0失败的页总数(数据):0处理的页总数(索引):0失败的页总数(索引):0处理的页总数(其它):0处理的总页数 () : 0失败的总页数 () : 0空的页总数 0标记为损坏的总页数:16384汇入的页总数 10744

    DBV工具还有一种在数据库打开的情况下使用的,验证指定段的用法:

    SQL> CONN /@YTK92 AS SYSDBA已连接。
    SQL> SELECT TABLESPACE_ID, HEADER_FILE, HEADER_BLOCK
    2 FROM SYS_DBA_SEGS
    3 WHERE SEGMENT_NAME = 'T_T';

    TABLESPACE_ID HEADER_FILE HEADER_BLOCK
    ------------- ----------- ------------
    9 9 1387

    这种方法需要查询表空间ID、段头所在的数据文件ID和以及段头所在表空间ID,要获取这个信息可以通过SYS用户查询SYS_DBA_SEGS视图。需要注意的是,Oracle文档给出的SYS_USER_SEGS视图只能查询SYS用户的段,要查询普通用户的段信息,需要访问SYS_DBA_SEGS

    E:oracle>dbv userid=yangtk/yangtk segment_id=9.9.1387

    DBVERIFY: Release 9.2.0.4.0 - Production on 星期四 3 26 21:56:19 2009

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    DBVERIFY - 正在启动验证: SEGMENT_ID = 9.9.1387


    DBVERIFY -
    验证完成

    检查的页总数 512处理的页总数(数据):470失败的页总数(数据):0处理的页总数(索引):26失败的页总数(索引):0处理的页总数(其它):15处理的总页数 () : 1失败的总页数 () : 0空的页总数 0标记为损坏的总页数:0汇入的页总数 0

    这种方式要求数据库处于打开的状态。

    由于dbv可以在实例关闭情况下验证数据文件,因此dbv也可以验证数据文件的拷贝。

    这个拷贝指的是通过RMANCOPY命令或者操作系统命令cp拷贝的数据文件,而不是RMAN生成的备份集格式。

    E:oracle>rman target /

    恢复管理器: 版本9.2.0.4.0 - Production

    Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

    连接到目标数据库: YTK92 (DBID=1285986946)

    RMAN> run
    2> {
    3> copy datafile 'E:ORACLEORADATAYTK92USERS01.DBF' to 'e:userbak.dbf';
    4> }

    启动 copy 26-3 -09分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=17 devtype=DISK通道 ORA_DISK_1: 已复制数据文件 9输出文件名=E:USERBAK.DBF recid=1 stamp=682554612完成 copy 26-3 -09

    RMAN> exit

    恢复管理器完成。

    E:oracle>dbv file=e:userbak.dbf blocksize=8192

    DBVERIFY: Release 9.2.0.4.0 - Production on 星期四 3 26 22:33:13 2009

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    DBVERIFY - 验证正在开始 : FILE = e:userbak.dbf


    DBVERIFY -
    验证完成

    检查的页总数 8160处理的页总数(数据):7192失败的页总数(数据):0处理的页总数(索引):415失败的页总数(索引):0处理的页总数(其它):273处理的总页数 () : 0失败的总页数 () : 0空的页总数 280标记为损坏的总页数:0汇入的页总数 0

  • 相关阅读:
    软件需求,概要设计,详细设计(文档)
    需求文档和设计文档的区别
    Sqlyog和Navicat——mysql数据库图像化管理工具,
    Sqlyog 和Navicat
    端口占用问题
    List集合
    JSON——(JavaScript Object Notation, JS 对象简谱) 数据交换格式。JSON是一个序列化的对象或数组。
    Excel图表导出高清矢量位图片并裁剪的方法
    使用福昕PDF编辑器裁剪PDF页面
    Latex模板默认两栏的分栏的情况下怎么让图片和表格占一栏显示
  • 原文地址:https://www.cnblogs.com/sopost/p/2190042.html
Copyright © 2011-2022 走看看