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空间