1、問題過程經歷:
客戶反應 數據庫服務器斷電后,導致無法正常連接,剛開始沒有考慮到是oracle數據庫歸檔日志滿了造成了該原因。
(1)、通過 Net Manager去測試,發現是ora-12514的問題,認為可能是監聽服務異常導致的,但是發現oracleservice服務和listener監聽服務都能夠正常啟動,於是沿着這個問題不斷挖掘,修改NETWORK文件夾下的listener.ora和tnsnames.ora兩個文件,追加了orcl的sid_desc
(2)、ora-12514問題解決后,幕后真凶顯露了出來,“ORA-01034”和“ORA-27101”,如下圖:
然后就就通過命令提示符去登陸Oracle,去查看怎么回事,然后問題進一步出現,錯誤“ORA-03113:通信通道的文件結尾進程 ID:6320 回話 ID :191序列號:3”。
(3)問題根源:Oracle出現錯誤,於是去錯誤日志里去找問題根源:F:\app\Administrator\diag\rdbms\orcl\orcl\trace文件夾下找到orcl_arc0_9552.trc文件,打開顯示錯誤日志:
從這里我們發現了問題的根源:“ORA-19815: 警告: db_recovery_file_dest_size 字節 (共 4102029312 字節) 已使用100.00%, 尚有 0 字節可用。”是db_recovery_file_dest_size也叫歸檔日志空間不足導致的,既然找到問題的根源,那解決起來也就容易了。
解決途徑
空間小,那擺在我們面前辦法就是,一個是將空間設置大點,另一個就是將多余的文件刪除掉即可,那么我們就將這兩個辦法都使用一下。
(1)、通過命令窗口:--------設置歸檔日志空間的大小
使用sql命令查看:
Sql>sqlplus / as nolog;---------------------啟動sql*Plus
Sql> connect sys/password@orcl as sysdba;
Sql> archive log list;
SQL> alter system set db_recovery_file_dest_size=10G scope=both; ---增大閃回恢復區。
SQL> alter database open; 重新打開數據庫
SQL> show parameter db_recovery_file_dest_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size big integer 3G
SQL>
/*-------------------------完畢------------------------*/
(2)、通過命令窗口:---通過rman工具窗口刪除歸檔日志
1.指定數據庫實例
C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl
2.連接數據庫
C:/Documents and Settings/Administrator>RMAN TARGET SYS/password@orcl
3.查看歸檔日志的狀態
RMAN> list archivelog all; -- 運行這個命令可以把無效的expired的archivelog標出來。
RMAN>delete expired archivelog all; -- 直接全部刪除過期的歸檔日志。
RMAN>delete noprompt archivelog until time "sysdate -3"; -- 也可以直接用一個指定的日期來刪除。
重新打開數據庫:
SQL> alter database open;
Database altered.
(3)優化設置:
指定retention的策略,使得archivelog不至於這樣增加
1)、RMAN>configure retention policy to recovery window of 7 days;- -即刪除7天前的歸檔日志
2)、SQL>alter system set db_recovery_file_dest_size=10G scope=both; ---增大閃回恢復區。
3)、把archivelog_dest指定到沒有限制的地方
SQL>alter system log_archive_dest='/home/oracle';
SQL> alter database open;
然后重啟數據庫后,系統可以正常使用了。
歸檔日志其實是為了方便我們在恢復數據庫時使用的,但是有時候這些歸檔日志有時確實會給我們帶來一點點的小麻煩,所以這些歸檔日志還是需要我們去注意的。
4)、但是,由於啟用了歸檔日志,即便設置成了200G的使用空間,按照每天2G的數據增長量,也就3個月數據就能達到了,需要定制任務定時清理歸檔日志,而刪除歸檔日志只有在RMAN里才能進行,於是在數據庫服務器上新建一個bat文件(文件名隨意)
編輯此文件為:
rman target 'sys/password' cmdfile 'd:\cmd.txt'―――此處路徑、文件名隨意
在命令中對應的路徑下新建cmd.txt文件,打開編輯此文件,
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
然后在Windows計划任務里添加任務,指定每天定時執行此bat文件。
經過一周的運行,歸檔日志每天定時被清理。系統正常。