归档满RMAN进不去,怎么解决看这里

前言

本文详细讲述基于Centos7系统Oracle归档满故障处理的详细过程

1.故障现象

业务反馈应用无法访问数据库,如下报错 报错ORA-00257: Archiver error. Connect AS SYSDBA only until resolved错误解决

2.故障分析

从本次报错来看,是归档满导致,处理的办法是直接删归档即可,可是当登录服务器的时候,发现根本无法登录RMAN执行删除归档,而且SQLPLUS也不进去,无法调整归档相关参数,怎么办?

从ALERT日志来看,无法开库的原因是归档空间满,数据库已经无法登录导致
Errors in file /u01/oracle/diag/rdbms/devdb/devdb/trace/devdb_tt00_3486.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 1073741824 bytes disk space from 214748364800 bytes limit

那么接下来首先得从物理空间删除归档,
再强制管库调整归档参数,重新启动库删除归档

3.故障处理

3.1 物理删除归档

确认归档路径后发现是放到快速恢复区,那么找到后直接物理删除归档
快速恢复区目录:fast_recovery_area

3.2 停止监听

[oracle@dev1 ~]$ lsnrctl stop

3.3 强制关库

--强制关闭库,这个很关键,因为此时已经无法SQLPLUS登录了
ps -ef|grep ora_dbw0_$ORACLE_SID
然后kill掉
kill -9 PID

3.4 pfile修改启库

--创建PFILE
SYS@devdb> create pfile='/home/oracle/devspfile.ora' from spfile;

--将快速恢复区修改大一点启动库,原来200G,修改到400G
*.db_recovery_file_dest_size=404800m

--pfile启动数据库
SQL> startup pfile='/home/oracle/pfile.ora';

[oracle@dev1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Mar 14 13:55:26 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to an idle instance.

SYS@devdb> startup pfile='/home/oracle/devspfile.ora';
ORACLE instance started.

Total System Global Area 2.5837E+10 bytes
Fixed Size                 26605704 bytes
Variable Size            3288334336 bytes
Database Buffers         2.2481E+10 bytes
Redo Buffers               40501248 bytes
Database mounted.
Database opened.

SYS@devdb> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     274
Next log sequence to archive   278
Current log sequence           278


3.5 RMAN删除归档

--登录RMAN删除归档
 RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
RMAN> delete archivelog until time 'sysdate-1';
select * from V$FLASH_RECOVERY_AREA_USAGE;
注意:必须通过RMAN删除归档,不然控制文件不更新,还是登录不了

3.6 重新启库调整归档

--重新启动库
SYS@devdb> startup force;
--调整归档路径,从快速恢复区移动到其他目录
SYS@devdb> alter system set log_archive_dest_1='location=/zisemi/oracle/arch;

4.定时删除归档任务

因为是个单机库,后期防止归档满,设置定时任务删除

[root@devdb ~]# su - oracle
[oracle@devdb ~]$ mkdir -p /home/oracle/script
[oracle@devdb ~]$ mkdir -p /home/oracle/arch/log


[root@devdb ~]# su - oracle
[oracle@devdb ~]$ mkdir -p /home/oracle/script
[oracle@devdb ~]$ mkdir -p /home/oracle/archlog

vi /home/oracle/script/archdel_dev.sh

export ORACLE_HOME=/u01/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=devdb
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
rman target / log /home/oracle/archlog/log_arch.log  <<EOF
run{ 
allocate channel ch1 type disk;
allocate channel ch2 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-3';
release channel ch1;
release channel ch2;
}
EOF

crontab -l
0 23 * * * su - oracle -c "/home/oracle/script/archdel_dev.sh"

5.总结

本次故障总结如下:
1.归档不要放在快速恢复区,不好管控
2.归档要设置定时任务删除,比如备份后删除或者定时脚本删除
3.归档满一定要从RMAN进去删除,控制文件才能更新
4.归档满基本会导致服务器卡,无法登录SQLPLUS及RMAN,需要采取强制关库
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值