点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
业务反馈应用无法访问数据库,如下报错:

从报错来看是归档满导致,处理方法是通过rman删除归档即可。
2.1 使用rman删除归档
su - oracle
export ORACLE_SID=orcl
rman target
crosscheck ARCHIVELOG all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate - 7';
2.2 查看归档使用率,和大小
show parameter recovery

alter system set db_recovery_file_dest_size = 100G;
select * from V$RECOVERY_AREA_USAGE;
2.3 部署定时删除归档脚本
vi del.archivelog.sh
#!/bin/bash
source ~/.bash_profile
#记录归档删除的日志
exec>>/home/del_log/log/bak_log/del_arch`date +%F-%H`.log
$ORACLE_HOME/bin/rman target <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-7';
exit;
EOF
0 0 * * * /home/del_log/log/del.archivelog.sh 2>&1 >/dev/null &
如果归档目录满,同时无法进入sqlplus和rman 的情况。
3.1 物理删除归档
3.2 停止监听
lsnrctl stop
3.3 强制关库
ps -ef|grep ora_dbw0_$ORACLE_SID
kill -9 PID
3.4 修改参数文件重新启动数据库
sqlplus / as sysdba
create pfile='/tmp/pfile.ora' from spfile;
vi /tmp/pfile.ora
*.db_recovery_file_dest_size=40960m
sqlplus / as sysdba
startup pfile='/tmp/pfile.ora';
create spfile from pfile;
3.5 RMAN删除归档
rman target /
crosscheck ARCHIVELOG all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate - 7';

本文作者:许 军(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




