日期:2014-05-16 浏览次数:20461 次
小e随笔:最近这一个礼拜,大四的课程快结束了,课程排的满,期末考试复习,进入11月中旬就进入自由实习期了,可是小e我的实习工作还没有找好,弄的我焦头烂额的,希望哪个伯乐赶紧收下我吧!!!我喜欢数据库。。。
案例4:丢失联机重做日志文件的恢复
1 丢失非当前的联机重做日志文件
(1) 重做日志文件定位
SQL> select group#,sequence#,members,archived,status from v$log;
GROUP# SEQUENCE# MEMBERS ARC STATUS
---------- ---------- ---------- --- ----------------
1 7 1 YES INACTIVE
2 8 1 YES INACTIVE
3 9 1 NO CURRENT --这个是当前重做日志文件
这个视图中status列的知识充电:
a. UNUSED:表示从未用过。一般刚刚创建或OPEN RESETLOGS打开后,联机重做日志组为这一状态。
b. CURRENT:表示当前的。
c. ACTIVE:表示活动的。虽然不是当前状态,但也有可能正被使用或要被使用,比如CRASH RECOVERY时可能存在这种状态的联机重做组。
d. CLEARING:日志正在清空,当执行ALTER DATABASE CLEAR LOGFILE语句时该日志组会变为这种状态,语句执行完后,操作的日志组状态变为UNUSED。
e. CLEARING_CURRENT:日志正在清空。但是由于清空时出错如I/O设备无法访问,导致清空工作不能顺序完成,则该日志组就被置于这种状态。
f. INACTIVE:不活动状态。表示该组日志中的内容已经被归档或顺利写入数据文件,该组日志可被继续重用。
SQL> col member format a50;
SQL> select group#,member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------
1 /u01/oracle/oradata/elvis/redo01.log
3 /u01/oracle/oradata/elvis/redo03.log
2 /u01/oracle/oradata/elvis/redo02.log
经过这两个视图的定位,我们打算模拟损坏的日志就已经被我们选出来啦!那就是。。。2号文件,还有经过v$logfile视图你可以看到,我没一组重做日志文件里只有一个文件,这是相当不安全的。建议对联机重做日志文件进行冗余的机制来确保联机重做日志文件的安全,即每组联机重做日志创建多个文件(至少两个),每个文件的路径都可以各自独立(Oracle建议将每一组中的各个文件存放在不同的磁盘上)。
(2) 模拟文件丢失
[oracle@elvis elvis]$ ll
total 2080944
drwxr-xr-x 2 oracle oinstall 4096 Oct 13 19:49 bak
-rw-r----- 1 oracle oinstall 10076160 Oct 20 11:32 control01.ctl
-rw-r----- 1 oracle oinstall 52429312 Oct 20 10:12 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Oct 20 10:12 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Oct 20 11:30 redo03.log
-rw-r----- 1 oracle oinstall 629153792 Oct 20 11:27 sysaux01.dbf
-rw-r----- 1 oracle oinstall 734011392 Oct 20 11:28 system01.dbf
-rw-r----- 1 oracle oinstall 71311360 Oct 20 11:12 temp01.dbf
-rw-r----- 1 oracle oinstall 52436992 Oct 20 10:12 test01.dbf
-rw-r----- 1 oracle oinstall 524296192 Oct 20 11:27 undotbs02.dbf