Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650510
  • 博文数量: 168
  • 博客积分: 2928
  • 博客等级: 中校
  • 技术积分: 1904
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-04 09:56
文章分类

全部博文(168)

文章存档

2010年(168)

我的朋友

分类: Oracle

2010-10-30 20:56:26

==========坏块的定位==========
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,
 
 
阅读(952) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~