Oracle Redo 以及 Archived日志簡述


Oracle通過Redo Archived實現數據的歸檔

什么是Redo日志

Redo日志記錄了數據的變更,用於在數據庫出現故障后,進行數據恢復。

功能主要由三個組件實現:Redo Log Buffer、LGWR后台進程、Redo Log File。

Redo Log Buffer是Oracle共享內存中的一段空間,記錄了數據庫的變更歷史,包括:insert,update,delete,create,alter,drop等。

過程:

  • 用戶內存中的記錄 --復制--> SGA中的Redo Log Buffer。
  • Redo Log Buffer --LGWR寫入--> Redo Log File中

當用戶積累了一定量的操作后,才會定期的導入到磁盤。

Redo Log Buffer是循環利用的。Redo Log File也是循環利用的。

Redo Log File通過用戶組重用日志,可以通過命令查詢:

select group#,members,status from v$log;

一般來說默認oracle會有3個日志組,每次往一個日志文件里面順序寫,如果寫滿;則會切換日志文件,繼續寫。

什么是Archived日志

Archived日志也叫作歸檔日志,是數據庫運行在歸檔模式下的產物。

可以通過命令查看,數據庫是否運行在歸檔模式下:

select log_mode from v$database;

歸檔模式與非歸檔模式的區別:

  • 歸檔模式,就是當redo日志寫滿后,是否把該日志內容拷貝到歸檔日志進行統一的存儲,避免下次寫入的時候覆蓋。
  • 非歸檔模式,即不適用歸檔模式,當日志寫滿后,直接切換日志,而不做任何的備份。下次輪到寫入該文件時,文件的內容將會被覆蓋。

如何查看歸檔日志

Oracle的歸檔日志以及重做日志都是二進制文件,外部是無法打開的。Oracle提供了一個叫做LogMiner的工具,可以查看日志的內容。

LogMiner其實是Oracle自帶的PLSQL包,大致過程如下:

  • 首先把分析的日志加進去
  • 啟動logminer
  • 在動態視圖v$logmnr_contens中查詢信息
-- 查詢歸檔日志的路徑
select * from v$archived_log;
-- 查詢重做日志的路徑
select * from v$logfile;

-- 通過LogMiner工具把日志中的數據提取出來
begin
  sys.dbms_logmnr.add_logfile(LogFileName => 'D:\APP\XING.HL\ORADATA\ORCL\REDO03.LOG', Options => sys.dbms_logmnr.NEW );
end;

begin
  sys.dbms_logmnr.start_logmnr(Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
end;

-- 查詢視圖中的重做日志
select * from v$logmnr_contents;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM