这里主要是通过重做日志来恢复,如果没有归档是不能完成的。
如果system表空间的数据文件丢失,就无能为力了,必须要用备份。
如果是临时表空间的数据文件丢失,无所谓了,本来就是临时的,不用与长期存储,重建一个就行了。
1、查看归档情况
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 17
下一个存档日志序列 19
当前日志序列 19
SQL>
2、重新创建一个数据文件
SQL> create tablespace product datafile 'D:\app\Administrator\oradata\orcl\produ
ct.dbf' size 100m;
表空间已创建。
SQL> create table orders(order_id number primary key,order_name varchar(200),order_date date);
表已创建。
SQL> insert into orders values(1,'测试1',sysdate);
已创建 1 行。
SQL>
3、删除数据文件
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del D:\app\Administrator\oradata\orcl\PRODUCT.DBF
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1334380 bytes
Variable Size 209716116 bytes
Database Buffers 318767104 bytes
Redo Buffers 5844992 bytes
数据库装载完毕。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\PRODUCT.DBF'
SQL>
4、开始恢复
SQL> alter database create datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\PRODUCT.DBF' as 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\PRODUCT.DBF';
数据库已更改。
SQL> recover datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\PRODUCT.DBF';
完成介质恢复。
SQL> alter database open;
数据库已更改。
SQL> select * from orders;
ORDER_ID ORDER_NAME ORDER_DATE
1 测试1 18-7月 -12
SQL>