irpas技术客

Oracle删除归档日志_Lucky扬_linux oracle删除归档日志

大大的周 7184

目录

一、删除归档日志

1.切换用户

2.使用RMAN工具

3.连接本地数据库

4.检查控制文件和实际物理文件的差别

5.同步检查控制文件和实际物理文件的信息

6.删除n天前的归档日志

7.退出RMAN

二、添加定时任务

1.创建归档日志删除脚本

2.授予脚本文件执行权限

3.测试归档日志删除脚本

4.添加定时任务

5.查看定时任务


一、删除归档日志 1.切换用户 # 切换至oracle用户 su – oracle 2.使用RMAN工具 # 使用RMAN工具,删除失效的归档日志 rman

注:RMAN(Recovery Manager)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的 Oracle 工具。

3.连接本地数据库 # 使用target命令连接本地数据库 RMAN> connect target / 4.检查控制文件和实际物理文件的差别

执行crosscheck命令,检查控制文件和实际物理文件的差别,如果物理文件不存在于介质上,将标记为expired(失效/不可用),crosscheck之后,就可以删除这些失效的归档日志了(执行脚本后,删除的归档日志状态会变为“失效”)

RMAN> crosscheck archivelog all; 5.同步检查控制文件和实际物理文件的信息 # 删除状态为expired(失效/不可用)的归档日志 RMAN> delete expired archivelog all; 6.删除n天前的归档日志 # 删除 3 天前的归档日志: RMAN> delete archivelog all completed before 'sysdate-3'; # 删除 1 天前 RMAN> delete archivelog until time 'sysdate-1'

区别:第一条带complete的语句,主要是删除已备份过的归档,没有备份的归档,不会被删除。而第二个语句, 则会删除掉归档,无论备份与否。

7.退出RMAN # 退出RMAN RMAN> exit 二、添加定时任务 1.创建归档日志删除脚本

archivelog_clear.sh

#!/bin/bash BACK_DIR=/home/oracle/clear_archlog/data export DATE=`date +%F` mkdir -p $BACK_DIR/$DATE touch $BACK_DIR/$DATE/rman_backup.log echo "--------------------------------`date`-------------------------------" source ~/.bash_profile # 记录日志rman_backup.log 可以后期检查是否执行成功 rman target / >> $BACK_DIR/$DATE/rman_backup.log <<EOF # 把无效的expired的archivelog标出来 crosscheck archivelog all; # 直接全部删除过期的归档日志 #delete noprompt expired archivelog all; # 直接删除7天前所有的归档日志 delete noprompt archivelog all completed before 'sysdate-7'; exit EOF echo -e "\n" echo "------------------------------ FINISHED ----------------------------" 2.授予脚本文件执行权限 #授予执行权限 chmod +x archivelog_clear.sh

3.测试归档日志删除脚本 ./archivelog_clear.sh 4.添加定时任务

输入命令:crontab -e 编辑并且添加一行新的任务

30 3 15 * * /home/oracle/archivelog_clear.sh

5.查看定时任务 crontab -l


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Linux #oracle删除归档日志 #一删除归档日志 #切换至oracle用户su #oracle