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

📢📢📢📣📣📣

哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验

一位上进心十足的【大数据领域博主】!😜😜😜

中国DBA联盟(ACDU)成员,目前服务于工业互联网

擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

    • [📣 1.故障现象](#📣 1.故障现象)
    • [📣 2.故障分析](#📣 2.故障分析)
    • [📣 3.故障处理](#📣 3.故障处理)
      • [✨ 3.1 物理删除归档](#✨ 3.1 物理删除归档)
      • [✨ 3.2 停止监听](#✨ 3.2 停止监听)
      • [✨ 3.3 强制关库](#✨ 3.3 强制关库)
      • [✨ 3.4 pfile修改启库](#✨ 3.4 pfile修改启库)
      • [✨ 3.5 RMAN删除归档](#✨ 3.5 RMAN删除归档)
      • [✨ 3.6 重新启库调整归档](#✨ 3.6 重新启库调整归档)
    • [📣 4.定时删除归档任务](#📣 4.定时删除归档任务)
    • [📣 5.总结](#📣 5.总结)

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 © 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

bash 复制代码
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,需要采取强制关库

相关推荐
程序员卷卷狗2 分钟前
联合索引的最左前缀原则与失效场景
java·开发语言·数据库·mysql
蓝色猪猪侠1 小时前
postgresql数据库的安装
数据库
敖云岚1 小时前
【疑难解答】MySQL 报错 Public Key Retrieval is not allowed
数据库·mysql
小旺不正经2 小时前
Linux介绍及常用命令
linux·运维·数据库
焦糖码奇朵、2 小时前
移动通信网络建设-实验2:5G站点选型与设备部署
网络·数据库·人工智能·5g·信号处理·基带工程
l1t2 小时前
把ITPUB newkid先生编写的Oracle语法数独求解SQL改写成DuckDB
数据库·人工智能·sql·oracle·duckdb
ヾChen2 小时前
MySQL——增删改查操作
数据库·sql·物联网·学习·mysql
betazhou2 小时前
Oracle Goldengate 同步过程的同步用户权限设置
数据库·oracle·goldengate·ogg·goldengate授权
0和1的舞者2 小时前
《MySQL数据库进阶(九):数据库备份与恢复(二)》
数据库·mysql·oracle·程序员·策略模式·备份与恢复