热烈祝贺,Dodd的space开张!!! 不想当版主的puber不是好puber!!!

Redo故障的恢复

上一篇 / 下一篇  2008-01-23 11:40:08 / 个人分类:我是一名DBA

环境: windows XP Pro + oracle 9.2.0.4

一、redologfile group的删除
为了模拟日志故障,需要手工删除一些日志组,下面介绍如何删除日志组,以及影响:
logfile group的状态有3种current、active、inactive。
其中active和inactive的都可以删除。在数据库open状态或其他状态都可以。这里所说的删除是用操作系统的删除。如果用alter database drop logfile group * 的话,则只能删除inactive状态的logfile group。
其中删除active状态的logfile group后,最好alter system checkpoint,因为,这时如果不手工发出检查点的话,一旦数据库出现问题(abort,由于instance recovery需要active的logfile group),将不能正常恢复
当前(current)日志组不能在open状态下删除。原因显而易见,至于删除之后如何恢复,下面将予以介绍。
 
二、丢失非活动的日志组
1、系统是noarchivelog
 
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUSITPUB个人空间OH!w@&Z Y
---------- ---------- ---------- ---------- ---------- --- ----------------
/]*{1jTK0FIRST_CHANGE# FIRST_TIMEITPUB个人空间%b2`m#D ]/hY
------------- ----------
0i/} sSvGTJO x0         1          1         22  104857600          1 NO  INACTIVEITPUB个人空间L~,Jy#n}-r R5}?
       243099 26-8月 -06
         2          1         23  104857600          1 NO  CURRENTITPUB个人空间\(Q)n-O\;b)s
       243170 26-8月 -06
         3          1         21  104857600          1 NO  INACTIVEITPUB个人空间+FT*zOh
       243097 26-8月 -06
