由于表空间名字取错了。。然后关掉数据库服务器后直接删除了表空间,结果导致
连接数据库的时候只能够用sys用户来连接数据库,用其他用户登陆的话才出现错误
如果用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不要的表空间吧