Oracle错误——ORA-03113:通信通道的文件结尾 解决办法

本文介绍了Oracle数据库归档日志空间不足导致的ORA-03113错误,并提供了解决方案,包括调整归档日志空间大小及删除过期归档日志。
 

Oracle错误——ORA-03113:通信通道的文件结尾 解决办法

  70743人阅读  评论(12)  收藏  举报
  分类:

目录(?)[+]

 

由来

 

今天跟往常一样,登陆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文件,打开显示错误日志:

 

[plain]  view plain  copy
  1. Trace filee:\app\kang\diag\rdbms\oracle\oracle\trace\oracle_ora_6320.trc  
  2. Oracle Database 11gEnterprise Edition Release 11.2.0.1.0 - 64bit Production  
  3. With thePartitioning, OLAP, Data Mining and Real Application Testing options  
  4. Windows NT VersionV6.1 Service Pack 1  
  5. CPU                 : 4 - type 8664, 2 PhysicalCores  
  6. Process Affinity    : 0x0x0000000000000000  
  7. Memory (Avail/Total):Ph:2805M/6087M, Ph+PgF:6761M/12173M  
  8. Instance name: oracle  
  9. Redo thread mountedby this instance: 1  
  10. Oracle processnumber: 19  
  11. Windows thread id:6320, image: ORACLE.EXE (SHAD)  
  12.    
  13.    
  14. *** 2014-08-1608:18:55.461  
  15. *** SESSIONID:(191.3) 2014-08-16 08:18:55.461  
  16. *** CLIENT ID:()2014-08-16 08:18:55.461  
  17. *** SERVICE NAME:()2014-08-16 08:18:55.461  
  18. *** MODULENAME:(sqlplus.exe) 2014-08-16 08:18:55.461  
  19. *** ACTION NAME:()2014-08-16 08:18:55.461  
  20.    
  21. ORA-19815: 警告:db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用 100.00%, 尚有 0 字节可用。  
  22. ************************************************************************  
  23. You have followingchoices to free up space from recovery area:  
  24. 1. Consider changingRMAN RETENTION POLICY. If you are using Data Guard,  
  25.    then consider changing RMAN ARCHIVELOGDELETION POLICY.  
  26. 2. Back up files totertiary device such as tape using RMAN  
  27.    BACKUP RECOVERY AREA command.  
  28. 3. Add disk space andincrease db_recovery_file_dest_size parameter to  
  29.    reflect the new space.  
  30. 4. Delete unnecessaryfiles using RMAN DELETE command. If an operating  
  31.    system command was used to delete files,then use RMAN CROSSCHECK and  
  32.    DELETE EXPIRED commands.  
  33. ************************************************************************  
  34. ORA-19809:超出了恢复文件数的限制  
  35. ORA-19804: 无法回收33961984 字节磁盘空间 (从 4102029312 限制中)  
  36. *** 2014-08-1608:18:55.502 4132 krsh.c  
  37. ARCH: Error 19809Creating archive log file to'E:\APP\KANG\FLASH_RECOVERY_AREA\ORACLE\ARCHIVELOG\2014_08_16\O1_MF_1_159_%U_.ARC'  
  38. *** 2014-08-1608:18:55.502 2747 krsi.c  
  39. krsi_dst_fail: dest:1err:19809 force:0 blast:1  
  40. DDE: Problem Key 'ORA312' was flood controlled (0x1) (no incident)  
  41. ORA-00312: 联机日志 3 线程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'  
  42. ORA-16038: 日志 3sequence# 159 无法归档  
  43. ORA-19809:超出了恢复文件数的限制  
  44. ORA-00312: 联机日志 3 线程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'  
  45.    
  46. *** 2014-08-1608:18:55.565  
  47. 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也叫归档日志空间不足导致的,既然找到问题的根源,那解决起来也就容易了。

 

解决途径

 

空间小,那摆在我们面前办法就是,一个是将空间设置大点,另一个就是将多余的文件删除掉即可,那么我们就将这两个办法都使用一下。

 

通过命令窗口:

--------设置归档日志空间的大小

[sql]  view plain  copy
  1. sqlplus / as sysdba  
  2. shutdown abort     ----关闭进程  
  3. startup mount       ---- 装载数据库  
  4. select * from v$recovery_file_dest; ---查询归档日志  
  5. db_recovery_file_dest_size=10737418240; --设置归档日志空间为10G  
  6. Exit ---到这里空间大小已经设置完成  


 

