查看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