无备份坏块处理
数据库版本:9.2.0.5.0
平台:windows2003
下午接到通知以数据库出现坏块现象,无备份,应用无法正常使用,要予以解决
由于没有备份,无法恢复,只能采用跳过坏块方法,然后通过业务补数据。
首先要通知业务需要停服务,其次用PL/SQL登录把OPTCABLE表的sql导出来。
首先要查出坏块中的对象是什么 file_id为截图中文件号,and 为数据库的块号。
SQL> SELECT tablespace_name,segment_type, owner, segment_name FROM dba_extents WHERE file_id =82 AND 326677between block_id AND block_id + blocks - 1;
TABLESPACE_NAME SEGME OWNER SEGMENT_NAME
------------------------------ ---------------------------
USERS TABLE GISTAR OPTCABLE
然后需要查询数据对象的id(用于查询rowid的参数)
SQL> SELECT data_object_id FROMdba_objects WHERE object_name = 'OPTCABLE' and owner='GISTAR';
DATA_OBJECT_ID
--------------
97248
找出坏块最小的rowid (1, DATA_OBJECT_ID ,file_id,数据库的块号,0)
SQL> select dbms_rowid.rowid_create(1,97248,82,326677,0) from dual;
DBMS_ROW