本文共 4031 字,大约阅读时间需要 13 分钟。
sys@ORCL>alter tablespace users drop datafile
2 '/u01/app/oracle/oradata/orcl/users02.dbf';对于DataGuard,不能使用这个命令,否则redo会坏掉使得备库要重做。到10204还需打上Genernal Bundle。
[@more@]作者 :【转载时请务必以超链接形式标明文章原始出处和作者信息】
链接:Oracle 9I、10G都可以采用:Alter database datafile file_name offline drop;来删除数据文件,但当数据文件为非空时,存放在该数据文件上的数据就无法读据了:
SYS@sky> alter database datafile 2 'E:USERS03.DBF' offline drop; 数据库已更改。 SYS@sky> select count(*) from test01;select count(*) from test01 *ERROR 位于第 1 行:ORA-00376: 此时无法读取文件 6ORA-01110: 数据文件 6: 'E:USERS03.DBF' |
采用该命令来删除数据文件,相关数据字典信息是无法清除的:
SYS@sky> select FILE#,TS#,name,status from v$datafile 2 where ts#=4; FILE# TS# NAME STATUS----- ---- --------------------------------- ------- 2 4 E:USERS02.DBF ONLINE 4 4 E:USERS01.DBF ONLINE 6 4 E:USERS03.DBF RECOVER |
不过这条命令在恢复时还是很挺有用的,比如只恢复某个表空间的数据时,其它表空间的数据文件就可以offline drop了。
从Oracle 10G R2开始,可以采用:Alter tablespace tablespace_name drop datafile file_name;来删除一个空数据文件,并且相应的数据字典信息也会清除:
sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files 2 where tablespace_name='USERS'; FILE_ID FILE_NAME TABLESPACE_NAME------- -------------------------------------------- ------------------ 4 /u01/app/oracle/oradata/orcl/users01.dbf USERS sys@ORCL>alter tablespace users add datafile 2 '/u01/app/oracle/oradata/orcl/users02.dbf' size 5M autoextend off; Tablespace altered. sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files 2 where tablespace_name='USERS'; FILE_ID FILE_NAME TABLESPACE_NAME------- -------------------------------------------- ------------------- 4 /u01/app/oracle/oradata/orcl/users01.dbf USERS 9 /u01/app/oracle/oradata/orcl/users02.dbf USERS sys@ORCL>drop table test; Table dropped. sys@ORCL>create table test tablespace users 2 as 3 select * from dba_objects; Table created. sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents 2 where file_id=9; SEGMENT_NAME FILE_ID BLOCKS------------------------------ ---------- ----------TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 128TEST 9 128 17 rows selected. sys@ORCL>alter table test move tablespace PERFSTAT; Table altered. sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents 2 where file_id=9; no rows selected sys@ORCL>alter tablespace users drop datafile 2 '/u01/app/oracle/oradata/orcl/users02.dbf'; Tablespace altered. sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files 2 where tablespace_name='USERS'; FILE_ID FILE_NAME TABLESPACE_NAME------- -------------------------------------------- --------------------- 4 /u01/app/oracle/oradata/orcl/users01.dbf USERS sys@ORCL> |
当然如果数据文件是非空的,drop时就有提示了:
sys@ORCL>alter tablespace users drop datafile 2 '/u01/app/oracle/oradata/orcl/users02.dbf';alter tablespace users drop datafile*ERROR at line 1:ORA-03262: the file is non-empty |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/668365/viewspace-1022666/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/668365/viewspace-1022666/