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 

数据库装载完毕。 

数据库已经打开。 

 

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

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值