当index数据文件被损坏,数据库恢复办法

1. 先把问题datafile offline drop, then open database
startup mount;

alter database datafile '/data/boss/indx01.dbf' offline drop;
SQL> alter database open;


2.通过 dba_data_files 确定数据库问题表空间

SQL> select tablespace_name, file_name from dba_data_files
  2  where file_name = ('/u01/oradata/cdr/indx01.dbf');

 

SQL> SELECT NAME, STATUS FROM V$DATAFILE WHERE name = '/u01/oradata/cdr/indx01.dbf';

NAME                                     STATUS
---------------------------------------- -------
/u01/oradata/cdr/indx01.dbf              OFFLINE


/*
 *需要找到在这个数据文件中有哪些index
 */
 
 SQL> select file# from v$datafile where name = '/u01/oradata/cdr/indx01.dbf';
 
      FILE#
 ----------
         4
        
            

SQL> col segment_name format a30
SQL> select distinct segment_name, partition_name from dba_extents where file_id =4;


4.新建一个表空间,rebuilid指向新表空间ALTER INDEX  index_name REBUILD TABLESPACE indx_tablespace online ;
 这样就可以把index移到新的indx空间

请使用浏览器的分享功能分享到微信等