暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库归档满,无法连接数据库处理方案

IT那活儿 2024-06-27
319

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!  




故障现象



业务反馈应用无法访问数据库,如下报错:

报错ORA-00257: Archiver error. Connect AS SYSDBA only until resolved

从报错来看是归档满导致,处理方法是通过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 查看归档使用率,和大小

进入sqlplus:
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

用linux  crontab 定时开启运行。
crontab -e 输入以下内容并:wq保存。

0 0 * * * /home/del_log/log/del.archivelog.sh 2>&1 >/dev/null &




问题拓展



如果归档目录满,同时无法进入sqlplus和rman 的情况。
3.1 物理删除归档
先确认归档路径,直接物理删除归档。
3.2 停止监听
lsnrctl stop
3.3 强制关库
因为此时已经无法SQLPLUS登录了,选择强制关库。
ps -ef|grep ora_dbw0_$ORACLE_SID
然后kill掉:
kill -9 PID
3.4 修改参数文件重新启动数据库
sqlplus / as sysdba
create pfile='/tmp/pfile.ora' from spfile;

将快速恢复区修改大一点启动库,原来20,修改到40G。
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';


END


本文作者:许 军(上海新炬中北团队)

本文来源:“IT那活儿”公众号

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

评论