--------删除归档日志

[sql]  view plain  copy
  1. rmantarget /   -----进入rman工具窗口  
  2. RMAN>crosscheckarchivelog all;  --运行这个命令可以把无效的expired的archivelog标出来。  
  3. RMAN>deletenoprompt archivelog until time "sysdate -3";  -- -即删除3天前的归档日志  
  4.    


到这里就彻底ok了。接下来重新打开数据库:正常使用

 

在删除归档文件中有一点要注意,通过命令窗口显示显示归档文件都在E:\app\kang\flash_recovery_area\oracle\ARCHIVELOG  下,但是我们不能手工在操作系统中直接把这些文件删除掉,这是因为在controlfile中记录着每一个archivelog的相关信息,当我们在OS中删除这些文件后,我们的controlfile中仍然记录着这些archivelog的信息,因此在Oracle的OEM管理器中还会存在这些日志。因为当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了。所以还是要通过命令窗口去执行删除这些文件的命令。

 

后记

 

归档日志其实是为了方便我们在恢复数据库时使用的,但是有时候这些归档日志有时确实会给我们带来一点点的小麻烦,所以这些归档日志还是需要我们去注意的。

  

4
 
0
 
 
我的同类文章

参考知识库

img
Oracle知识库

img
操作系统知识库

img
MySQL知识库

