DG备库磁盘空间满导致无法创建归档
生活随笔
收集整理的這篇文章主要介紹了
DG备库磁盘空间满导致无法创建归档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上周五去某客戶那里做數據庫巡檢。是window 2008系統上10g的一套NC系統的庫,已經配置了DG,可是巡檢時發現數據庫報錯:
Tue Nov 11 10:13:57 2014 LNS: Standby redo logfile selected for thread 1 sequence 3945 for destination LOG_ARCHIVE_DEST_2 Tue Nov 11 10:14:29 2014 Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc: ORA-16401: archivelog rejected by RFS
FAL[server, ARC0]: FAL archive failed, see trace file. Sun Nov 16 04:05:12 2014 Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc: ORA-16055: FAL request rejected
ARCH: FAL archive failed. Archiver continuing Sun Nov 16 04:05:15 2014 Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc: ORA-00270: error creating archive log?
提示歸檔日志被RFS進程拒絕。FAL進程請求被拒絕,無法創建歸檔日志
*** 2014-11-11 10:14:29.806 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS *** 2014-11-11 10:15:29.900 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS *** 2014-11-11 10:16:29.962 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS *** 2014-11-11 10:17:30.025 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS *** 2014-11-11 10:18:30.088 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS
查看trace文件nc_arc0_177356.trc得知。從11月11日上午10點14分開始報錯,也是類似的提示。再目標主機無法創建歸檔日志文件,平均1分鐘報一次錯誤。在備庫查看,發現原來是由于沒有定期清理主庫傳遞過來的歸檔日志。磁盤空間耗盡了。
70G空間所實用完了,因為客戶的磁盤本來就比較小,當中一部分還用來存放數據文件,本身就要占用47G。
最后一個歸檔日志是11月11日,7:25生成的,后面就沒有了,這和trace文件里的報錯也是符合的。因為這個時刻耗盡了磁盤的最后一些空間,進而造成了主庫報警日志中出現的無法創建遠程歸檔的錯誤,既然找到問題了,那么處理就easy了,先把備庫應用過的歸檔刪除掉。釋放磁盤空間。
因為備庫歸檔存在GAP,而且這些GAP在主庫的歸檔中也已經沒有了,主庫并沒有保留許多的歸檔。切歸檔日志也沒有單獨做備份集,因此僅僅能是又一次配置DG Configuration。
今天過去客戶那邊,把DG又一次配置了一下。
由于可用磁盤空間仍然比較小,因此這次專門給客戶配置了自己主動刪除備庫歸檔日志的腳本。主要用到了3個文件。大致內容例如以下:
--delete_dg_archivelog cd D:\archivelogdel d:? sqlplus / as sysdba @delete_archive.sql? echo rman target / cmdfile=rman_checkcross.rman>>delete_archivelog.bat? delete_archivelog.bat >>delete_dg_archivelog_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log? exit?
--delete_archive.sql? set lines 150? col name for a150? set pagesize 0 feedback off verify off heading off echo off? spool delete_archivelog.bat? select 'del '||name from v$archived_log where APPLIED='YES' AND NAME IS NOT NULL and DEST_ID=1;? spool off? exit;?
--rman_checkcross.rman? crosscheck archivelog all;? delete noprompt expired archivelog all;? exit?
以下來說明一下這個腳本。當中第一個bat腳本就是去調用了delte_archive.sql和rman_checkcross.rman這2個命令文件。最基本的就是delete_archive.sql這個腳本的運行內容,用SQL拼接的方式找出已經應用過的歸檔文件,然后生成del命令。在OS級別刪除它們。最后再調用rman命令交叉校驗,最后刪除expired的歸檔日志(OS級別的刪了。也要通知控制文件這些歸檔已經不存在了。須要刪除),假設日志還未在備庫應用。那么之前的那條select語句是不會查詢出行記錄的。
今天第一次做的時候delete_archivelog.sql中select語句用DEST_ID=1的時候。竟然沒查到數據行。用了DEST_ID=2才有結果。而后來又碰到用DEST_ID=2沒結果,于是又換回DEST_ID=1才行。事實上最基本的就是要關注SQL腳本要跑出結果。否則之前的那些命令都等于不起作用了。沒有結果,OS命令就不會去del這些文件,而假設OS級別沒有del掉這些文件,那么RMAN就檢查不出是expired的,因此也就不會從控制文件里刪除這些歸檔的相關記錄。
最后把這個腳本加入到windows任務計劃中定期執行就可以,因為客戶的日志切換頻率并不高,因此暫定為每周清一次歸檔。
Tue Nov 11 10:13:57 2014 LNS: Standby redo logfile selected for thread 1 sequence 3945 for destination LOG_ARCHIVE_DEST_2 Tue Nov 11 10:14:29 2014 Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc: ORA-16401: archivelog rejected by RFS
FAL[server, ARC0]: FAL archive failed, see trace file. Sun Nov 16 04:05:12 2014 Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc: ORA-16055: FAL request rejected
ARCH: FAL archive failed. Archiver continuing Sun Nov 16 04:05:15 2014 Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc: ORA-00270: error creating archive log?
提示歸檔日志被RFS進程拒絕。FAL進程請求被拒絕,無法創建歸檔日志
*** 2014-11-11 10:14:29.806 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS *** 2014-11-11 10:15:29.900 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS *** 2014-11-11 10:16:29.962 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS *** 2014-11-11 10:17:30.025 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS *** 2014-11-11 10:18:30.088 tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2) tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2) Error 16401 creating standby archive log file at host 'ncdg' ORA-16401: archivelog rejected by RFS
查看trace文件nc_arc0_177356.trc得知。從11月11日上午10點14分開始報錯,也是類似的提示。再目標主機無法創建歸檔日志文件,平均1分鐘報一次錯誤。在備庫查看,發現原來是由于沒有定期清理主庫傳遞過來的歸檔日志。磁盤空間耗盡了。
70G空間所實用完了,因為客戶的磁盤本來就比較小,當中一部分還用來存放數據文件,本身就要占用47G。
最后一個歸檔日志是11月11日,7:25生成的,后面就沒有了,這和trace文件里的報錯也是符合的。因為這個時刻耗盡了磁盤的最后一些空間,進而造成了主庫報警日志中出現的無法創建遠程歸檔的錯誤,既然找到問題了,那么處理就easy了,先把備庫應用過的歸檔刪除掉。釋放磁盤空間。
因為備庫歸檔存在GAP,而且這些GAP在主庫的歸檔中也已經沒有了,主庫并沒有保留許多的歸檔。切歸檔日志也沒有單獨做備份集,因此僅僅能是又一次配置DG Configuration。
今天過去客戶那邊,把DG又一次配置了一下。
步驟事實上非常easy,由于之前已經配置過一次,這次僅僅要是同步一下即可了,不須要改動參數,拷貝參數文件、password文件、tnsnames.ora、listener.ora等,僅僅須要在主庫創建一個備庫控制文件,然后再把主庫的RMAN備份集拿到備庫去恢復即可了。詳細過程這里就不寫了,配置完DG后。檢查兩邊歸檔路徑狀態,確定沒有error后開啟redo apply。備庫就又和主庫數據同步了。
由于可用磁盤空間仍然比較小,因此這次專門給客戶配置了自己主動刪除備庫歸檔日志的腳本。主要用到了3個文件。大致內容例如以下:
--delete_dg_archivelog cd D:\archivelogdel d:? sqlplus / as sysdba @delete_archive.sql? echo rman target / cmdfile=rman_checkcross.rman>>delete_archivelog.bat? delete_archivelog.bat >>delete_dg_archivelog_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log? exit?
--delete_archive.sql? set lines 150? col name for a150? set pagesize 0 feedback off verify off heading off echo off? spool delete_archivelog.bat? select 'del '||name from v$archived_log where APPLIED='YES' AND NAME IS NOT NULL and DEST_ID=1;? spool off? exit;?
--rman_checkcross.rman? crosscheck archivelog all;? delete noprompt expired archivelog all;? exit?
以下來說明一下這個腳本。當中第一個bat腳本就是去調用了delte_archive.sql和rman_checkcross.rman這2個命令文件。最基本的就是delete_archive.sql這個腳本的運行內容,用SQL拼接的方式找出已經應用過的歸檔文件,然后生成del命令。在OS級別刪除它們。最后再調用rman命令交叉校驗,最后刪除expired的歸檔日志(OS級別的刪了。也要通知控制文件這些歸檔已經不存在了。須要刪除),假設日志還未在備庫應用。那么之前的那條select語句是不會查詢出行記錄的。
今天第一次做的時候delete_archivelog.sql中select語句用DEST_ID=1的時候。竟然沒查到數據行。用了DEST_ID=2才有結果。而后來又碰到用DEST_ID=2沒結果,于是又換回DEST_ID=1才行。事實上最基本的就是要關注SQL腳本要跑出結果。否則之前的那些命令都等于不起作用了。沒有結果,OS命令就不會去del這些文件,而假設OS級別沒有del掉這些文件,那么RMAN就檢查不出是expired的,因此也就不會從控制文件里刪除這些歸檔的相關記錄。
最后把這個腳本加入到windows任務計劃中定期執行就可以,因為客戶的日志切換頻率并不高,因此暫定為每周清一次歸檔。
總結
以上是生活随笔為你收集整理的DG备库磁盘空间满导致无法创建归档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 完整iOS APP发布App Store
- 下一篇: 修改Chrome的UserAgent