Oracle錯誤——ORA-03113:通信通道的檔案結尾 解決辦法
原創 fightingKing 最後釋出于2014-09-29 12:19:35 閱讀數 266883 收藏
展開
由來
今天跟往常一樣,登陸PL/SQL,确登陸失敗,出現一個錯誤“ORA-01034”和“ORA-27101”如圖:
然後就就通過指令提示符去登陸Oracle,去檢視怎麼回事,然後問題進一步出現,錯誤“ORA-03113:通信通道的檔案結尾 程序 ID:6320 回話 ID :191 序列号:3”。
問題根源
Oracle出現錯誤,于是去錯誤日志裡去找問題根源:在 e:\app\kang\diag\rdbms\oracle\oracle\trace\檔案夾下找到oracle_ora_6320.trc檔案,打開顯示錯誤日志:
Trace filee:\app\kang\diag\rdbms\oracle\oracle\trace\oracle_ora_6320.trc
Oracle Database 11gEnterprise Edition Release 11.2.0.1.0 - 64bit Production
With thePartitioning, OLAP, Data Mining and Real Application Testing options
Windows NT VersionV6.1 Service Pack 1
CPU : 4 - type 8664, 2 PhysicalCores
Process Affinity : 0x0x0000000000000000
Memory (Avail/Total):Ph:2805M/6087M, Ph+PgF:6761M/12173M
Instance name: oracle
Redo thread mountedby this instance: 1
Oracle processnumber: 19
Windows thread id:6320, image: ORACLE.EXE (SHAD)
*** 2014-08-1608:18:55.461
*** SESSIONID:(191.3) 2014-08-16 08:18:55.461
*** CLIENT ID:()2014-08-16 08:18:55.461
*** SERVICE NAME:()2014-08-16 08:18:55.461
*** MODULENAME:(sqlplus.exe) 2014-08-16 08:18:55.461
*** ACTION NAME:()2014-08-16 08:18:55.461
ORA-19815: 警告:db_recovery_file_dest_size 位元組 (共 4102029312 位元組) 已使用 100.00%, 尚有 0 位元組可用。
************************************************************************
You have followingchoices to free up space from recovery area:
1. Consider changingRMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOGDELETION POLICY.
2. Back up files totertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space andincrease db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessaryfiles using RMAN DELETE command. If an operating
system command was used to delete files,then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
ORA-19809:超出了恢複檔案數的限制
ORA-19804: 無法回收33961984 位元組磁盤空間 (從 4102029312 限制中)
*** 2014-08-1608:18:55.502 4132 krsh.c
ARCH: Error 19809Creating archive log file to'E:\APP\KANG\FLASH_RECOVERY_AREA\ORACLE\ARCHIVELOG\2014_08_16\O1_MF_1_159_%U_.ARC'
*** 2014-08-1608:18:55.502 2747 krsi.c
krsi_dst_fail: dest:1err:19809 force:0 blast:1
DDE: Problem Key 'ORA312' was flood controlled (0x1) (no incident)
ORA-00312: 聯機日志 3 線程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'
ORA-16038: 日志 3sequence# 159 無法歸檔
*** 2014-08-1608:18:55.565
USER (ospid: 6320):terminating the instance due to error 16038
從這裡我們發現了問題的根源:“
ORA-19815: 警告: db_recovery_file_dest_size 位元組 (共 4102029312 位元組) 已使用100.00%, 尚有 0 位元組可用。” 是db_recovery_file_dest_size也叫歸檔日志空間不足導緻的,既然找到問題的根源,那解決起來也就容易了。
解決途徑
空間小,那擺在我們面前辦法就是,一個是将空間設定大點,另一個就是将多餘的檔案删除掉即可,那麼我們就将這兩個辦法都使用一下。
通過指令視窗:
--------設定歸檔日志空間的大小
sqlplus / as sysdba
shutdown abort ----關閉程序
startup mount ---- 裝載資料庫
select * from v$recovery_file_dest; ---查詢歸檔日志
db_recovery_file_dest_size=10737418240; --設定歸檔日志空間為10G
Exit ---到這裡空間大小已經設定完成
--------删除歸檔日志
rmantarget / -----進入rman工具視窗
RMAN>crosscheckarchivelog all; --運作這個指令可以把無效的expired的archivelog标出來。
RMAN>deletenoprompt archivelog until time "sysdate -3"; -- -即删除3天前的歸檔日志
到這裡就徹底ok了。接下來重新打開資料庫:正常使用。
在删除歸檔檔案中有一點要注意,通過指令視窗顯示顯示歸檔檔案都在E:\app\kang\flash_recovery_area\oracle\ARCHIVELOG 下,但是我們不能手工在作業系統中直接把這些檔案删除掉,這是因為在controlfile中記錄着每一個archivelog的相關資訊,當我們在OS中删除這些檔案後,我們的controlfile中仍然記錄着這些archivelog的資訊,是以在Oracle的OEM管理器中還會存在這些日志。因為當我們手工清除archive目錄下的檔案後,這些記錄并沒有被我們從controlfile中清除掉,也就是oracle并不知道這些檔案已經不存在了。是以還是要通過指令視窗去執行删除這些檔案的指令。
後記
歸檔日志其實是為了友善我們在恢複資料庫時使用的,但是有時候這些歸檔日志有時确實會給我們帶來一點點的小麻煩,是以這些歸檔日志還是需要我們去注意的。
————————————————
版權聲明:本文為CSDN部落客「fightingKing」的原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/zwk626542417/article/details/39667999