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

2024年 6月 27日 68.3k 0

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

故障现象

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

报错ORA-00257: Archiver error. Connect AS SYSDBA only until resolvedOracle数据库归档满,无法连接数据库处理方案-1

从报错来看是归档满导致,处理方法是通过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

Oracle数据库归档满,无法连接数据库处理方案-2归档目录有点小,增大归档目录:

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 /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';

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

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

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

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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论