天天看點

重做日志檔案

檢視重做日志的資訊,用資料字典v$log:

sql> set line 120

sql> select * from v$log;

    group#  sequence#    members      bytes status           arc

---------- ---------- ---------- ---------- ---------------- ---

         1          5          1   52428800 current          no

         2          3          1   52428800 inactive         no

         3          4          1   52428800 inactive         no

可知該資料庫中有三個重做日志組,每組有一個重做日志檔案,它們的序列号分别是345(必須連續的),且都是非歸檔的,大小都一樣。

對status的解釋:

inactive:表示執行個體已恢複,不再需要這組聯機重做日志組了

current:目前組,隐含該聯機重做日志

active:表示這組聯機重做日志組是活動的但不是目前組,在執行個體恢複時需要這組聯機重做日志組

unused:表示oracle伺服器從未寫過該組聯機重做日志組,剛剛被添加進去的

檢視每個重做日志組中成員的資訊,用資料字典v$logfile:

sql> select * from v$logfile;

    group# status  type    member                                                  is_

---------- ------- ------- ------------------------------------------------------- ---

         3 stale   online  c:\oracle\product\10.2.0\oradata\orcl\redo03.log        no

         2 stale   online  c:\oracle\product\10.2.0\oradata\orcl\redo02.log        no

         1         online  c:\oracle\product\10.2.0\oradata\orcl\redo01.log        no

可知每組重做日志組中的成員都在同一個目錄下,且都是聯機重做日志檔案。

status解釋:

空白:正在使用

stale:該檔案的内容不完全

invalid:該檔案不可以被通路

deleted:該檔案不再有用

開始工作前先備份!(詳見備份)

添加一組重做日志組:

sql>alter database add logfile

2   ('c:\disk3\orcl\onlinelog\redo 04a.log',

3    'c:\disk6\orcl\onlinelog\redo 04b.log',

4    'c:\disk9\orcl\onlinelog\redo 04c.log')

5   size 15m;

資料庫已更改。

sql> select group#,sequence#,members,bytes,status,archived from v$log;

         4          0          3   15728640 unused           yes

sql> col member for a45

    group# status  type    member                                        is_

---------- ------- ------- --------------------------------------------- ---

         3 stale   online  c:\oracle\product\10.2.0\oradata\orcl\redo03. no

                           log

         2 stale   online  c:\oracle\product\10.2.0\oradata\orcl\redo02. no

         1         online  c:\oracle\product\10.2.0\oradata\orcl\redo01. no

         4         online  c:\disk3\orcl\onlinelog\redo 04a.log          no

         4         online  c:\disk6\orcl\onlinelog\redo 04b.log          no

         4         online  c:\disk9\orcl\onlinelog\redo 04c.log          no

已選擇6行。

sql> alter database drop logfile group 3;

sql> alter database add logfile

  2  ('c:\disk3\orcl\onlinelog\redo 03a.log',

  3  'c:\disk6\orcl\onlinelog\redo 03b.log',

  4  'c:\disk9\orcl\onlinelog\redo 03c.log')

  5  size 15m;

sql> alter database drop logfile group 2;

         3         online  c:\disk3\orcl\onlinelog\redo 03a.log          no

         3         online  c:\disk6\orcl\onlinelog\redo 03b.log          no

         3         online  c:\disk9\orcl\onlinelog\redo 03c.log          no

已選擇7行。

  2  ('c:\disk3\orcl\onlinelog\redo 02a.log',

  3  'c:\disk6\orcl\onlinelog\redo 02b.log',

  4  'c:\disk9\orcl\onlinelog\redo 02c.log')

         2         online  c:\disk3\orcl\onlinelog\redo 02a.log          no

         2         online  c:\disk6\orcl\onlinelog\redo 02b.log          no

         2         online  c:\disk9\orcl\onlinelog\redo 02c.log          no

已選擇10行。

sql> alter system switch logfile;

系統已更改。

         1          5          1   52428800 active           no

         2          6          3   15728640 current          no

         3          0          3   15728640 unused           yes

         2          6          3   15728640 active           no

         3          7          3   15728640 current          no

         3          7          3   15728640 active           no

         4          8          3   15728640 current          no

         1          9          1   52428800 current          no

         4          8          3   15728640 active           no

         1          9          1   52428800 active           no

         2         10          3   15728640 current          no

sql>

切換來切換去,第一組重做日志組不是活動組就是目前組,暫定問題7

碰到重做日志組序列号不連續,定為問題8

到此,基本上重做日志就已完成。最後一步就是把原有的舊檔案删除。