oracle表空间误操作

背景

由于不熟悉,同事在oracle R2中创建表空间失败后,直接删除了dbf文件,再使用

alter tablespace tablespacenaem drop datafile datafile ;

drop tablespace tablespacename including content and datafiles;

发现无法再正常执行。于是删除了dba_tablespaces中表空间数据,delete from dba_tablespaces

解决步骤

1、  恢复dbf文件

recover datafile XXX.dbf;

2、  恢复dba_tablespaces中数据

select * from ts$

会发现删除的记录还在,而且online状态为3

使用Update 设置online属性为1,使用id

select * from dba_tablespaces

检查dba_tablespaces中删除的记录是否应经生成

3、  dbf文件文件设为online

alter database datafile '*****' ONLINE;

 

 

解释

由于dba_tablespaces是建立在ts$上的视图,但delete  dba_tablespaces 中的一条数据时,并没有同时删除ts$中的数据,只是将其online状态改为了3,同理删除dba_ datafiles时,会在file$将其online 设置2

 

参考

http://www.anysql.net/dba/delete_dba_tablespaces.html

http://www.itpub.net/viewthread.php?action=printable&tid=801492

http://hi.baidu.com/ancen_ye/blog/item/0fdd3f0ad7ac7a35b1351db9.html

你可能感兴趣的:(oracle)