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