处理Oracle数据库中的坏块
四:坏块的处理方法
1. 先收集相应的关于坏快的信息,从AlertSID.log文件或者从trace文件中查找,找到例如以下的一些信息:
Ora-1578 file# (RFN) block#
Ora-1110 file# (AFN) block#
Ora-600 file# (AFN) block#
其中RFN表示的是relative_fno
AFN表示的是file_id
Select file_name,tablespace_name,file_id “AFN”,relative_fno “RFN”
From dba_data_files;
Select file_name,tablespace_name,file_id, relative_fno“RFN”
From dba_temp_files;
2. 确定存在坏块的对象是什么:
SELECT tablespace_name, segment_type, owner, segment_name, partition_name FROM
dba_extents WHERE file_id = <AFN> and <BL> between block_id AND block_id + blocks – 1;
通过上面这个查询语句就可以查出当前存在坏块的对象是什么,是什么类型的对象。需要注意的是如果是temp文件中出现坏块,是没有记录返回的。
3. 根据2中查询出来的对象类型,确定相应的处理方法
出现坏块的常见对象有:
Ø Sys用户下的对象
Ø 回滚段
Ø 临时段
Ø 索引或者分区索引
Ø 表
常用的处理方法有:
Ø 恢复数据文件
Ø 只恢复坏的block(9i以上版本可用)
Ø 通过ROWID RANGE SCAN 保存数据
Ø 使用DBMS_REPAIR
Ø 使用EVENT
0
相关文章
