oracle10g删除数据文件,10G删除空数据文件

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: 此时无法读取文件 6

ORA-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 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 8

TEST 9 128

TEST 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值