011.笔记:检测与恢复数据库的讹误

1.块讹误及其原因
块讹误具有下列两种方式:介质讹误或逻辑讹误(也称为软件讹误)
介质讹误是内容没有任何意义的数据块。
逻辑讹误是ORACLE格式化正确,但是其内部内容不一致的数据块

2.与讹误相关的参数
DB_BLOCK_CHECKSUM:默认值TRUE
DB_BLOCK_CHECKING:默认值FALSE
为论怎样设置上述参数,始终都会为SYSTEM表空间启用校验和计算以及数据块检查

3.检测块讹误
3.1
ORA-01578说明存在讹误数据块。
告警日志中会有详细信息。
Corrupt Block Found:
RFN:文件号
BLK:块号
TSNAME:表空间名
TSN:表空间编号
OBJN:对象编号

DBA_OBJECTS
DBA_EXTENTS


3.2 DBVERIFY 实用程序
dbv file=/.../dam.dbf [start=... end=..]
dbv可以检测活动的或者备份的数据文件

3.3: ANALYZE 命令
analyze table table_name validate structure;
analyze index index_name validate structure;
analyze table table_name validate structure cascade;


3.4:DBMS_REPAIR程序包
--在SYS模式创建REPAIR_CORRUT_TAB表,这个表将存储检查指定表时遇到的所有问题的详细信息。

dbms_repair.admin_tables(table_name=>'REPAIR_CORRUPT_TAB',TABLE_TYPE=>dbms_repair.repair_table,action=>dbms_repair.create_action);

set serveroutput on;

--check_object比较有用
declare
num_corrupt int;
begin
num_corrupt :=0;
dbms_repair.check_object(schema_name => 'SYSTEM',object_name=>'CORRUPT_TAB',repair_table_name => 'REPAIR_CORRUPT_TAB',corrupt_count => num_corrupt);
dbms_output.put_line(num_corrupt);
end;
/

--FIX_CORRUPT_BLOCKS、SKIP_CORRUPT_BLOCKS将跳过受损的数据块,所以要谨慎使用
--FIX_CORRUPT_BLOCKS将受损数据块标记为讹误的
--SKIP_CORRUPT_BLOCKS通知ORACLE忽略所有被标记为讹误的数据块

declare
num_fix int;
begin
num_fix:=0;
dbms_repair.fix_corrupt_blocks(schema_name => 'SYSTEM',object_name => 'CORRUPT_TAB',object_type => DBMS_REPAIR.TABLE_OBJECT,repair_table_name => 'REPAIR_CORRUPT_TAB',fix_count => NUM_FIX);
end;
/

--测试发现,使用skip_corrupt_blocks一次后。再用BBED产生新的CORRUPT BLOCK,flush buffer_cache之后,表是可以被访问的,但CORRUPT的块不会被检索出来。
--小结:谨慎使用dbms_repair.fix_corrupt_blocks、dbms_repair.skip_corrupt_blocks
exec dbms_repair.skip_corrupt_blocks('SYSTEM','CORRUPT_TAB');


--其他
select * from user_extents t where t.segment_name='CORRUPT_TAB';

4.使用RMAN恢复讹误块
4.1 讹误块的检测
RMAN备份可以在不停机的情况下进行块级的还原与恢复,块介质恢复只适用于数据文件块(含LOB段与UNDO段)。
RMAN在执行备份操作时会检测讹误的数据块,默认情况,RMAN会在遇到讹误块时立即终止备份。
默认情况下,RMAN检查介质讹误(物理讹误)。

--不检查物理讹误
rman>backup nochecksum datafile 8;

--同时检查逻辑讹误与物理讹误
rman>backup check logical datafile 8;

4.2 块介质恢复(Block Media Recovery :BMR)
RMAN>blockrecover datafile 7 block 5;
RMAN>blockrecover datafile 7 block 5,6,7 datafile 9 block 21,25;
RMAN>blockrecover datafile 7 block 5 from backupset 1093;
RMAN>blockrecover datafile 7 block 5 from tag monthly_whole;

5.处理讹误
第一步:标识确实发生的讹误
第二步:标识这些数据块所属的对象

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7901922/viewspace-1059545/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7901922/viewspace-1059545/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值