技术开发 频道

处理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
相关文章