ITPub博客

首页 > 数据库 > Oracle > ORA-03113: 通信通道的文件结尾

ORA-03113: 通信通道的文件结尾

Oracle 作者:小龙人cuc 时间:2014-02-27 15:12:31 0 删除 编辑
不完全解决办法:  
     今天关闭服务器的时候出现莫名原因导致数据库无法shutdown,只好利用强制命令shutdown abort;但随便
Oracle数 据库无法打开了,总是报“ORA-03113: 通信通道的文件结尾”错误,分析可能由于数据库立即关闭,导致文件状态可能不一致,因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一 致并且不用进行崩溃恢复,不得不进行下面的恢复,建议大家以后在利用abort选项时,先在os上观察IO状况,在IO值为0或接近0的时候再强制关闭, 以避免不可预料的错误。(我的环境是Oracle 11g,CentOS 5.4)

  
SQL> startup mount;
 ORACLE 例程已经启动。
 
Total System Global Area  835104768 bytes
 Fixed Size                  2217952 bytes
 Variable Size            637536288 bytes
 Database Buffers          188743680 bytes
 Redo Buffers                6606848 bytes
 数据库装载完毕。
 SQL> alter database open;
 alter database open
 *
 第 1 行出现错误:
 ORA-03113: 通信通道的文件结尾
 进程 ID: 4272
 会话 ID: 125 序列号: 5
 
SQL> conn ' / as sysdba'
 已连接到空闲例程。
 SQL> startup mount
 ORACLE 例程已经启动。
 
Total System Global Area  835104768 bytes
 Fixed Size                  2217952 bytes
 Variable Size            637536288 bytes
 Database Buffers          188743680 bytes
 Redo Buffers                6606848 bytes
 数据库装载完毕。
 SQL> select * from v$log;
 
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC
 ---------- ---------- ---------- ---------- ---------- ---------- ---
 STATUS          FIRST_CHANGE# FIRST_TIME    NEXT_CHANGE# NEXT_TIME
 ---------------- ------------- -------------- ------------ --------------
          1          1        97  52428800        512          1 NO
 INACTIVE              12980317 07-9月 -10        12988303 07-9月 -10
 
        3          1        99  52428800        512          1 NO
 CURRENT              12991762 07-9月 -10      2.8147E+14
 
        2          1        98  52428800        512          1 NO
 INACTIVE              12988303 07-9月 -10        12991762 07-9月 -10
 

SQL> alter database open resetlogs;
 alter database open resetlogs
 *
 第 1 行出现错误:
 ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效
 

SQL> recover database until time '2010-09-09 1:45:02';
 完成介质恢复。
 SQL> alter database open resetlogs;
 
数据库已更改。
 
SQL> shutdown
 数据库已经关闭。
 已经卸载数据库。
 ORACLE 例程已经关闭。
 SQL> startup
 ORACLE 例程已经启动。
 
Total System Global Area  835104768 bytes
 Fixed Size                  2217952 bytes
 Variable Size            637536288 bytes
 Database Buffers          188743680 bytes
 Redo Buffers                6606848 bytes
 数据库装载完毕。
 数据库已经打开。
 SQL>

linux


完美解决办法:
 提示ORA-03113:通信通道的文件结尾解决
 
事情原由:oracle安装到win7下,以为都是直接sqlplus / as sysdba,使用数据库,但最近连接时频繁报错,
提示ORA-03113:通信通道的文件结尾
进程 ID :6988
回话 ID:191 序列号:3

第一步: 
sqlplus / as sysdba
shutdown abort
startup mount
SQL> show parameter background_dump_dest;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      d:\app\baoshengzhu\diag\rdbms\
                                                 oracle\oracle\trace

进入该路径,查看alert_oracle.log,可见文件记录错误如下:
####################错误信息以及建议解决的方法##########################################################
Errors in file d:\app\baoshengzhu\diag\rdbms\oracle\oracle\trace\oracle_ora_6988.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用 100.00%, 尚有 0 字节可用。
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
   then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
   BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
   reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
   system command was used to delete files, then use RMAN CROSSCHECK and
   DELETE EXPIRED commands.

第二步:
select * from v$recovery_file_dest;
alter system set db_recovery_file_dest_size=10737418240 ---这里是改为10G。
alter database open
exit
 
第三步:
rman target /
进入rman工具窗口
rman target /
RMAN>crosscheck archivelog all;  -- 运行这个命令可以把无效的expired的archivelog标出来。
RMAN>delete expired archivelog all; -- 直接全部删除过期的归档日志。
RMAN>delete noprompt archivelog until time "sysdate -3";  -- 也可以直接用一个指定的日期来删除。

重新打开数据库:正常使用
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29265181/viewspace-1094324/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-02-24

  • 博文量
    3
  • 访问量
    15149