==========坏块的定位==========
1. select count(*) from test_error_block;
2. dbv file='/oracle/oradata/erpdb/ts_test_001.dbf'
====使用SQL查询上述block ID是属于哪个对象========
SELECT owner,segment_name,segment_type,block_id
FROM dba_extents
WHERE block_id <= &block_id
AND block_id + blocks -1 > &block_id
AND file_id = &file_id;
OWNER SEGMENT_NAME SEGMENT_TYPE
------------------------------------------------------
TEST TEST_ERROR_BLOCK TABLE
========添加参数maxcorrupt后RMAN可以备份,忽略坏块==========
RMAN> run {
2> set maxcorrupt for datafile 7 to 2; ##允许ID号为7的datafile数据文件可以有2的坏的block块
3> backup tablespace ts_test;
4> }
下面是恢复坏块的几种方法:
==========1. 使用RMAN进行恢复特定block==========
==========2.使用BBED恢复坏块==========
==========3.使用EXPDP/IMPDP方式恢复坏块==========
==========4.使用rdbms_repair包进行坏块的回复==========
用rdbms_repair这个包可以跳过这个块。
跳过这个块
BEGIN
DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(SCHEMA_NAME => 'TEST',
OBJECT_NAME => 'TEST_ERROR_BLOCK',
OBJECT_TYPE => dbms_repair.table_object,
FLAGS => dbms_repair.skip_flag);
END;
/
说明一点:
Oracle 11GR2坏块自动恢复功能,前提是要有dataguard环境。
在Oracle11g里就提供了这个Automatic Repair of Corrupt Data Blocks(坏块自动恢复)功能
原理:
在配有物理备库的环境下,当主库出现坏块时自动从备库复制数据块过来恢复,前端应用可以透明访问,不再报错。同里备库发生
坏块时也可以自动恢复
要求有一个物理备库处于real-time query mode,也就是常说的active dataguard,
阅读(1000) | 评论(0) | 转发(0) |