怎么使用DBV

60次阅读
没有评论

共计 2926 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章主要介绍“怎么使用 DBV”,在日常操作中,相信很多人在怎么使用 DBV 问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用 DBV”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

一、简介

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

二、原理

DBV 检查以确保 Oracle 数据文件:

数据文件有一个有效的块头

每个数据块在文件中有一个特殊的“wrapper”标识块,这“wrapper”是为了校验正确性

数据 (表) 和索引块是内部一致的

从 8.1.6 起:多块类型的内部一致性(如回滚 segment blocks)

三、DBV 限制

DBV 只能检测可以被 ANALYZE TABLE .. VALIDATE STRUCTURE CASCADE 命令检测的块,像索引、表错误等

这个工具只能用于对数据文件。它不能用来验证归档文件或控制文件。

你可以使用 DBV 验证自动储存管理(ASM)文件。

然而,数据库必须打开,选择用户名已使用

例如:dbv file=+DG1/ORCL/datafile/system01.dbf userid=system/sys

DBV 检查用户名 / 密码为 ASM 文件管理,当数据库不是 open 状态则不可能。

在大多数版本的 UNIX,DBV 基于文件扩展名。DBV 要求 datafile 必须有扩展名

如果裸设备没有扩展名,可以创建一个 link,然后在进行 dbv 检查。
例如:ln -s /dev/rdsk/mydevice /tmp/mydevice.dbf

对于原始设备,你应该使用“END”参数,以避免运行结束的文件空间的结束。
例如:dbv FILE=/dev/rdsk/r1.dbf END= last_block_number

用 file#=5 找到 END 值

select BYTES/8192 from v$datafile where FILE#=5;
BYTES/8192
----------
5120

dbv file=/dev/rdsk/r1.dbf blocksize=8192 END=5120

DBV 可能无法扫描数据文件大于 2GB 同时报告”dbv-100”。如果你得到了 dbv-100 错误首先请检查文件大小。

DBV 从 8.1.6 起如果从 Oracle 7 迁移,基于回滚段块会报虚假错误。见错误:1359160 和注意事项:118008.1。

DBV only checks a block in isolation -it does not know if the block is part of an existing object or not.

DBV 只检查这个块,它不知道这个块是否是一个已经存在的对象的一部分。

DBV 在 SCO Unix 上是不可用的,另见 Bug:814249

DBV 是向下兼容的,不可用于高版本

四、DBV 示例

验证 ASM 上的文件

查询数据文件路径
select file_name from dba_data_Files;

dbv check ASM 上的文件,注意添加 userid 参数
[oracle@rac2 ~]$ dbv file= +DATA/anqing/datafile/undotbs02.dbf userid=sys/oracle

验证普通 datafile

实例没有启动的情况下进行 datafile 验证
这种情况下,db 没有启动,要进入数据文件的存放目录后在运行该命令,不然会报找不到数据文件。
dbv file=undotbs01.dbf

DB open 状态,验证指定段

可以通过 sys_dba_segs 表获取 tablespace_id,header_file, header_block 三个字段,他们分别对应 tsn,relfile,

block.
select tablespace_id,header_file, header_block from sys_dba_segs where segment_name =  TA 
TABLESPACE_ID HEADER_FILE HEADER_BLOCK
------------- ----------- ------------
 0 1 71513

语法:dbv USERID=username/password SEGMENT_ID=tsn.relfile.block

[oracle@rac2 ~]$ dbv segment_id=0.1.71513 userid=system/oracle

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

验证数据拷贝
由于 dbv 可以在实例关闭情况下验证数据文件,因此 dbv 也可以验证数据文件的拷贝。这个拷贝指的是通过 RMAN 的 COPY 命令或者操作系统命令 cp 拷贝的数据文件,而不是 RMAN 生成的备份集格式。
通过比较 2 个 dbv 的结果来比较 datafile 的 copy

[oracle@node1 ~]$ dbv file= /oradata/orcl/test01.dbf  userid=sys/oracle
DBVERIFY: Release 11.2.0.4.0 - Production on Wed Aug 17 15:15:52 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting(开始验证) : FILE = /oradata/orcl/test01.dbf
DBVERIFY - Verification complete(验证完成) 
Total Pages Examined(检查的页总数) : 655360
Total Pages Processed (Data)  处理的页总数  (数据): 261936
Total Pages Failing (Data)  失败的页总数  (数据): 0
Total Pages Processed (Index)处理的页总数  (索引): 0
Total Pages Failing (Index)失败的页总数  (索引): 0
Total Pages Processed (Other)处理的页总数  (其它): 876
Total Pages Processed (Seg)处理的总页数  (段) : 3
Total Pages Failing (Seg)失败的总页数  (段) : 0
Total Pages Empty 空的页总数  : 392545
Total Pages Marked Corrupt 标记为损坏的总页数  : 0
Total Pages Influx 流入的页总数  : 0
Total Pages Encrypted 加密的总页数  : 0
Highest block SCN 最高块  SCN : 117357549 (0.117357549)

到此,关于“怎么使用 DBV”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-26发表,共计2926字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)