定时任务归档日志

1切换root用户
su - oracle
2创建目录
mkdir /home/oracle/datalog

创建文件: vi del_archivelog.rman


connect target /
run {
  crosscheck archivelog all;
  -- delete noprompt archivelog until time 'sysdate-7';  -- 使用双短横线注释(RMAN 兼容)
}
exit;

创建文件: vi del_archivelog.sh


#!/bin/bash
export ORACLE_SID=cdb  #根据实际调整 可以通过echo $ORACLE_SID  查看实际环境配置
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export SCRIPT_HOME=/home/oracle/datalog

$ORACLE_HOME/bin/rman \
  cmdfile=$SCRIPT_HOME/del_archivelog.rman \
  log=$SCRIPT_HOME/del_archivelog_$(date +%Y%m%d).log

3授权文件夹
chmod 755 /home/oracle/datalog
chmod 755 /home/oracle/datalog/del_archivelog.sh
chmod 755 /home/oracle/datalog/del_archivelog.rman

 创建定时任务:crontab -l

11 15 * * * /bin/bash /home/oracle/datalog/del_archivelog.sh >> /home/oracle/datalog/cron.log 2>&1

 查询定时任务:

crontab -l
11 15 * * * /bin/bash /home/oracle/datalog/del_archivelog.sh >> /home/oracle/datalog/cron.log 2>&1

在写一个监控磁盘使用率的脚本:vi check_disk_and_clean.sh

#!/bin/bash
# 脚本路径:/home/oracle/datalog/check_disk_and_clean.sh

# 设置 Oracle 环境变量
export ORACLE_SID=cdb
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH

# 监控的挂载点和阈值
MOUNT_POINT="/u03"
THRESHOLD=80  # 80% 使用率触发清理

# 提取当前磁盘使用率(去掉百分号)
USAGE=$(df -h $MOUNT_POINT | awk 'NR==2 {print $5}' | tr -d '%')

# 日志文件路径
LOG_FILE="/home/oracle/datalog/clean_archivelog_$(date +%Y%m%d).log"

# 判断是否超过阈值
if [ $USAGE -ge $THRESHOLD ]; then
  echo "$(date '+%Y-%m-%d %H:%M:%S') - 检测到磁盘使用率 ${USAGE}% ≥ ${THRESHOLD}%,开始清理归档日志..." >> $LOG_FILE
  # 执行 RMAN 清理脚本
  $ORACLE_HOME/bin/rman  cmdfile=/home/oracle/datalog/del_archivelog.rman log=$LOG_FILE append
else
  echo "$(date '+%Y-%m-%d %H:%M:%S') - 磁盘使用率 ${USAGE}% < ${THRESHOLD}%,无需清理。" >> $LOG_FILE
fi


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值