ORA03113: endoffile on communication channel

Oracle启动报错

解决方案如下

一、查看启动日志

  1. 日志文件,ekp/ekp 数据库实例名
    cd home/oracle/app/diag/rdbms/ekp/ekp/trace

  2. (c时间排序、r倒序) 定位启动日志
    ls -alcr | grep alert

  3. 然后重启运行startup命令:得到oracle提示如下:
    tail -f -n 500 alert_ekp.log

        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.
    

二、使用mount启动oracle

  1. 使用oracle用户
    su - oracle
  2. 使用SQL命令窗口
    sqlplus /nolog
  3. 连接到管理员用户
    conn /as sysdba
  4. 启动数据库(打开控制文件)
    startup mount

三、查看并清理不需要的归档日志

  1. 查看恢复区(闪回区)位置及大小
    SQL> show parameter db_recovery;
    NAME                                 TYPE        VALUE                          
    ------------------------------------ ----------- ------------------------------  
    db_recovery_file_dest                string      /home/oracle/app/fast_recovery  
                                                    _area  
    db_recovery_file_dest_size           big integer 6G  
  1. 查询当前的使用状态
    select file_type,PERCENT_SPACE_USED,NUMBER_OF_FILES from v$flash_recovery_area_usage;
  2. 物理清除归档路径下的日志文件:
    1. 退出sql命令窗口:
    2. 进入到对应的归档实例日志目录
      cd /home/oracle/app/fast_recovery_area
    3. 清理不需要的归档日志
      清理前请对需要的日子做好备份潮州:
      rm -rf 不需要的日子文件目录
      物理日志文件清理后,还需要在ramn管理中清理一次,不然还是显示的空间没有释放

四、进入rman命令行:通过rman管理工具清理

  1. 进入rman命令行
    rman nocatalog nocatalog方式
    connect target / 连接
  2. 连接上数据库实例
    connect target sys/sys_passwd sys_passwd sys的密码
  3. 执行删除缓存命令
    crosscheck backup;  
    delete obsolete;  
    delete expired backup;  
    crosscheck archivelog all;  
    delete expired archivelog all;  

此步会有提示,输入 YES 回车
退出rman 删除完成,重新连接数据库

五、清理完毕后查看结果

  1. 查看结果
    sqlplus /nolog
    SQL> connect /as sysdba
    SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;

六、重新启动数据库ok

原文地址:https://www.cnblogs.com/liyiren/p/15620121.html