檢視重做日志的資訊,用資料字典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
到此,基本上重做日志就已完成。最後一步就是把原有的舊檔案删除。