情景模拟如下:
alter database open
Sat Dec 05 12:33:35 2009
Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_dbw0_5944.trc:
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 9: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCSSTZ01.DBF'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
Sat Dec 05 12:33:35 2009
Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_dbw0_5944.trc:
ORA-01157: cannot identify/lock data file 11 - see DBWR trace file
ORA-01110: data file 11: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCSSTZ02.DBF'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
Sat Dec 05 12:33:35 2009
Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_dbw0_5944.trc:
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01110: data file 12: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCSSTZ03.DBF'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
分析问题:
因为数据文件在没有被offline的情况下实物理删除了,导致oracle的数据不一致,因此启动失败.
解决方法:
lsnrctl stop
sqlplus internal
SQL> shutdown abort
SQL> startup mount
SQL> alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCSSTZ01.DBF'
offline drop;
数据库已更改。
SQL> alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCSSTZ02.DBF'
offline drop;
数据库已更改。
SQL> alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCSSTZ03.DBF'
offline drop;
数据库已更改。
SQL> alter database open;
SQL> drop tablespace r_csh_20051001;
lsnrctl start
其中省略了屏幕输出内容.
注意在使用alter database datafile时要写数据文件的全地址,且用引号引起来,否则系统提示如下:
SQL> alter database datafile scsstz01.dbf offline;
alter database datafile scsstz01.dbf offline
*
第 1 行出现错误:
ORA-02236: 文件名无效
SQL> alter database datafile d:\oracle\product\10.2.0\oradata\orcl\scsstz01.dbf offline;
alter database datafile d:\oracle\product\10.2.0\oradata\orcl\scsstz01.dbf offline
*
第 1 行出现错误:
ORA-02236: 文件名无效
在使用alter database datafile时要只写offline而不追加drop时,系统提示如下错语:
SQL> alter database datafile 'd:\oracle\product\10.2.0\oradata\orcl\scsstz01.dbf' offline;
alter database datafile 'd:\oracle\product\10.2.0\oradata\orcl\scsstz01.dbf' offline
*
第 1 行出现错误:
ORA-01145: 除非启用了介质恢复, 否则不允许立即脱机
小结:oracle数据文件(datafile)被误删除后没有恢复的办法,只能把该数据文件offline后drop掉。