处理Oracle数据库中的坏块

http://tech.ddvip.com   2007年05月08日    社区交流

本文详细介绍处理Oracle数据库中的坏块

  Ora-1578 file# (RFN) block#

  Ora-1110 file# (AFN) block#

  Ora-600 file# (AFN) block#

  其中RFN表示的是relative_fno

  AFN表示的是file_idSelect 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 = and between block_id AND block_id + blocks – 1;

  通过上面这个查询语句就可以查出当前存在坏块的对象是什么,是什么类型的对象。需要注意的是如果是temp文件中出现坏块,是没有记录返回的。

  3. 根据2中查询出来的对象类型,确定相应的处理方法:

  出现坏块的常见对象有

  Sys用户下的对象

  回滚段

  临时段

  索引或者分区索引

  表

  常用的处理方法有

  恢复数据文件

  只恢复坏的block(9i以上版本可用)

  通过ROWID RANGE SCAN 保存数据

  使用DBMS_REPAIR

  使用EVENT

  4. 具体处理方法的介绍

  恢复数据文件方法:

  如果数据库是归档方式下,并且有完整的物理备份,就可以使用此方法来恢复。

  步骤如下:

  1) 先offline受影响的数据文件,执行以下的语句ALTER DATABASE DATAFILE 'name_file' OFFLINE;

  2) 保留有坏块的数据文件,然后拷贝备份的数据文件。如果恢复的数据文件要求路径不同,执行以下的语句ALTER DATABASE RENAME FILE 'old_name' TO 'new_name';

责编:豆豆技术应用

正在加载评论...