Oracle筆記
2024-08-29 13:49:19
供稿:網友
第四章 重做日志
1.基本概念
1. 重做線程(Redo Thread)
在OPS(Oracle Parallel Server)中,每個實例都有一套自己的重做日志文件。
重做線程與實例是一一對應的。
2. SCN(System Change Number)
SCN是用于標識數據庫變化的惟一標識號,其數值是順序遞增的。
3. 重做入口(Redo Entry)
4. 日志序列號
日志序列號是重做日志的使用標識號。當進行日志切換時,日志序列會自動增一,并將其信息寫入控制文件中。
當執行了resetlogs操作后,日志序列號自動復位為1;當數據庫處于archivelog模式時,系統會將日志序列號作為歸檔日志名稱的一部分;在恢復數據庫時,系統正是按日志序列號來引用歸檔日志和重做日志的。
2.歸化重做日志
1. 多元化重做日志
多元化重做日志即鏡像日志成員,通過把同一個日志組的不同日志成員放到不同磁盤是一個好主意,避免磁盤損壞導致實例終止。
應該將使不同日志組成員個數保持相同。
2. 合理設置重做日志尺寸
必須合理設置重做日志尺寸,避免日志切換頻繁增加檢查點次數而降低系統性能。(20~30min切換一次為宜,過大的話有可能導致實例恢復時間太長)
同一日志組成員尺寸必須相同。
3. 選擇合適的日志組個數
選擇不會妨礙LGWR進程工作的最少日志組個數。
當警告文件和LGWR跟蹤文件中出現:
checkpoint not complete或redo log group not archived時應該增加日志組。
3.日志切換
當日志組寫滿之后Oracle Server會自動進行日志切換;另外也可以通過alter system switch logfile進行強制日志切換
4.檢查點
當啟動Oracle Server時,后臺進程SMON總會檢查控制文件、數據文件和重做日志文件的一致性(即三種文件的SCN值是否相同)。
a.當數據文件、控制文件、重做日志文件的當前SCN值完全一致,系統會直接打開有數據文件和重做日志。
b.假如控制文件和數據文件的當前SCN值完全一致,并小于重做日志的當前SCN值,此時需要進行實例恢復(例如shutdown abort;忽然斷電等)
c.假如控制文件和數據文件的當前SCN值不匹配,則表示數據文件或控制文件存在損壞,此時就需要進行介質恢復,以恢復損壞的物理文件。
5.增加重做日志
1. 增加日志組
當警告文件出現了checkpoint not complete時,應該增加日志組。增加日志組的目的是為了確保DBWR進程和ARCH進程不會妨礙LGWR進程的工作,進而提高系統性能。
alter database add logfile
('E:/oracle/oradata/lgtest/newREDO01.LOG', 'F:/oracle/oradata/lgtest/newREDO01.LOG') size 30m;
2. 增加日志成員
增加日志成員即多元化重做日志,避免某個日志組的某個成員損壞后系統不能正常運轉。
Alter database add logfile member
‘F:/oracle/oradata/lgtest/newREDO02.LOG'’ to group 2;
6.改變重做日志位置或名稱
1. 復制重做日志到目標位置
copy E:/oracle/oradata/lgtest/newREDO01.LOG f:/ newREDO01.LOG
2. 改變控制文件所記載的重做日志指針
alter database rename file ‘E:/oracle/oradata/lgtest/newREDO01.LOG’
to ‘f:/ newREDO01.LOG’;
但是不能改變當前正在使用的日志組成員。
7.刪除重做日志
1. 刪除日志成員
alter database drop logfile member 'F:/oracle/oradata/lgtest/newREDO01.LOG'
不能刪除日志組的惟一成員;
當數據庫處于archivelog模式下,確保日志成員所在組已經歸檔;
不能刪除當前日志組的日志成員
2. 刪除日志組
alter database drop logfile group 3;
3. 清除重做日志
alter database clear unarchived logfile group 2;
8.相關的一些腳本
1. 獲取重做線程信息
select thread#, groups, current_group#, sequence# from v$thread
2. 獲取日志組信息或獲取日志組的SCN信息
select * from v$log
3. 獲取重做日志文件名
select * from v$logfile
4. 獲取控制文件所記載的檢查點信息
select checkpoint_change#, name from v$datafile
5. 獲取數據文件所記載的檢查點信息
select checkpoint_change#, name from v$datafile_header
第五章 歸檔日志
歸檔日志即重做日志的備份,使用歸檔日志的目的是為了實現介質恢復。
1.日志操作模式
1. Noarchivelog(非歸檔模式)
不保存重做日志。
不能在open狀態下進行物理備份;要定期執行完全數據庫備份;只能將數據庫恢復到上次的完全備份點。
2. Archivelog
當進行日志切換時,ARCH進程會將重做日志的內容復制到歸檔日志中。
在歸檔重做日志前,新事務變化不能覆蓋舊事務變化。
可以在open 狀態下進行物理備份。
可以將數據庫恢復到失敗前的狀態。
可以是用備份數據庫與主數據庫保持同步。
2.開啟歸檔
1. 改變日志操作模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
修改日志操作模式后,必須重新備份數據庫
2. 歸檔重做日志
1. 手工歸檔
alter system archive log all;
2. 自動歸檔
設置初始化參數:log_archive_start=true
shutdown immediate;
startup pfile=.
3. 檢查日志操作模式
archive log list;
3.指定歸檔位置
1. 使用log_archive_dest
1. 設置歸檔目錄
log_archive_dest log_archive_duplex_dest
2. 設置歸檔日志格式
2. 使用log_archive_dest_n
1. 指定歸檔位置
log_archive_dest_1=’location=f:/arc1’
log_archive_dest_3=’service=standby’
2. 設置其他初始化參數
log_archive_dest_state_1=enable
log_archive_dest_state_3=defer
4.相關的一些腳本
1. 顯示日志操作模式
select log_mode from v$database
2. 顯示歸檔日志信息
select name,sequence#,first_change# from v$archived_log
3. 顯示歸檔日志位置
select destination from v$arvhive_dest
4. 顯示日志歷史信息
select * from v$loghist;