Oracle9i中有2種日誌,一種稱爲 Redo Log(重做日誌),另一種叫做Archive Log(歸檔日誌)
重做日誌redo log file是LGWR進程從Oracle實例中的redo log buffer寫入的,是循環利用的。就是說一個redo log file(group) 寫滿後,才寫下一個。
歸檔日誌archive log是當數據庫運行在歸檔模式下時,一個redo log file(group)寫滿後,由ARCn進程將重做日誌的內容備份到歸檔日誌文件下,然後這個redo log file(group)才能被下一次使用。不管數據庫是否是歸檔模式,重做日誌是肯定要寫的。而只有數據庫在歸檔模式下,重做日誌纔會備份,形成歸檔日誌。
歸檔日誌結合全備份,用於數據庫出現問題後的恢復使用。
redolog也稱爲聯機日誌
日誌文件分爲重做日誌文件(redo log file)和歸檔日誌文件(archive log file)。
SQL> select group#, status, member from v$logfile;
GROUP# STATUS MEMBER
---------- ------- --------------------------------------------------------------------------------
3 C:\ORACLE\ORADATA\ORCL\REDO03.LOG
2 C:\ORACLE\ORADATA\ORCL\REDO02.LOG
1 C:\ORACLE\ORADATA\ORCL\REDO01.LOG
redo log fiel有多個組group構成。一個group中能包括不止一個log file,日誌信息是寫到group的每個logfile中,所以一個group中的log file存儲着一樣的信息。當一個group寫滿之後就轉到下一個group中,稱之爲日誌切換。
當所有group都寫滿了後,就重頭開始從第一個group開始,原來的內容將被覆蓋丟失。如果不想被丟失,可以採用歸檔模式,即將數據保存到archive log file中。歸檔模式會給系統帶來一定的性能問題。
查看database採用哪種模式:
SQL> select dbid,name,log_mode from v$database;
DBID NAME LOG_MODE
---------- --------- ------------
1232416663 ORCL NOARCHIVELOG
歸檔日誌路徑由SPFILE的log_archive_dest參數確定。
SQL> show parameter log_archive_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
警告日誌文件alert_sid.log保存着例行的信息和錯誤信息,它的路經是:
SQL> select value from v$parameter where name='background_dump_dest';
VALUE
--------------------------------------------------------------------------------
c:\oracle\diag\rdbms\orcl\orcl\trace
SQL> show parameter background_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string c:\oracle\diag\rdbms\orcl\orcl\trace
用戶跟蹤文件是oracle出現異常時自動創建的文本文件,它與警告文件一起構成了完整的故障信息描述體系。
SQL> select value from v$parameter where name='user_dump_dest';
VALUE
--------------------------------------------------------------------------------
c:\oracle\diag\rdbms\orcl\orcl\trace
SQL> show parameter user_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string c:\oracle\diag\rdbms\orcl\orcl\trace
出處:http://zhidao.baidu.com/question/359244586.html
==============================================================================================ORACLE數據庫ARCHIVELOG,NOARCHIVELOG模式轉換簡單總結
檔redolog並不是沒有redolog。
archivelog,noarchivelog模式之間切換有幾點要注意的地方。
1:是不是歸檔redolog有一個重要的開關
alter database archivelog;
alter database noarchivelog;
這個打開archivelog狀態的語句必須在mount狀態運行。
shutdown immediate
startup mount
alter database archivelog
alter database open
2:打開開關之後並不是就可以讓系統自動歸檔,還有一個控制點,自動還是手動歸檔。
archive log start 自動
archive log stop 手動
這個操作會改變
log_archive_start = true
這個參數控制數據庫實例啓動時是否啓動歸檔過程通常爲ora_arc0_sid,這個參數可以通過archive log
start,或archive log stop 打開或關閉。
3:如果手動歸檔那麼
alter system switch logfile後系統並不自動把switch之前的log歸檔而是要手工歸檔。
alter system archive log all
4:手工歸檔下要注意的問題
如果系統在幾次日誌組切換後,日誌還沒有歸檔,所有的online redo log group都在未歸檔狀態,那麼
切換日誌組的過程會掛住。這時要打開一個另一個窗口手工歸檔。看系統的log的常用語句
select * from v$log
select * from v$logfile