ITPub博客

首页 > 数据库 > Oracle > 糟糕,归档满RMAN进不去,CPU98%了!

糟糕,归档满RMAN进不去,CPU98%了!

原创 Oracle 作者:wddwr7307914 时间:2024-03-20 06:31:50 0 删除 编辑

📣 前言

Oracle归档满基本会导致服务器卡,无法登录SQLPLUS及RMAN,做好策略


📣 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,需要采取强制关库



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69947868/viewspace-3009488/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中国DBA联盟(ACDU)成员,Oracle PostgreSQL ACE,CSDN博客专家及B站知名UP主,全网粉丝10万+,目前服务于工业互联网,擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,安装迁移,性能优化、故障应急处理。

注册时间:2020-06-13

  • 博文量
    203
  • 访问量
    212834