物理一致性和逻辑一致性检查 (DBV,rman)

物理一致性和逻辑一致性检查

DBV工具
特点:只读,不会做修改
          可以在线检查,不需要关闭数据库。
          不能检查控制文件和日志文件,而 只能检查数据文件
          可以检查ASM文件,但数据库必须open,需要通过USERID指定用户
          比如dbv file=+DG1/ORCL/datafile/system01.dbf userid=system/sys

在许多UNIX平台下,DBV要求数据文件有扩展名。如果没有(裸设备)可以通过建立链接,然后对链接文件进行操作,比如:ln -s /dev/rdsk/mydevice /tmp/mydevice.dbf

某些平台下,DBV工具不能检查超过2GB的文件,如果碰到DBV-100错误,请先检查文件大小,Metalink Bug 710888 对这个问题有描述。

可直接输入dbv 获取帮助
BLOCKSIZE,要与检查的文件的blocksize一致。缺省8192
SEGMENT_ID,可以指定要检查的段<tsn.segfile,segblock>
例子1、检查users01.dbf
[oracle@Rhel5 ~]$ dbv file=/u01/oradata/10G101/users01.dbf blocksize=8192
                            file要输入绝对路径,否则可能会报dbv-600错误
DBVERIFY: Release 10.2.0.5.0 - Production on Mon Aug 5 23:34:28 2013

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

DBVERIFY - Verification starting : FILE = /u01/oradata/10G101/system01.dbf
Page 28618 is marked corrupt
Corrupt block relative dba: 0x00406fca (file 1, block 28618)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x00406fca
last change scn: 0x0000.00029ab9 seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x9ab90601
check value in block header: 0xc694
computed block checksum: 0x7400


DBVERIFY - Verification complete

Total Pages Examined         : 57600
Total Pages Processed (Data) : 38088
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 7049
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 1867
Total Pages Processed (Seg)  : 1
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 10595
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Highest block SCN            : 676674 (0.676674)


例子2、检查segment TEST
查看对象的tsn、segfile、segblock
SQL> select t.ts#,s.header_file,s.header_block
 from v$tablespace t,dba_segments s
 where s.segment_name='TEST
 and t.name=s.tablespace_name;

   TS#     HEADER_FILE   HEADER_BLOCK
----------    -----------           ------------
     0            1                      56377

[oracle@Rhel5 10G101]$ dbv userid=system/password segment_id=0.1.56377
DBVERIFY: Release 10.2.0.5.0 - Production on Mon Aug 5 23:03:54 2013

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

DBVERIFY - Verification starting : SEGMENT_ID = 0.1.56377


DBVERIFY - Verification complete

Total Pages Examined         : 2
Total Pages Processed (Data) : 1
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 0
Total Pages Processed (Seg)  : 1s
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 0
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0 
Highest block SCN            : 666485 (0.666485)


也可以使用RMAN工具来确认位置
RMAN> backup check logical validate datafile 1;
结果查询:
SQL> select file#,block#,blocks from v$database_block_corruption;

     FILE#     BLOCK#       BLOCKS
---------- ----------            ----------
     1       28618                 1



以下是一个 Oracle 数据损坏恢复的案例,包括具体解决步骤具体命令: 1. 案例背景 某企业的 Oracle 数据库中出现了数据坏块的情况,导致数据库无法正常启动运行。经过初步排查,发现是数据库中的数据文件出现了坏块,需要进行修复。 2. 解决过程 步骤一:备份数据 在进行任何操作之前,首先需要备份数据库中的数据,以便在操作失误或出现意外情况时进行恢复。同时可以将备份数据恢复到测试环境中,以便进行后续的测试验证。 步骤二:确定损坏的数据文件坏块位置 确认数据库中出现了坏块的数据文件坏块位置。可以使用 DBVERIFY 工具进行检查,例如: ``` dbv file=/u01/app/oracle/oradata/ORCL/users01.dbf blocksize=8192 ``` 该命令将检查 users01.dbf 文件中的所有块是否正常。 步骤三:创建修复表空间 创建一个临时的修复表空间,用于存放修复后的数据。例如: ``` CREATE TABLESPACE repair_ts DATAFILE '/u01/app/oracle/oradata/ORCL/repair01.dbf' SIZE 100M; ``` 步骤四:将损坏块标记为已修复状态 将损坏的块标记为已修复状态,以便在下一步中进行修复。例如: ``` ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/users01.dbf' OFFLINE IMMEDIATE; ``` ``` RMAN> BLOCKRECOVER DATAFILE '/u01/app/oracle/oradata/ORCL/users01.dbf' BLOCK 100; ``` 步骤五:将修复后的数据导入修复表空间 将修复后的数据导入到修复表空间中。例如: ``` ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/users01.dbf' ONLINE; ``` ``` ALTER TABLESPACE users MOVE TABLESPACE repair_ts; ``` 步骤六:检查数据库完整性 重新启动数据库后,需要检查数据库的完整性一致性。可以使用 Oracle 提供的工具进行检查,例如使用 DBVERIFY 工具检查数据文件是否损坏,使用 ANALYZE 命令检查数据库的逻辑一致性等。 步骤七:恢复数据库服务 在确认数据库的完整性一致性后,可以重新启动数据库服务,进行正常的业务操作。 3. 结论 通过以上的步骤,成功恢复了该企业的 Oracle 数据库服务。该案例也提醒用户需要采取备份恢复措施,加强对于数据库的监控维护,提高数据库的可用性安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值