现在在系统中删除 group 3,这时系统是open状态。
手工switch logfile后,例程马上崩溃;
SQL> alter system switch logfile;ITPUB个人空间4W*LLiPL])v!o:_
alter system switch logfileITPUB个人空间K MT u ~
*ITPUB个人空间D V K||o
ERROR 位于第 1 行:
,`"{ o un'PM0ORA-03113: 通信通道的文件结束
恢复方法有两种:
(1) drop相应的logfile group,添加新的logfile group。
  • 将数据库mount状态
    Sy0te C"z"L0SQL> startup mount
    Pl#mG-I0ORACLE 例程已经启动。
    /Cn0Q XG`0Total System Global Area  135339844 bytes
    WSW,uS5v-hO0Fixed Size                   454468 bytes
    `U}[b7@6AR2z P0Variable Size             109051904 bytesITPUB个人空间%tD!U%w ~+Zr-K
    Database Buffers           25165824 bytes
    mc Mg*NqPa0Redo Buffers                 667648 bytes
    [ [8O.[+Mr\0数据库装载完毕。ITPUB个人空间"K9|&x;t [\(B*]*`
    SQL> alter database open;ITPUB个人空间7Dr)~f2n!qgZ5b
    alter database open
    gDW?GQp d:Y0*ITPUB个人空间!O]"Z NRR
    ERROR 位于第 1 行:
    ,a.? \)Rp-JX0ORA-00313: 无法打开日志组 3 (线程 1) 的成员ITPUB个人空间e'JJ tk~,v C
    ORA-00312: 联机日志 3 线程 1: 'E:\ORACLE\ORADATA\FOX\REDO03.LOG'
  • alter database drop logfile group 3;
    "s^4Ho-d @(fo*j+D0SQL> alter database drop logfile group 3;ITPUB个人空间 UXIPm
    数据库已更改。
    I'p3ST5n xR4[B0SQL> select * from v$log;
    Ut&zLC7U0 GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUSITPUB个人空间-d[2w2t1ss
    ---------- ---------- ---------- ---------- ---------- --- ----------------ITPUB个人空间u|,B0Fh%V5U
    FIRST_CHANGE# FIRST_TIMEITPUB个人空间'h8P{8M V
    ------------- ----------ITPUB个人空间0Z{kG n
             1          1         22  104857600          1 NO  INACTIVE
    oX0~a9fN&a9[;b$K0       243099 26-8月 -06ITPUB个人空间#c#s2[OT} a
             2          1         23  104857600          1 NO  INVALIDATEDITPUB个人空间8Du/~ E#tD _\H
           243170 26-8月 -06
    \Y7_K x+{x*U0SQL> select * from v$logfile;ITPUB个人空间LP3Lh r!L:nNX
        GROUP# STATUS  TYPE
    aE e/~*dgH1e5w5uo#?0---------- ------- -------
    h+b2x%r5f3^OB0MEMBERITPUB个人空间#W `4|pJrz
    ----------------------------------
    *x}G$h2O+@0         1         ONLINE
    zs r(@ ]i^Ud+N&s0E:\ORACLE\ORADATA\FOX\REDO01.LOGITPUB个人空间w1~*L!otQ)d
             2 STALE   ONLINEITPUB个人空间 ^D)gEl [ s
    E:\ORACLE\ORADATA\FOX\REDO02.LOGITPUB个人空间l5Yh,f)R'XI
    此时,group 2变成INVALIDATED,是因为,发生日志切换过程中,数据库crash,所以group 2变成INVALIDATED,REDO02.LOG变成了stale(stale经常出现在上一次操作失败后,下一次成功操作后会恢复正常)
  • alter database add logfile group 3
    SJ H?DzX0('e:\oracle\oradata\fox\redo03.log') size 100M;
    CLG@(]0SQL> alter database add logfile group 3
    vG!@7k a"YU0  2  ('e:\oracle\oradata\fox\redo03.log')ITPUB个人空间 v L&T V$Gz.@6~P
      3  size 100M;ITPUB个人空间 }Ag'J#wX)I
    数据库已更改。
    *g*rKp"i7knV?D$~0SQL> select * from v$log;ITPUB个人空间$vL1rnn-Xv'M-U
        GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUSITPUB个人空间4Gl X;JnA3{
    ---------- ---------- ---------- ---------- ---------- --- ----------------
    2s/g0x;`oRJyF0FIRST_CHANGE# FIRST_TIME
    ~.~M6_ rTn0St.Y G*W&L0------------- ----------ITPUB个人空间2L_)wK+haK
             1          1         22  104857600          1 NO  INACTIVEITPUB个人空间h0z?h,jd&wB
           243099 26-8月 -06
    mR(|JP/LLK0         2          1         23  104857600          1 NO  INVALIDATED
    e)z]z T u0tX,I0       243170 26-8月 -06
    k}8cW8`0         3          1          0  104857600          1 YES UNUSED
  • alter database open;
    ~9xx Q5?I f0SQL> alter database open;
    T-u(?Qp0数据库已更改。ITPUB个人空间|8d*@@0k5w
    SQL>  select * from v$log;ITPUB个人空间1ND*R-e-m f7Z
        GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUSITPUB个人空间]2X0iO4B(h({c/WN
    ---------- ---------- ---------- ---------- ---------- --- ----------------
    8|4x%Q"SY5A0FIRST_CHANGE# FIRST_TIME
    6wA T*IX V(A0------------- ----------ITPUB个人空间 JzP*cc7Xo,?
             1          1         22  104857600          1 NO  INACTIVEITPUB个人空间6FzExV c
           243099 26-8月 -06ITPUB个人空间,L y5{$PaX3zJ
             2          1         23  104857600          1 NO  INACTIVEITPUB个人空间P'NC-D IF%O$JQf
           243170 26-8月 -06
    {(vh'Q+qp?IiD0         3          1         24  104857600          1 NO  CURRENTITPUB个人空间j#RI+[ Y
           263663 26-8月 -06
    c!s)dp%@In Az0注意,打开数据库后,group 2 inactive状态,日志自动切换到group 3。

(2) alter database clear logfile group *的方法ITPUB个人空间!`q^M+w
上面试验到数据库mount状态后,运行
w a G*b"R0SQL> alter database clear logfile group 3;

数据库已更改。

SQL>ITPUB个人空间 JV ju-r[sWT{
SQL> alter database open;
GE;O@"j uW\0ITPUB个人空间3K2R1\S}&mA([
记住,alter database clear logfile group 3这种方法,数据库会自动重建redo03.log日志文件。

ITPUB个人空间!J\.T t;@T|9i$j
2、系统是archivelog的
lr8l1Z(`(U0(1)删除的为已经archive的group
/['h$?*L;d+WC(v0数据库日志状态为:
?H w-e`T9@6\0SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUSITPUB个人空间#Y&E[SO%|YC
---------- ---------- ---------- ---------- ---------- --- ----------------ITPUB个人空间 N~v)hW4U T v
FIRST_CHANGE# FIRST_TIME
4g6_vDA(z"pR3~C0------------- ----------
L-FYG(y0\ p#A%iQX0         1          1         26  104857600          1 NO  CURRENTITPUB个人空间z OWTmR n
      2012333 26-8月 -06

         2          1         24  104857600          1 YES INACTIVE
@ p!l+S[{9_0       765483 24-8月 -06

         3          1         25  104857600          1 YES INACTIVEITPUB个人空间'[,? RWB6rI ?m0D;B
      1987398 24-8月 -06
I@[%`'G*P/@0在系统中删除 redo02.log后,手工switch logfile,instance立即崩溃。ITPUB个人空间c?-FB+i*{@|&pR_,@7J;a
SQL> alter system switch logfile;
(k pD*t Y0alter system switch logfile
h/?pA5E{kSdv0*ITPUB个人空间4V([:N:d1gbu8e
ERROR 位于第 1 行:
e&aD6jWwFXu {0ORA-03113: 通信通道的文件结束ITPUB个人空间+f&f~%epD9]3t+r
重启数据库:
,}hZ\~0SQL> startup mount
:J~A*aI5P x$? \`!Z0ORACLE 例程已经启动。

Total System Global Area  135339844 bytesITPUB个人空间 N(YZI _-SUj#qr jd1i
Fixed Size                   454468 bytes
%OG)Z^3@qJ2l0Variable Size             109051904 bytesITPUB个人空间 F`9D o+X
Database Buffers           25165824 bytes
5@A0i-T.w4x-a1S?0Redo Buffers                 667648 bytesITPUB个人空间e N8W8^"~ ycBo5x4@
数据库装载完毕。
;PL+c-l4U/S u0SQL>ITPUB个人空间2V l%_+rGo)q2v
SQL> alter database open;ITPUB个人空间1ru/Xe\hP|'K
alter database openITPUB个人空间6le-s/VtV| r/O
*
}R*nTwy0^:Y*M0ERROR 位于第 1 行:ITPUB个人空间PY!k.C!~1m
ORA-00313: 无法打开日志组 2 (线程 1) 的成员
w-k{'z)vuo0ORA-00312: 联机日志 2 线程 1: 'E:\ORACLE\ORADATA\MYDB\REDO02.LOG'
@ Jr'Et)paH0对redo02进行恢复:ITPUB个人空间p/b(` {p5P
SQL> alter database clear logfile group 2;

数据库已更改。

SQL>
P"xf.B#E[|e0SQL> alter database open;

数据库已更改。

当然,也可以通过 drop掉 group 2,然后再添加的方法恢复group 2 了。
xzs;|-Y8K g P0(2)如果删除的inactive日志还没归档的话ITPUB个人空间@F,keho
则使用 alter database unarchived logfile group * 来恢复,恢复后系统以前的备份无效,需要重新进行数据库全备。

三、丢失activecurrent的日志组

1、在丢失之前系统正常关闭的状态下
"Shkio B*V a{)h)i0由于,关闭前系统已经完成了检查点,此种情况对于8i可以对当前日志进行 clear,对于9i可以进行until cancel恢复。然后open resetlogs打开数据库。

2、在丢失之前系统异常关闭ITPUB个人空间&dO7ex _ D8O4h
此时,对于noarchivelog模式下,只能从数据库全备中恢复了

对于archivelog模式,可以找到最近一次的数据库备份,然后作基于cancel的恢复。


TAG: redo 恢复

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-07  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 1993
  • 日志数: 26
  • 图片数: 1
  • 建立时间: 2008-01-22
  • 更新时间: 2008-03-21

RSS订阅

Open Toolbar