小白入門(八):Oracle開啟歸檔模式以及歸檔詳解
阿新 • • 發佈:2020-12-09
文章目錄
前言
開啟歸檔模式,我們可以進行實現rman的資料備份以及xtts等資料恢復。
開啟歸檔需要停庫操作:建議提前斷掉應用服務,這樣可以正常啟停資料庫,否則需要強行關掉資料庫服務,會造成資料庫回滾時間長。
提示:以下是本篇文章正文內容,下面案例可供參考
一、開啟歸檔:
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list
二、自動啟動歸檔後臺程序:
SQL> show parameter log_archive_start
SQL> alter system set log_archive_start=true scope=spfile;
System altered.
重啟資料庫檢查!
三、ARCn程序設定:
如果資料庫DML操作過於頻繁的話,有可能導致ARCn(歸檔程序)的讀寫跟不上LGWR(重做日誌寫程序),此時資料庫LGWR就會進行等待資料庫將掛起,造成效率下降。
檢視系統ARCn程序數:
SQL> show parameter log_archive_max_processes
SQL> alter system set log_archive_max_processes=6;
System altered.
四、設定所有歸檔日誌檔案路徑:
(8i:5份歸檔檔案、9i和10:10份歸檔檔案、11g和12c:31份歸檔檔案)
SQL> show parameter LOG_ARCHIVE_DEST_
檢視資料字典:
SQL> col DESTINATION for a25
SQL> select destination,binding,target,status from v$archive_dest;
只有啟用一份歸檔日誌檔案,其他都為無效(預設)
更改歸檔檔案路徑(log_archive_dest_1~3):
SQL> alter system set log_archive_dest_1="LOCATION=/data/ARCn_log/desk1 mandatory";
System altered.
LOCATION:代表歸檔檔案存放在本地磁碟上
mandatory:代表該目錄下的日誌檔案是強制的(沒有寫成功前,重做日誌不能重用)
optional:表示日誌檔案是可選的(沒有寫成功,重做日誌可以重用)
預設值:optional
SQL> show parameter log_archive_dest_1
SQL> alter system set log_archive_dest_2="LOCATION=/data/ARCn_log/desk2";
System altered.
SQL> alter system set log_archive_dest_3="LOCATION=/data/ARCn_log/desk3 optional";
System altered.
其他日誌檔案為INACTIVE不可用。(此時資料庫也是一個較為脆弱的狀態,因為只有一個日誌檔案為強制性,如果損壞導致無法完全恢復)
五、重做日誌切換:
以上操作完成後可進行檢視歸檔日誌檔案路徑:
原因:此期間沒有足夠的DML操作 重做日誌不會被填滿,因此也就不能產生歸檔日誌檔案
SQL> alter system switch logfile;
System altered.
六、歸檔檔案管理維護:
由於我們設定只有log_archive_dest_1是mandatory狀態,使資料庫執行在一個很脆弱的狀態,oracle引進log_archive_min_succeed_dest.。
如果log_archive_min_succeed_dest小於或等於mandatory個數=對系統無影響
如果log_archive_min_succeed_dest大於mandatory個數=除了mandatory外,成功的歸檔日誌檔案數至少不能低於這個數值。
SQL> show parameter log_archive_min_succeed_dest
SQL> alter system set log_archive_min_succeed_dest=2;
System altered.
七、關閉/開啟歸檔日誌功能:
通過log_archive_dest_state_n動態引數控制:
SQL> show parameter log_archive_dest_state_
SQL> alter system set log_archive_dest_state_1=defer;
System altered.
DEFER狀態是一個臨時的維護狀態,一旦維護結束要轉回ENABLE狀態
SQL> alter system set log_archive_dest_state_1=enable;