Oracle的重做日誌

gholay發表於2014-02-10
重做日誌分為線上重做日誌和歸檔重做日誌。
online Redo log files--線上重做日誌,又稱聯機重做日誌,指Oracle以SQL指令碼的形式實時記錄資料庫的資料更新,換句話說,實時儲存已執行的SQL指令碼到線上日誌檔案中(按特定的格式)。
Archive Redo log files--歸檔重做日誌,簡稱歸檔日誌,指當條件滿足時,Oracle將線上重做日誌以檔案形式儲存到硬碟(持久化)。

重做日誌的簡單原理:在資料更新操作commit前,將更改的SQL指令碼寫入重做日誌。主要用於資料庫的增量備份和增量恢復。 

重做日誌直接對應於硬碟的重做日誌檔案(有線上和歸檔二種),重做日誌檔案以組(Group)的形式組織,一個重做日誌組包含一個或者多個日誌檔案。



Oracle線上重做日誌檔案詳解
1:檢視資料庫線上重做日誌檔案的歸檔方式
ARCHIVE LOG list;
2:檢視日誌組
SELECT * FROM v$log;
3:檢視日誌組成員
SELECT * FROM v$logfile;
--備註:經分系統BONCBI資料庫日誌沒做歸檔就不說了,既然只有3個日誌組,而且既然每個日誌組只有一個成員,悲劇啊!
4:新增一個日誌組:
ALTER DATABASE ADD LOGFILE GROUP 4 ('/dev/rlv_vgdb9_data22','/dev/rlv_vgdb9_data23','/dev/rlv_vgdb9_data24') SIZE 8191m;
--這樣,就最增一個日誌組,且這個日誌組裡有3個成員每個成員8191MB大小。
5:給某個日誌組新增一個成員
ALTER DATABASE ADD LOGFILE MEMBER '/dev/rlv_vgdb9_data25' TO GROUP 4;
--注意,這裡不需要指定日誌組成員的大小。
6:刪除日誌組
ALTER DATABASE DROP LOGFILE GROUP 4;
--注意:當前日誌組不能刪,活動的日誌組不能刪,沒有歸檔的日誌組不能刪。
7:刪除日誌組成員
ALTER DATABASE DROP LOGFILE MEMBER '/dev/rlv_vgdb9_data25';
--注意:每個組至少要保留一個成員;
8:兩個概念需要注意:
8.1:日誌切換
ALTER SYSTEM SWITCH LOGFILE;
--所謂日誌切換就是停止寫當前組,轉而寫一個新組,系統可以自動發生,也可以手工完成。
--當發生SWITCH LOGFILE時,系統會在後臺完成CHECKPOINT的操作
--手動切換日誌組
--日誌組A:當前正在寫。
--日誌組B:可寫。
--CHECKPOINT保證控制檔案,資料檔案頭,日誌檔案頭的SCN一致是資料庫保持資料完整性的一個重要機制
--手動切換日誌組後,ORACLE開始往日誌組B寫日誌,並進行一次CHECKPOINT,把日誌組A裡沒有經過CHECKPOINT的那部分日誌對應的DIRTY BUFFER從BUFFER CACHE裡寫到
--資料檔案裡。CHECKPOING完成後
--日誌組A:可寫。
--日誌組B:當前正在寫。
--另外,ALTER TABLESPACE USER BEGIN BACKUP,DROP TABLE,TRUNCATE TABLE都會引發CHECKPOINT操作
--除了以上所手動,及自動CHECKPOINT之外,還可以通過一些引數來控制CHECKPOINT
--FAST_START_MTTR_TARGET(MTTR:資料恢復的時間間隔)
--checkpoints用來同步,同步頻率越高,發生系統錯誤時所需RECOVERY時間越短
--同步相關的引數:FAST_START_MTTR_TARGET(資料庫通過它來改變後面3個引數),fast_start_io_target,log_checkpoint_interval,log_checkpoint_timeout
9:初始化日誌檔案
ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE '/dev/rlv_vgdb9_data25';
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 5(清空沒有歸檔的日誌檔案,實際備份產生斷點)
10:重新命名日誌檔案
1>:在作業系統上把檔案改名或移動(如果有OMF就不需要這樣做了)
2>:ALTER DATABASE RENAME FILE '/dev/rlv_vgdb9_data25' TO '/dev/rlv_vgdb9_data26';
11:通過OMF管理REDO LOG 檔案
SHOW PARAEMTERS DB_CREATE_ONLINE
ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_1='/ORACLE/ORALOG/OMF';
ALTER DATABASE ADD LOGFILE GROUP 6;(名子由ORACLE派生,大小100M)
ALTER DATABASE DROP LOGFILE GROUP 6;(自己刪除)


兩個專題
一:檢視oracle資料庫是否歸檔和修改歸檔模式
首先檢視資料庫現有模式可使用以下語句
select name,log_mode from v$database;
也可以用下面的語句
archive log list;(該方法需要as sysdba)
對於非歸檔模式的資料庫該為歸檔模式(主要以Oracle 10g為參考通過OMF來管理)使用以下步驟:
1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
該語句含義是確定歸檔日誌的路徑,實際上Oracle 10g可以生成多份一樣的日誌,儲存多個位置,以防不測
例如再新增一個日誌位置可使用以下語句
SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';
2.關閉資料庫
SQL> shutdown immediate 
3.啟動資料mount狀態:
SQL> startup mount;
4、修改資料庫為歸檔模式:
SQL> alter database archivelog; 
5、開啟資料庫,查詢:
SQL> alter database open;
修改日誌檔案命名格式:
SQL> alter system set log_archive_max_processes = 5;
SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;
修改完成後可以檢視日誌模式是否修改成功!
特別指出的是在Oracle 9i中還要修改引數log_archive_start = true才能生效,oracle 10g中已經廢除了該引數,所以不需要設定該引數。


二:修改oracle日誌檔案大小 
1、建立2個新的日誌組
alter database add logfile group 4 ('D:ORACLEORADATAORADBREDO04_1.LOG') size 1024k;
alter database add logfile group 5 ('D:ORACLEORADATAORADBREDO05_1.LOG') size 1024k;
2、切換當前日誌到新的日誌組
alter system switch logfile;
alter system switch logfile;
3、刪除舊的日誌組
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
4、作業系統下刪除原日誌組1、2、3中的檔案
5、重建日誌組1、2、3
alter database add logfile group 1 ('D:ORACLEORADATAORADBREDO01_1.LOG') size 10M;
alter database add logfile group 2 ('D:ORACLEORADATAORADBREDO02_1.LOG') size 10M;
alter database add logfile group 3 ('D:ORACLEORADATAORADBREDO03_1.LOG') size 10M;
6、切換日誌組
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
7、刪除中間過渡用的日誌組4、5
alter database drop logfile group 4;
alter database drop logfile group 5;
8、到作業系統下刪除原日誌組4、5中的檔案
9、備份當前的最新的控制檔案
SQL> connect / as sysdba
SQL> alter database backup controlfile to trace resetlogs

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1079179/,如需轉載,請註明出處,否則將追究法律責任。

相關文章