oracle归档日志空间满了数据库无法启动问题解决方法

问题现象:

  1. oracle连接数据库报错:ORA-01034: ORACLE not available(Oracle 不存在),ORA-27101: shared memory realm does not exist
  2. 查看oracle监听程序报错:  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
  3. Oracle启动失败ORA-03113: end-of-file on communication channel

 

解决过程:

通过navicat工具连接报错:ORA-01034: ORACLE not available(Oracle 不存在),ORA-27101: shared memory realm does not exist。

首先检查服务端配置文件的问题,找到服务端监听文件listener.ora,客户端的sqlnet.ora和tnsnames.ora两个文件,我的服务端安装路径是; /usr/local/oracle/product/11.2.0/db_1/network/admin:

检查两个tnsnames.ora的ip和prot是否一致,必须要相同. 检查完上面三个文件ip,端口,和其他参数都匹配就可以排除不是配置文件原因。

 

再次重启监听:lsnrctl start,查看监听状态lsnrctl status,报错

原因是由于实例没有注册到监听服务中去,于是注册实例 

以SYS用户身份登录Oracle

sqlplus /nolog

connect /as sysdba

实例注册到oracle中:alter system register;

再查看监听状态如下:发现实例已经处于ready状态了。

 

 

然后启动oracle,Oracle启动失败,报错:ORA-03113: end-of-file on communication channel

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

 

Total System Global Area 6.0801E+10 bytes

Fixed Size                  7660704 bytes

Variable Size            8724155232 bytes

Database Buffers         5.1942E+10 bytes

Redo Buffers              126554112 bytes

Database mounted.

ORA-03113: end-of-file on communication channel

Process ID: 7512

Session ID: 406 Serial number: 27398

先找到Oracle告警日志位置,然后查看告警日志。

告警日志文件是一类特殊的跟踪文件(trace file),告警日志文件命名格式一般为:alert_<SID>.log,其中SID为ORACLE数据库实例名称。

 

 

tail -f -n 1000 /usr/local/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log

 

日志信息如下:

 

 

解决方法:根据实际情况选择合理的清除操作。

可以直接进入RMAN删除归档日志腾出空间。

也可以:物理删除归档日志文件->进入RMAN->crosscheck archivelog all;->delete noprompt expired archivelog all; 

 

$ rman target /

RMAN> crosscheck archivelog all;     //检查控制文件和实际物理文件的差别

RMAN> delete expired archivelog all; //删除所有过期日志,同步删除控制文件的信息和实际物理文件的信息

 

遇到的问题

错误1:

RMAN> crosscheck archivelog all;

 

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of crosscheck command at 03/28/2019 12:59:23

RMAN-12010: automatic channel allocation initialization failed

RMAN-06403: could not obtain a fully authorized session

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3640

Additional information: -2000252533

 

RMAN> exit

SQL> shutdown immediate

SQL> startup mount //启动数据库实体但不打开数据库

 

错误2:数据库启动报错

ORA-03113: end-of-file on communication channel

 

报错信息是启动的时候找不到xxx文件,我猜是由于清理归档日志造成的,后面我重建日志文件后问题解决,重建日志文件方法如下

解决办法

SQL> shutdown immediate; 

ORA-01109: 数据库未打开 

已经卸载数据库。 

SQL> startup mount; 

ORACLE 例程已经启动。 

SQL>select * from v$log; 

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME 

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------- 

1 1 0 104857600 1 NO UNCURRENT 670680 07-12-07 

2 1 15 104857600 1 NO unactive 696119 07-12-07 

3 1 0 104857600 1 NO Unactive 650182 07-12-07 

已选择3行。 

alter database clear unarchived logfile group 1; /*重建日志文件*/ 

数据库已经更改

alter database clear unarchived logfile group 2; 

数据库已经更改

alter database clear unarchived logfile group 3; 

数据库已经更改

SQL>shutdown; 

已经卸载数据库。 

ORACLE 例程已经关闭。 

SQL>startup; 

ORACLE 例程已经启动。 

Total System Global Area 135338868 bytes 

Fixed Size 453492 bytes 

Variable Size 109051904 bytes 

Database Buffers 25165824 bytes 

Redo Buffers 667648 bytes 

数据库装载完毕。 

数据库已经打开。 

 

此时连接数据库已经能连接上了

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值