oracle rac环境归档日志清除

文章目录

昨天单位的所有系统都连不上数据库了,电话已经被打爆了。我一看原来是归档日志满了,心里对着服务商就是一顿输出,竟然都不做日志管理。处理完了这些问题后我又打电话训斥一顿服务商。

oracle 数据库rac环境归档日志满了处理方法

报错如下 ORA-00257: archiver error, Connect internal only, until freed.

一、处理步骤
1、使用终端登录上服务器查看磁盘使用状态

可以看出可用空间只有一百多MB了,所以拒绝连接了。

sql 复制代码
[root@rac1 ~]# su - grid
grid@+ASM1:/home/grid$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576    409600      127                0             127              0             N  ARCH/
MOUNTED  EXTERN  N         512   4096  1048576   1662976   997139                0          997139              0             N  DATA/
MOUNTED  NORMAL  N         512   4096  1048576     30720    29794            10240            9777              0             Y  OCRDG/
2、使用恢复备份管理工具RMAN删除归档日志

使用rman工具 执行 删除七天前的归档日志
delete archivelog until time "sysdate-7";

sql 复制代码
[root@rac1 ~]# su - oracle
Password: 
oracle@orcl1:/home/oracle$rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Thu Nov 23 15:08:28 2023
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ORCL (DBID=1556520972)
RMAN> delete archivelog until time "sysdate-7";  

二、详细操作步骤

sql 复制代码
[root@rac1 ~]# su - grid
grid@+ASM1:/home/grid$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576    409600      127                0             127              0             N  ARCH/
MOUNTED  EXTERN  N         512   4096  1048576   1662976   997139                0          997139              0             N  DATA/
MOUNTED  NORMAL  N         512   4096  1048576     30720    29794            10240            9777              0             Y  OCRDG/

[root@rac1 ~]# su - oracle
Password: 
oracle@orcl1:/home/oracle$rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Thu Nov 23 15:08:28 2023
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ORCL (DBID=1556520972)
RMAN> delete archivelog until time "sysdate-7";  

using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2721 instance=orcl1 device type=DISK
archived log file name=+ARCH/orcl/archivelog/2023_10_27/thread_2_seq_47051.1200.1151356777 RECID=94019 STAMP=1151356777
deleted archived log
archived log file name=+ARCH/orcl/archivelog/2023_10_28/thread_2_seq_47052.405.1151370003 RECID=94020 STAMP=1151370004
deleted archived log
archived log file name=+ARCH/orcl/archivelog/2023_10_28/thread_2_seq_47053.1371.1151370013 RECID=94021 STAMP=1151370014
deleted archived log
..............
#省略太多记录。。。。。。
..............
RMAN>exit
[root@rac1 ~]# su - grid 
Password:
grid@+ASM1:/home/grid$asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576    409600   372336                0          372336              0             N  ARCH/
MOUNTED  EXTERN  N         512   4096  1048576   1662976   997139                0          997139              0             N  DATA/
MOUNTED  NORMAL  N         512   4096  1048576     30720    29794            10240            9777              0             Y  OCRDG/
grid@+ASM1:/home/grid$

三、定时任务自动清归档日志

为了更好的改善使用体验,我们可以使用shell脚本编写定时任务自动清除归档日志

1、编写删除脚本
shell 复制代码
mkdir /root/delOracleLog
mkdir /root/delOracleLog/log
cd /root/delOracleLog
chmod 777 /root/delOracleLog -R
vi del_ora_log.rman

文件内容如下

sehll 复制代码
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-20'; #清理20天之前的日志
exit;

2、编写shell脚本
vi /home/oracle/delOracleLog/del_oracle_log.sh

shell 复制代码
#! /bin/bash
dt=`date +%Y%m%d`
rman target=/ cmdfile=/root/delOracleLog/del_ora_log.rman log=/root/delOracleLog/log/del_ora_log_${dt}.log  2>&1
4、测试脚本运行情况
sehll 复制代码
[root@rac2 delOracleLog]# su - oracle -c /root/delOracleLog/del_oracle_log.sh 
RMAN> 2> 3> 4> [root@rac2 delOracleLog]# cat ./log/del_ora_log_20231124.log 

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Nov 24 08:53:53 2023

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1556520972)

RMAN> crosscheck archivelog all;
2> delete noprompt expired archivelog all;
3> delete noprompt archivelog until time 'sysdate-20'; #清理20天之前日志
exit;
4> 
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2852 instance=orcl2 device type=DISK
specification does not match any archived log in the repository

Recovery Manager complete.
5、设置定时任务每周执行一次,并测试运行效果

crontab -e

设置为每周五 9点25执行一次。【测试效果用实际情况建议夜间运行】:

shell 复制代码
25 9 * * 5 su - oracle -c /root/delOracleLog/del_oracle_log.sh

启动定时任务
service crond start

测试定时任务运行效果

shell 复制代码
[root@rac2 delOracleLog]# pwd
/root/delOracleLog
[root@rac2 delOracleLog]# ll ./log/
总用量 4
-rw-r--r--. 1 oracle oinstall 621 11月 24 09:25 del_ora_log_20231124.log
[root@rac2 delOracleLog]# cat ./log/del_ora_log_20231124.log 

Recovery Manager: Release 11.2.0.4.0 - Production on Fri Nov 24 09:25:01 2023

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1556520972)

RMAN> crosscheck archivelog all;
2> delete noprompt expired archivelog all;
3> delete noprompt archivelog until time 'sysdate-20'; #清理20天之前日志
exit;
4> 
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=3010 instance=orcl2 device type=DISK
specification does not match any archived log in the repository

Recovery Manager complete.
[root@rac2 delOracleLog]# 
相关推荐
朝新_1 分钟前
【统一功能处理】从入门到源码:拦截器学习指南(含适配器模式深度解读)
数据库·后端·mybatis·适配器模式·javaee
我要升天!35 分钟前
QT-- 理解项目文件
开发语言·数据库·qt
冉冰学姐1 小时前
SSM基于WEB的教学质量评价系统的设计与实现p9ak6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·教学质量评价·多角色管理、
liliangcsdn1 小时前
sql中left join和inner join的区别
数据库·sql
l1t1 小时前
DeepSeek辅助编写转换DuckDB json格式执行计划到PostgreSQL格式的Python程序
数据库·python·postgresql·json·执行计划
TDengine (老段)1 小时前
TDengine 字符串函数 LIKE_IN_SET 用户手册
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
q***82911 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
q***31891 小时前
数据库操作与数据管理——Rust 与 SQLite 的集成
数据库·rust·sqlite
元亓亓亓3 小时前
考研408--操作系统--day4--进程同步&互斥&信息量机制
java·数据库·考研·操作系统·408
武子康3 小时前
Java-169 Neo4j CQL 实战速查:字符串/聚合/关系与多跳查询
java·开发语言·数据库·python·sql·nosql·neo4j