Oracle DBVERIFY是一个可以用来查看数据库物理文件正确性的外部命令工具,由Oracle软件自带。可以在线/离线情况下对数据库进行检查,甚至可以对数据库的备份文件进行检查。并可以在数据发生错误或破坏时对数据库进行诊断,以帮助进行恢复。当然数据库可以直接使用DBMS_REPAIR来实现这个功能,但是两者还是有所区别的,所以有必要来学习一下。
 
    首先给出Oracle官方对DBVERIFY的介绍:
 
DBVERIFY: Offline Database Verification Utility
 
DBVERIFY is an external command-line utility that performs a physical data structure integrity check. It can be used on offline or online databases, as well on backup files. You use DBVERIFY primarily when you need to ensure that a backup database (or datafile) is valid before it is restored, or as a diagnostic aid when you have encountered data corruption problems.
Because DBVERIFY can be run against an offline database, integrity checks are significantly faster.
 
DBVERIFY checks are limited to cache-managed blocks (that is, data blocks). Because DBVERIFY is only for use with datafiles, it will not work against control files or redo logs.
 
 
 
    接下来讲一下DBVERIFY的用法。DBVERIFY可以有2种用法,一种是对datafile进行检查,另一种是对segment进行检查。两者都是使用“dev”命令进行,但是所用的格式和结果都有所差异,下面看一下:
 
 
一、使用DBVERIFY检查单个datafile的Disk Blocks
 
    在这个模式下面,DBVERIFY扫描某个datafile中的一个或者多个Disk Blocks,并生成一份结果。需要注意的是:如果datafile使用ASM(Automatic Storage Management)进行文件存储,则需要提供一个USERID,因为DBVERIFY需要连接到这个ASM文件。
 
    对datafile的DBVERIFY命令语法如下:
 
    dbv [ USERID=username/password ]
        FILE = filename
      | { START = block_address | END = block_address }
      | BLOCKSIZE = integer
      | LOGFILE = filename
      | FEEDBACK = integer
      | HELP  = { Y | N }
      | PARFILE = filename
   
 
    对语法做一些说明:
   
    USERID:   指定用户名/密码,在ASM存储环境下使用;
    FILE:     提供需要检测的datafile名(需要指定文件的完整路径);
    START:    指定verify开始的block地址。如果没有指定,则默认从第一个block开始;
    END:      指定verify结束的block地址。如果没有指定,则默认为最后一个block;
    BLOCKSIZE:如果你的block size不是2k,那么必须指定这个参数,否则返回DBV-00103错误;
    LOGFILE:  指定最终结果的输出文本。如果不定义,则直接在执行终端显示;
    FEEDBACK: 回馈DBVERIFY在检查过程中的信息,跟的参数n代表n页。如果n=0则表示买有;
    HELP:     提供在线帮助;
    PARFILE:  使用parameter file来存储设定的参数,然后每次直接调用执行
 
 
    下面就是一个最简单的例子来使用DBVERIFY:
 
% dbv FILE=t_db1.dbf FEEDBACK=100
DBVERIFY: Release 10.2.0.3.0 - Production on Mon Aug 17 12:21:58 2009
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

DBVERIFY - Verification starting : FILE = t_db1.dbf

 
................................................................................
 
 
DBVERIFY - Verification complete
 
Total Pages Examined         : 9216
Total Pages Processed (Data) : 2044
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 733
Total Pages Failing   (Index): 0
Total Pages Empty            : 5686
Total Pages Marked Corrupt   : 0
 
Total Pages Influx           : 0
    说明:
 
    Pages = Blocks
    Total Pages Examined = number of blocks in the file
    Total Pages Processed = number of blocks that were verified (formatted blocks)
    Total Pages Failing (Data) = number of blocks that failed the data block checking routine
    Total Pages Failing (Index) = number of blocks that failed the index block checking routine
    Total Pages Marked Corrupt = number of blocks for which the cache header is invalid, thereby making it impossible for DBVERIFY to identify the block type
    Total Pages Influx = number of blocks that are being read and written to at the same time. If the database is open when DBVERIFY is run, DBVERIFY reads blocks multiple times to get a consistent image. But because the database is open, there may be blocks that are being read and written to at the same time (INFLUX). DBVERIFY cannot get a consistent image of pages that are in flux.
 
 
二、使用DBVERIFY检查Segment
 
    在这个模式下面,可以使用DBVERIFY来检测一个表or索引的segment的可用性。指定segment的所有链表均会被检测。需要注意的是,该模式下需要提供一个SYSDBA的用户和密码,因为需要从数据库中获取的segment的信息。
 
    当使用这个模式时,针对的那个segment会被加锁。如果是一个索引的segment,则所在的父表被加锁。(IOT没有父表)
    对segment的DBVERIFY命令语法如下:
    dbverify_seg ::=
 
      dbv USERID = username/password
      | SEGMENT_ID = tsn.segfile.segblock
      | LOGFILE = filename
      | FEEDBACK = integer
      | HELP  = { Y | N }
      | PARFILE = filename 
   
 
    对语法做一些说明:
 
    USERID:    必须指定用户名和密码;
    SEGMENT_ID:需要指定segment id;
        这个ID由3部分组成,分别是Tablespace_ID、Segment_Header_File_Number、Segment_Header_Block_Number
        3者中间用'.'隔开。可以用这段SQL来直接查询得到:
        select a.ts# || '.' || b.header_file || '.' || b.header_block
          from v$tablespace a, dba_segments b
         where a.name = b.tablespace_name
           and b.segment_name = 'segment_name';
    LOGFILE:    指定最终结果的输出文本。如果不定义,则直接在执行终端显示;
    FEEDBACK:  回馈DBVERIFY在检查过程中的信息,跟的参数n代表n页。如果n=0则表示买有;
    HELP:      提供在线帮助;
    PARFILE:   使用parameter file来存储设定的参数,然后每次直接调用执行

    举个例子:
 
