ORA-03113:通信通道的文件結尾

ORA-03113:通信通道的文件結尾 進程ID4781
查看alter.log
發現提示聯機日誌文件有問題
網上的方法看不是很懂,看到有很多錯誤
ora-16038:日誌無法歸檔
ora-00312
ORA-19809: limit exceeded for recovery files 
ora-19804:無法回收。。。磁盤空間
原來oracle11g在默認情況下,歸檔日誌是保存在閃存恢復區的,並且閃存恢復區的大小默認是2g,空間滿了之後就沒有辦法再歸檔了。

啓動數據庫到mount狀態,statup mount 更改recovery files空間大小,然後rman,刪除過期的備份,指定備份策略,定期刪除備份。

SQL> show parameter db_recovery_file_dest
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      d:\app\qiao\flash_recovery
                                                 _area
db_recovery_file_dest_size           big integer 2G
 
解決辦法,有3種:
1.加大閃存恢復區。
ALTER SYSTEM SET db_recovery_file_dest_size=50g scope=both;

2.歸檔路徑設置到其它地方。
alter system set log_archive_dest = 其他路徑

3.刪除或轉移歸檔日誌。
打開RMAN
rman target /
RMAN>crosscheck archivelog all;   -- 運行這個命令可以把無效的expired的archivelog標出來。
RMAN>delete expired archivelog all;  -- 直接全部刪除過期的歸檔日誌。
RMAN>delete noprompt archivelog until time "sysdate -3";  --刪除系統當前日期3天前的歸檔,不經過提示、直接刪除。或(DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7')

指定retention的策略(RMAN 的備份保留策略),使得archivelog不至於這樣增加
命令格式:
configure retention policy clear ---------------備份保留策略使用默認值
configure retention policy to none------------不採用任何備份保留策略
configure retention policy to recover window of integer days------------基於時間的備份保留策略,保留幾天前的備份文件
configure retention policy to redundancy integer-------基於冗餘備份的備份保留策略,對備份文件保留幾個冗餘備份
REPORT OBSOLETE命令查看當前處於廢棄狀態的備份文件
DELETE OBSOLET 命令可立刻刪除備份保留策略 不需要的文件(廢棄文件)。


RMAN>configure retention policy to recovery window of 7 days;   保留七天內的所有備份。
RMAN>configure retention policy to redundancy 3;                爲每個數據文件保留3個冗餘備份。
SQL>alter system db_recovery_file_dest_size=4G scope=both;


當然我們可以寫一個簡單的shell腳本,對歸檔日誌進行管理

#!/bin/bash 
#confirm oracle runing environment 
. /home/oracle/.bash_profile 
ps -ef |grep dbw0_$ORACLE_SID | grep -v grep >> /dev/null 
if [ $? -eq 0 ];then 
   rman target / log=/orabackup/delarch`date +%Y%m%d`.log  <<EOF 
   crosscheck archivelog all; 
   delete noprompt  expired archivelog all; 
   backup as compressed backupset archivelog all format '/orabackup/cron-archlog_%U_%d_%T_%s_%p' delete input; 
exit; 
EOF 
fi 

以上腳本對oracle歸檔進行了備份然後刪除,根據自己需要修改,然後添加到crontab

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章