猜你在找
Oracle数据库从入门到精通
Oracle高级项目教学
windows server 2008 r2服务器操作系统
Oracle、SQL、PLSQL 编程从入门到精通
Oracle之PL/SQL编程从入门到精通
ORA-03113 end-of-file on communication channel 通信通道的文件结尾Oracle数据库启动异常
oracle 11g startup时报ora-03113通信通道的文件结尾
ORA-03113通信通道的文件结尾 因为 db_recovery_file_dest_size设置小 导致联机日志不能归档 Oracle不能起来
提示ORA-03113通信通道的文件结尾解决
启动数据库时提示ORA-03113 通信通道的文件结尾解决方法
id="iframeu1607657_0" src="http://pos.baidu.com/octm?rdid=1607657&dc=2&di=u1607657&dri=0&dis=0&dai=1&ps=4807x319&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1476167752298&ti=Oracle%E9%94%99%E8%AF%AF%E2%80%94%E2%80%94ORA-03113%3A%E9%80%9A%E4%BF%A1%E9%80%9A%E9%81%93%E7%9A%84%E6%96%87%E4%BB%B6%E7%BB%93%E5%B0%BE%20%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95%20-%20%E7%AC%AC%E4%B9%9D%E6%9C%9F%20-%20%E5%8D%9A%E5%AE%A2%E9%A2%91%E9%81%93%20-%20youkuaiyun.com&ari=2&dbv=2&drs=1&pcs=1294x752&pss=1294x4872&cfv=0&cpl=5&chi=1&cce=true&cec=UTF-8&tlm=1476167752&rw=752&ltu=http%3A%2F%2Fblog.youkuaiyun.com%2Fzwk626542417%2Farticle%2Fdetails%2F39667999&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DhpymkpVQC3QFZniCWRGmPW_Lc8xxnxRRPmTlGe1N1xPbKBhfo12VGvdvwU-PQBgJzIKElPcSvN9ZD0br-xAtU_RjP9Dm4dgudsJerq_DmvO%26wd%3D%26eqid%3Dbc602518000061520000000557fc882a&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=7&col=zh-CN&cdo=-1&tcn=1476167752&qn=16006bfb331d70f2&tt=1476167751985.332.950.960" width="728" height="90" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;">
查看评论
12楼  Mr不待见前天 12:10发表 [回复]
如何进入 rman
11楼  黎明的蜗牛2014-12-04 16:03发表 [回复]
宝贵的经验和错误,谢谢楼主分享
10楼  ironxue2014-10-31 19:58发表 [回复]
实践出真知,顶楼主。
9楼  赵栗婧2014-10-29 17:31发表 [回复]
归档日志有利有弊
8楼  suyongsutao2014-10-28 08:54发表 [回复]
虽然网上已有很多方法,但是楼主的很有条理,赞
7楼  zhuojiajin2014-09-30 20:25发表 [回复]
宝贵的经验和错误
6楼  liu_yujie2011com2014-09-30 17:51发表 [回复]
归档日志其实是为了方便我们在恢复数据库时使用的
5楼  dandanzmc2014-09-30 17:03发表 [回复]
宝贵的经验,谢谢分享
4楼  陈丽娜2014-09-30 15:48发表 [回复]
归档日志了解了,以后会注意!
3楼  米老师2014-09-30 11:19发表 [回复]
这些经历是非常宝贵的,这些就是所谓的工作经验。这些经历是非常宝贵的,这些就是所谓的工作经验。
2楼  颖杰2014-09-30 06:28发表 [回复]
发现问题、解决问题。这些归档日志还是需要我们去注意。以后注意了。
1楼  弯_弯2014-09-29 19:57发表 [回复]
数据库最喜欢因为日志而报错误
<think>好的,我现在需要帮助用户解决ORA-03113ORA-03114这两个Oracle数据库错误。首先,我得回忆一下这两个错误的常见原因和解决方法。根据用户提供的引用内容,他们可能已经尝试过一些方法,但问题仍未解决。我需要综合这些引用信息,并结合我的知识,给出结构清晰的解决方案。 首先,ORA-03113通常与通信中断有关,可能是网络问题、数据库服务未启动或配置错误。而ORA-03114则表明客户端未连接到数据库实例,可能由于监听程序问题、权限不足或参数设置不当。 接下来,我需要按照用户的要求,分步骤解答,确保每个步骤都有详细说明。可能需要检查监听器状态、数据库实例状态、参数设置,比如引用中提到的_optimizer_join_elimination_enabled参数,以及恢复区大小设置。同时,用户提供的引用中提到了使用sqlplus连接和修改参数的方法,这些需要整合到解决方案中。 另外,用户希望生成相关问题,我需要考虑用户在解决这些错误后可能遇到的后续问题,比如其他相关错误、性能调优或参数调整等。这些问题应该与当前主题相关,帮助用户扩展知识。 需要注意的是,回答要使用中文,行内公式用$...$,独立公式用$$...$$,但这里可能涉及较少数学公式,更多是代码块和命令。确保代码块正确,比如引用中的SQL命令要准确无误。 还要检查是否引用了提供的引用内容,比如在禁用优化器参数或调整恢复区大小时,正确标注引用来源。同时,避免直接复制粘贴,而是用自己的话解释步骤,保持自然。 最后,确保回答结构清晰,步骤有序,帮助用户逐步排查和解决问题,并验证解决方案的有效性。可能还需要提醒用户进行备份或谨慎操作,尤其是在修改数据库参数时。</think>### ORA-03113ORA-03114 错误解决方案 #### 一、错误原因分析 1. **ORA-03113**: 通信通道异常终止,通常由以下原因引起: - 数据库实例未启动或异常关闭 - 网络连接中断或监听程序故障 - 存储空间不足(如恢复区满)[^2] 2. **ORA-03114**: 未连接到Oracle实例,常见原因包括: - 监听程序未正确配置 - 用户权限不足 - 参数设置冲突(如优化器参数问题)[^3] #### 二、分步解决方案 **步骤1:检查数据库状态** ```sql sqlplus / as sysdba SQL> SELECT status FROM v$instance; ``` - 若状态为 `MOUNTED` 或 `SHUTDOWN`,需启动数据库: ```sql SQL> shutdown abort; SQL> startup mount; SQL> alter database open; ``` **步骤2:验证恢复区配置** 检查恢复区大小是否不足: ```sql SQL> show parameter db_recover_file_dest_size; ``` 若容量不足,调整为5G: ```sql SQL> alter system set db_recover_file_dest_size=5G scope=both; ``` [^2] **步骤3:禁用冲突参数** 针对优化器参数冲突问题: ```sql SQL> SELECT value FROM v$parameter WHERE name = '_optimizer_join_elimination_enabled'; SQL> alter system set "_optimizer_join_elimination_enabled"=false scope=both; ``` [^3] **步骤4:检查监听服务** - Linux环境下执行: ```bash lsnrctl status lsnrctl start ``` - Windows环境下通过服务管理器启动 `OracleOraDB19Home1TNSListener` **步骤5:验证网络配置** 检查 `tnsnames.ora` 和 `listener.ora` 的配置一致性: ```text # tnsnames.ora 示例 ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)) ) ``` #### 三、验证解决方案 1. 重启数据库实例 2. 使用不同客户端工具测试连接 3. 监控 `alert.log` 日志文件: ```bash tail -f $ORACLE_BASE/diag/rdbms/orcl/orcl/trace/alert_orcl.log ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值