SQL> commit;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> insert into tt values(4,dbms_flashback.get_system_change_number?
? 2? );
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> insert into tt values(5,dbms_flashback.get_system_change_number);
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> select * from v$log;
? GROUP#? ? THREAD#? SEQUENCE#? ? ? BYTES? BLOCKSIZE? ? MEMBERS ARC STATUS? ? ? ? ? FIRST_CHANGE# FIRST_TIME? ? NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ --------------
? ? ? ? 1? ? ? ? ? 1? ? ? ? 433? 52428800? ? ? ? 512? ? ? ? ? 1 NO? CURRENT? ? ? ? ? ? ? ? 7239074 27-4月 -15? ? ? 2.8147E+14
? ? ? ? 2? ? ? ? ? 1? ? ? ? 431? 52428800? ? ? ? 512? ? ? ? ? 1 YES ACTIVE? ? ? ? ? ? ? ? 7239029 27-4月 -15? ? ? ? ? 7239057 27-4月 -15
? ? ? ? 3? ? ? ? ? 1? ? ? ? 432? 52428800? ? ? ? 512? ? ? ? ? 1 YES ACTIVE? ? ? ? ? ? ? ? 7239057 27-4月 -15? ? ? ? ? 7239074 27-4月 -15
我们此时删除数据文件:
[oracle@localhost ~]$ cd /u01/app/oracle/oradata/orcl3939
[oracle@localhost orcl3939]$ rm -rf *.dbf
然后把之前备份的数据文件移到/u01/app/oracle/oradata/orcl3939,如果全部移动的话,则数据库可以打开了,之前对于表tt的操作数据完全丢失
[oracle@localhost beifeng]$ cp *.dbf /u01/app/oracle/oradata/orcl3939
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area? 351522816 bytes
Fixed Size? ? ? ? ? ? ? ? ? 1336484 bytes
Variable Size? ? ? ? ? ? 297798492 bytes
Database Buffers? ? ? ? ? 46137344 bytes
Redo Buffers? ? ? ? ? ? ? ? 6250496 bytes
数据库装载完毕。
此时打开到mount状态是完全可以的。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: '/u01/app/oracle/oradata/orcl3939/system01.dbf'
此时我们恢复数据库:
SQL> recover database;
ORA-00279: 更改 7233493 (在 04/27/2015 13:51:53 生成) 对于线程 1 是必需的 ORA-00289:
建议:
/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_04_27/o1_mf_1_426_b
mvr5f9j_.arc
ORA-00280: 更改 7233493 (用于线程 1) 在序列 #426 中
指定日志: {
此时会用到归档日志:/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_04_27/o1_mf_1_426_b
mvr5f9j_.arc
序列号为:426,
更改时的scn:7233493
指定日志分析:
suggest:表示用的归档日志文件位置就是建议的位置
filename:表示归档后的日志若你修改位置,此时你需要指定位置
auto:表示数据库自动恢复
cancle:只恢复到该步骤即停止
下面我们按回车键选择suggest:
ORA-00279: 更改 7236412 (在 04/27/2015 15:09:33 生成) 对于线程 1 是必需的 ORA-00289:
建议:
/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_04_27/o1_mf_1_427_b
mvrj552_.arc
ORA-00280: 更改 7236412 (用于线程 1) 在序列 #427 中
指定日志: {
?
ORA-00279: 更改 7236929 (在 04/27/2015 15:15:17 生成) 对于线程 1 是必需的 ORA-00289:
建议:
/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_04_27/o1_mf_1_428_b
mvrooz2_.arc
ORA-00280: 更改 7236929 (用于线程 1) 在序列 #428 中
指定日志: {
?
ORA-00279: 更改 7237015 (在 04/27/2015 15:18:13 生成) 对于线程 1 是必需的 ORA-00289:
建议:
/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_04_27/o1_mf_1_429_b
mvs29ny_.arc
ORA-00280: 更改 7237015 (用于线程 1) 在序列 #429 中
指定日志: {
?
?
是不是这样很慢,我这样是让大家看到每一步用到的归档日志文件,那下面我们使用auto:
AUTO
ORA-00279: 更改 7237261 (在 04/27/2015 15:24:57 生成) 对于线程 1 是必需的 ORA-00289:
建议:
/u01/app/oracle/flash_recovery_area/ORCL3939/archivelog/2015_04_27/o1_mf_1_430_b
mvvf00h_.arc
ORA-00280: 更改 7237261 (用于线程 1) 在序列 #430 中
已应用的日志。
完成介质恢复。
此时我们查找数据文件的scn(全部来自控制文件,shutdown之后保留的),以及数据头的scn(数据头的scn是旧的,来自拷贝回来的数据文件头)
要想数据库打开,则两者scn相等:
SQL> select file#,checkpoint_change# fro