且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

oracle rac 11g 日志占满系统盘导致数据库down掉

更新时间:2022-05-20 05:05:49

oracle日志占满系统盘满了导致数据库挂掉 并且archivelog日志也满了倒是数据库无法open,无法登陆,幸好还可以到mount状态。解决办法:

1.根据报错查看 表象: crs 服务down掉 
CRS-0184: Cannot communicate with the CRS daemon
删除/var/tmp/.oracle 目录
删除oracle alter日志:
cd /u01/app/oracle/rdbms/bol/BOL1/alter
rm -rf *

到此重启机器 可以启动oracle的所以服务,但是不能启动oracle的db服务

启动db服务的时候报错如下:
PRCR-1079 : 无法启动资源 ora.orcl.db ORA-03113: end-of-file on communication channel

解决办法:
su - oracle 
sqlplus / as sysdba

startup mount##rac上面2台都要做

查看是否为归档模式:
archive log list

查看闪回分区大小:
show parameter db_recovery_file_dest_size

查看archlog log使用率:
select * from v$flash_recovery_area_usage; --查看空间占用率,如果 ARCHIVED LOG 超过90%,Oracle随时有宕机的危险

增大闪回分区大小:
alter system set db_recovery_file_dest_size=xxG;##rac 操作一台即可

启动数据库:

alter database open ##rac 上面2台机器都要做

到此之后,可以连接数据库了,但是现在需要做的是清楚数据库的归档日志,因为现在只是增大了db_recovery的空间而已,我们需要清理掉不需要的归档日志,获得空间。
清除归档日志脚本:
#!/bin/bash
source /home/oracle/.bash_profile 
#LOGFILE=/data/rman/rman_delete.log 
#RMAN=$ORACLE_HOME/bin/rman 
$ORACLE_HOME/bin/rman log=/home/oracle/del_arch$(date +%Y-%m-%d).log <<EOF 
connect target sys/xxxx@xxx 
crosscheck archivelog all; 
delete noprompt expired archivelog all; 
delete noprompt archivelog until time 'sysdate-3'; 
exit; 
EOF

直接在root目录下运行即可。到此问题解决完成,记录一下,日后可以使用。

本文转自  674591788  51CTO博客,原文链接:http://blog.51cto.com/mrdeng/2066568