Oracle錯誤——ORA-03113:在通信信道文件的末尾 解決方案


 

起源

 

今天跟往常一樣,登陸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 無法歸檔
ORA-19809:超出了恢復文件數的限制
ORA-00312: 聯機日志 3 線程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'
 
*** 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也叫歸檔日志空間不足導致的。既然找到問題的根源,那解決起來也就easy了。

 

解決途徑

 

空間小,那擺在我們面前辦法就是,一個是將空間設置大點,還有一個就是將多余的文件刪除掉就可以。那么我們就將這兩個辦法都使用一下。

 

通過命令窗體:

--------設置歸檔日志空間的大小

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並不知道這些文件已經不存在了。

所以還是要通過命令窗體去運行刪除這些文件的命令。

 

后記

 

歸檔日志事實上是為了方便我們在恢復數據庫當使用。但有時這些歸檔日志有時確實給我們的小問題一點點,因此,這些存檔日志,或者需要我們注意。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM