Oracle重做日志的實現(xiàn)方法
Oracle重做日志操作是為了記錄數(shù)據(jù)的改變,提供數(shù)據(jù)庫的恢復,下面就為您介紹重做日志的運行流程,希望對您能夠有所幫助。
一、ORACLE引入重做日志目的:記錄數(shù)據(jù)的改變,提供數(shù)據(jù)庫的恢復。
1、日志文件需要分組,同一個重做日志組的每個成員所存的信息完全相同。
2、每個組中的重做日志文件均被稱為成員
3、每組最好有2、3個成員,分別放置不同的物理磁盤,這樣安全性較高。
4、最少需要兩個重做日志組
二、Oracle重做日志的運行流程:
Oracle重做日志按照有序循環(huán)的方式被使用,即當一組日志文件被填滿后,循環(huán)覆蓋下一組日志文件,不斷循環(huán)。此時稱為日志切換。檢查點操作也在此時發(fā)生,檢查點操 作是用來實現(xiàn)同步的,它會寫數(shù)據(jù)文件的頭信息、控制文件。在歸檔模式下,當一組日志文件被填滿后,ARCH(歸檔寫進程)將這組復制到歸檔日志文件 中。(在ARCH正在寫的重做日志文件LGWR是不可以寫的)
1、Oracle重做日志文件的定稿是依靠LGWR后臺進程
2、.LGWR正在寫的重做日志組稱為:當前重做日志組。
3、重做日志文件------聯(lián)機日志文件;歸檔日志文件------脫機日志文件
三、查詢重做日志組:
1、日志組:
select group#, sequence#, members, bytes, status, archived from v$log;
Status列中各值的意義:
Current:當前組。
Inactive:實例恢復已不需要這組日志了
Activie:這組日志是活動的,但非當前組。例如正在歸檔。
Unused:此組從未被寫過。是日志剛被添加到DB中的狀態(tài)。
2、日志文件:
Select * from v$logfile;
Status列中各值的含義:
空白:此文件正在使用。
Stale:該文件內容是不完全的。
Invalid:該文件不可以被訪問。例如剛建立
Deleted:該文件已不再有用。
四、創(chuàng)建與刪除重做日志文件組:
1、添加刪除重做日志文件組:
Alter database add logfile (‘d:\**.log’, ‘e:\**.log’ ) size15m;
(這樣創(chuàng)建的2個重做日志文件都會是同一組)
Alter database drop logfile group 4;
刪除指定組號的重做日志組(刪除后實際文件并未刪除,需手動刪除)
刪除過程中出現(xiàn)的各種限制條件如下:
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時,會出現(xiàn)如下錯誤
ERROR位于第1行:
ORA-00362:要求輸入成員以組成組4中的有效日志文件
ORA-01517:日志成員: 'C:\ORACLE\ORADATA\GXCNC\REDO041.LOG'
(之所以不能drop logfile member from group 2,是因為group 2的其他redo log file的狀態(tài)不對。這種情況,應該作幾次alter system switch logfile ,使group 2的其他redo log file的狀態(tài)變?yōu)檎?就可以了。)
【編輯推薦】
acle時間加減的語句寫法