Oracle删除数据文件

SQL> select file_name,file_id from dba_data_files where tablespace_name='TEST';

FILE_NAME                         FILE_ID
------------------------------ ----------
/oradata/june/test.dbf                  6
/oradata/june/test1.dbf                 9
/oradata/june/test2.dbf                10

SQL> select distinct owner,segment_name from dba_Extents where FILE_ID=6;

OWNER                          SEGMENT_NAME
------------------------------ --------------------
TEST                           EMPLOYEES
TEST                           ORDERS
TEST                           BFW_TEST
TEST                           B1
TEST                           STRACE
TEST                           T1
TEST                           TEST
TEST                           SYS_C0011275
TEST                           TEST2
TEST                           A2
TEST                           HOTEL

OWNER                          SEGMENT_NAME
------------------------------ --------------------
TEST                           EMP2
TEST                           T
TEST                           IDX_T

已选择14行。



SQL> select distinct owner,segment_name from dba_Extents where FILE_ID=9;

OWNER                          SEGMENT_NAME
------------------------------ --------------------
TEST                           T10
TEST                           T500
TEST                           B1
TEST                           DEPT
TEST                           EMP3
TEST                           A1
TEST                           IDX_EMP_EMPNO
TEST                           T100
TEST                           T1
TEST                           EMP_1
TEST                           EMP

OWNER                          SEGMENT_NAME
------------------------------ --------------------
TEST                           DUPES
TEST                           TEST3
TEST                           DEPT_1
TEST                           IDX_EMP_ENAME
TEST                           PK_DEPT
TEST                           KEY

已选择17行。


可以看到表T1 在数据文件6,9中有


SQL> select count(*) from t1;

  COUNT(*)
----------
     72607

SQL> alter tablespace test  drop datafile '/oradata/june/test1.dbf' ;
alter tablespace test  drop datafile '/oradata/june/test1.dbf'
*
第 1 行出现错误:
ORA-03262: 文件非空


可以看到,只有非空的数据文件才能进行删除,已经写入数据的数据文件不能进行删除。

尝试
alter database datafile '/oradata/june/test1.dbf' offline drop



SQL> alter database datafile '/oradata/june/test1.dbf' offline drop;

数据库已更改。

SQL>  select count(*) from t1;
 select count(*) from t1
                      *
第 1 行出现错误:
ORA-00376: 此时无法读取文件 9
ORA-01110: 数据文件 9: '/oradata/june/test1.dbf'

/oradata/june/test1.dbf数据文件中有t1表的数据


SQL> recover datafile 9;
完成介质恢复。



SQL>  alter database datafile '/oradata/june/test1.dbf'  online;

数据库已更改。

SQL>  select count(*) from t1;

  COUNT(*)
----------
     72607

原文地址:https://www.cnblogs.com/hzcya1995/p/13352132.html