由于删除文件时不小心,删除了一个数据文件,在操作系统级该文件不能被恢复。
数据库是自动归档的数据库。经查看,有所有的归档日志。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 d:/oracle/ora92/RDBMS
最早的概要日志序列 6
下一个存档日志序列 8
当前日志序列 8
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 85006980 bytes
Fixed Size 453252 bytes
Variable Size 58720256 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> create tablespace test datafile 'D:/ORACLE/ORADATA/ORA92/TEST01.DBF' SIZE 10M;
表空间已创建。
SQL> create table a (b char) tablespace test;
表已创建。
再删除数据文件:
'D:/ORACLE/ORADATA/ORA92/TEST01.DBF
启动数据库:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 85006980 bytes
Fixed Size 453252 bytes
Variable Size 58720256 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'D:/ORACLE/ORADATA/ORA92/TEST01.DBF'
SQL> alter database create datafile 7 as 'D:/ORACLE/ORADATA/ORA92/TEST01.DBF';
数据库已更改。
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-01113: 文件 7 需要介质恢复
ORA-01110: 数据文件 7: 'D:/ORACLE/ORADATA/ORA92/TEST01.DBF'
SQL> recover datafile 7;
完成介质恢复。
SQL> alter database open;
数据库已更改。
SQL> select * from a;
未选定行
SQL> insert into a values ('2');
已创建 1 行。
SQL> truncate table a;
表已截掉。
SQL> drop table a;
表已丢弃。
SQL> drop tablespace test including contents and datafiles;
表空间已丢弃。
注意:
对于以前用 RESETLOGS 选项启动数据库,并且数据文件是在使用前创建的数据文件,就不能用这种方法。
SQL> alter database create datafile 5 as 'D:/ORACLE/ORADATA/ORA92/USERS01.DBF';
alter database create datafile 5 as 'D:/ORACLE/ORADATA/ORA92/USERS01.DBF'
*
ERROR 位于第 1 行:
ORA-01181: 文件5在最后一个 RESETLOGS 之前创建,无法重新创建
ORA-01110: 数据文件 5: 'D:/ORACLE/ORADATA/ORA92/USERS01.DBF'