昨天Oracle數據庫沒法打開,報錯ora-09925:Unable to create audit trail file,經查,報錯緣由爲數據庫歸檔存儲已滿,沒法建立新的歸檔日誌致使數據庫沒法打開。sql
[oracle@tips ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.3.0 Production on Mon Nov 26 04:27:58 2012Connected to an idle instance.SQL> startupORA-09925: Unable to create audit trail fileLinux-x86_64 Error: 2: No such file or directoryAdditional information: 9925SQL> exit複製代碼
解決這種因歸檔存滿數據庫宕掉的問題有三種辦法:數據庫
1.增大db_recovery_file_dest_size值
2.更換歸檔日誌路徑
3.檢查失效的歸檔日誌文件,而後刪除(或者刪除N天之前的歸檔日誌)
bash
由於數據庫沒法正常進入,沒有辦法修改數據庫的參數,因此我選擇第三種。oracle
首先找到歸檔日誌存放路徑,而後刪除時間最久遠的歸檔日誌(刪兩個保證數據庫能夠開啓便可)。ui
[oracle@YJH ~]$ cd /u01/flash_recovery_area/PROD/archivelog/
[oracle@YJH archivelog]$ ll
total 112
drwxr-x--- 2 oracle oinstall 4096 Feb 15 15:19 2018_04_09
drwxr-x--- 2 oracle oinstall 4096 Feb 15 15:19 2018_11_13
drwxr-x--- 2 oracle oinstall 4096 Feb 15 15:19 2018_11_16
drwxr-x--- 2 oracle oinstall 4096 Feb 15 15:19 2018_11_19
……複製代碼
第二步:數據庫能夠開啓後進入RMAN清理失效歸檔(最好能夠先對數據庫作好備份)spa
[oracle@YJH ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on 星期一 2月 25 11:03:41 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: PROD (DBID=335947904)
RMAN> backup database format='/u01/myrman/prod_%s.bak' filesperset 3;
複製代碼
查看所有歸檔日誌:
RMAN> list
archivelog all;
清理失效歸檔日誌:
RMAN> delete expired archivelog all;
RMAN> crosscheck archivelog all;
刪除當前系統時間一天以前的所有歸檔日誌:
RMAN> delete archivelog all completed before 'sysdate-1';
刪除七天之內的歸檔日誌:
RMAN> delete archivelog from time 'sysdate-7';
複製代碼
數據庫歸檔整理完成。日誌
能夠使用如下方式查詢歸檔相關信息:code
1.查看歸檔空間佔用率orm
select * from v$flash_recovery_area_usage;
複製代碼
2.查看歸檔日誌存放位置ip
select * from v$recovery_file_dest;
複製代碼
3.修改歸檔存儲上限
SQL> alter system set db_recovery_file_dest_size=4294967296;
4x1024x1024x1024)
System altered.
SQL> show parameter db_recovery_file
NAME TYPE VALUE
----------------------- ----------- ------------------------------
db_recovery_file_dest string /u01/arch
db_recovery_file_dest_size big integer 4G複製代碼