Oracle误删除表空间恢复

时间:2024-03-09 13:01:22

由于表空间名字取错了。。然后关掉数据库服务器后直接删除了表空间,结果导致

连接数据库的时候只能够用sys用户来连接数据库,用其他用户登陆的话才出现错误

ORA-01109: 数据库未打开

如果用sys用户去查询SCOTT.EMP的话会出现下面的错误、

ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询

其实原因很简单。。我把DBF文件删除了之后。。数据库启动后要锁定那几个表空间。但是表空间不存在。。导致出问题了。。。我们只要把表空间的引用移除掉就好了

SQL> shutdown immediate;

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup;

ORACLE 例程已经启动。

Total System Global Area 135338868 bytes

Fixed Size 453492 bytes

Variable Size 109051904 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 7: \'

D:\ORACLE\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\HITSORYDB.DBF \'

到这里。我们只要移除引用就好了

SQL>alter database datafile

\'D:\ORACLE\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\HITSORYDB.DBF\' offline drop;

完成之后。即可

这时候我们再去启动数据库 会出现新的错误

SQL> shutdown immediate;

ORA-01109: database未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area   135338868 bytes

Fixed Size                   453492 bytes

Variable Size             109051904 bytes

Database Buffers           25165824 bytes

Redo Buffers                 667648 bytes

数据库装载完毕。

ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;

即可恢复好数据库。。

PS: 不要手贱去删除表空间文件。。。还是要先drop掉 再去删除引用。。

操作步骤如下:

1. shutdown immediate; --先关闭实例

2. startup;  启动。。出错

3. alter database datafile \'D:\ORACLE\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\HITSORYDB.DBF\' offline drop;--移除

4. shutdown immediate; --先关闭实例

5. startup;

6. alter database open resetlogs;

7. 完成

8. 进去后 再试试去drop不要的表空间吧