% dbv USERID=hr/hr SEGMENT_ID=1.2.67
DBVERIFY - Verification starting : SEGMENT_ID = 1.2.67
 
DBVERIFY - Verification complete
 
Total Pages Examined         : 8
Total Pages Processed (Data) : 0
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 1
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 2
Total Pages Processed (Seg)  : 1
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 4
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0
Highest block SCN            : 7358 (0.7358)
    信息含义与上同。

Oracle DBVERIFY 工具介绍相关推荐

  1. Oracle客户端工具介绍

    大家好,欢迎观看Oracle教程(七.Oracle客户端工具介绍) 一.Oracle自带SQL PLUS工具 首先打开win10系统菜单栏,找到Oracle-OraDb11g_home1 打开SQL ...

  2. 六、Oracle客户端工具介绍

    Oracle客户端工具介绍 1. Oracle 自带客户端工具 SQL Plus 2. Oracle 第三方工具 PL/SQL Developer 2.1 安装 PL/SQL Developer 1. ...

  3. Oracle bbed工具介绍

    1. 工具介绍 Oracle bbed 工具 , 名称是 Block Browser and EDitor 的首字母缩写, Oracle 10G 及以前版本它随数据库软件一起提供.仅供 oracle ...

  4. Oracle BBED 工具介绍

    一.BBED 的安装 BBED在windows 8i中在$ORACLE_HOME/bin下可以找到,9i中似乎未随软件发布,故在windows没有这个工具, 在linux上面有,需要编译. 在9i/1 ...

  5. Oracle Hyperion Financial Management工具介绍及脚本使用

    oracle HFM工具介绍及脚本使用 一.oracle HFM工具介绍 Oracle Hyperion Financial Management提供了财务整合和报告功能,使您能够快速整合和报告财务结 ...

  6. Oracle BBED 工具 说明

    http://blog.csdn.net/tianlesoftware/article/details/5006580 David Dai -- Focus on Oracle The importa ...

  7. [转载]常用CASE工具介绍

    [转载]常用CASE工具介绍 转载自:http://www.cnblogs.com/powerlc/archive/2006/01/12/315959.html   一,概述 今天, 代码变得日益简单 ...

  8. Andriod 测试 day1​andriod 工具介绍

    前言: 关于Android的定义及其他不想说想了解的自行百度吧.写下博文主要是为了回顾一天的学习并记录学习过程中的问题.有不对的地方希望勿喷..毕竟我也是一只正在学习中的菜鸟还请大神们多多指教... ...

  9. 基于bboss开发平台eclipse开发工程生成工具介绍

    为什么80%的码农都做不了架构师?>>>    基于bboss开发平台eclipse开发工程生成工具介绍 一.工具简介   bboss开发平台发布出两个资源包:  war部署包  数 ...

最新文章

  1. IT行业经典面试题,121套面试题
  2. cmd输入pip报错_使用Pip管理Python的包
  3. Cognos访问权限之让拒绝更友善
  4. 如何保证消息不被重复消费【[如何保证消息消费的幂等性】?
  5. access阿里云 mysql_access数据库如何使用
  6. Shallow Size、Retained Size、Heap Size 和 Allocated
  7. linux pcre路径,PCRE和Nginx安装问题
  8. Window安装RabbitMQ并设置为开机启动
  9. MySQL锁篇-⾏级锁
  10. utools:比everything更好用的集成工具
  11. 如何查看Dell笔记本型号?
  12. GNSS抗干扰和GNSS抗欺骗
  13. ffmpeg使用,读取码率和写入码率的注意事项
  14. 路由交换技术与路由交换技术基础知识
  15. 实验二、Activity界面基本实验
  16. 3GQQ幻想西游升级最快的方法(集)
  17. UE4 直接打包图片到目录中,不打包成pak
  18. i5 11300H和r5 5500u的差距大不大
  19. 西门子精智和精简面板区别_西门子触摸屏操作面板区别
  20. determined(determined是什么意思英语)

热门文章

  1. ubuntu下硬盘相关
  2. svn查看登录过的账号密码
  3. For each...in / For...in / For...of 的解释与例子
  4. CentOS7中NAT网卡设置静态IP
  5. Echarts作图之柏拉图
  6. Hadoop下如何执行脚本
  7. 关于医学院网络中心成立工作室的设想
  8. FPGA开发经验谈-FPGA 设计的四种常用思想与技巧(二)
  9. Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031)
  10. qt 手动设置控件的位置