Oracle重做日志操作是為了記錄數據的改變,提供數據庫的恢復,下面就為您介紹重做日志的運行流程,希望對您能夠有所幫助。
一、Oracle引入重做日志目的:記錄數據的改變,提供數據庫的恢復。
1、日志文件需要分組,同一個重做日志組的每個成員所存的信息完全相同。
2、每個組中的重做日志文件均被稱為成員
3、每組最好有2、3個成員,分別放置不同的物理磁盤,這樣安全性較高。
4、最少需要兩個重做日志組
二、Oracle重做日志的運行流程:
Oracle重做日志按照有序循環的方式被使用,即當一組日志文件被填滿後,循環覆蓋下一組日志文件,不斷循環。此時稱為日志切換。檢查點操作也在此時發生,檢查點操 作是用來實現同步的,它會寫數據文件的頭信息、控制文件。在歸檔模式下,當一組日志文件被填滿後,ARCH(歸檔寫進程)將這組復制到歸檔日志文件 中。(在ARCH正在寫的重做日志文件LGWR是不可以寫的)
1、Oracle重做日志文件的定稿是依靠LGWR後台進程
2、.LGWR正在寫的重做日志組稱為:當前重做日志組。
3、重做日志文件------聯機日志文件;歸檔日志文件------脫機日志文件
三、查詢重做日志組:
1、日志組:
select group#, sequence#, members, bytes, status, archived from v$log;
Status列中各值的意義:
Current:當前組。
Inactive:實例恢復已不需要這組日志了
ActivIE:這組日志是活動的,但非當前組。例如正在歸檔。
Unused:此組從未被寫過。是日志剛被添加到DB中的狀態。
2、日志文件:
Select * from v$logfile;
Status列中各值的含義:
空白:此文件正在使用。
Stale:該文件內容是不完全的。
Invalid:該文件不可以被訪問。例如剛建立
Deleted:該文件已不再有用。
四、創建與刪除重做日志文件組:
1、添加刪除重做日志文件組:
Alter database add logfile (‘d:\**.log’, ‘e:\**.log’ ) size15m;
(這樣創建的2個重做日志文件都會是同一組)
Alter database drop logfile group 4;
刪除指定組號的重做日志組(刪除後實際文件並未刪除,需手動刪除)
刪除過程中出現的各種限制條件如下:
current log group當前日志組不可刪除,要刪除當前日志組需要先對當前日志組進行切換,使用命令為alter system switch logfile;
active log group活動的日志組不可刪除
no archived log group沒有歸檔的日志組不可刪除(前提是已運行在歸檔模式下)
2、添加/刪除重做日志文件:
Alter database add logfile member‘d:\red004.log’ to group 1,‘d:\red005.log’ to group2;
Alter database drop logfile member ‘d:\red004.log’;
刪除時遇到的限制條件:
不能刪除當前組的成員,如要刪除則:強制性切換重做日志的命令:alter system switch logfile;
active log group活動的日志成員不可刪除
no archived log group沒有歸檔的日志成員不可刪除(前提是已運行在歸檔模式下)
at least one member per group當日志成員中只有一個成員
特例:
有的時候在刪除重做日志文件redo log file時,會出現如下錯誤
ERROR位於第1行:
ORA-00362:要求輸入成員以組成組4中的有效日志文件
ORA-01517:日志成員: 'C:\Oracle\ORADATA\GXCNC\REDO041.LOG'
(之所以不能drop logfile member from group 2,是因為group 2的其他redo log file的狀態不對。這種情況,應該作幾次alter system switch logfile ,使group 2的其他redo log file的狀態變為正常 就可以了。)