原理:经过系统的任务计划执行Oracle归档日志。sql
ORACLE_SID
,如实例名称:ORCL
del_archivelog.txt
文件,写入内容:connect target / run{ crosscheck archivelog all; DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; delete expired archivelog all; }
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
//删除七天前的归档日志bash
del_archivelog.bat
脚本文件,写入内容为:@echo off set "filename=del_archivelog_task_log_%date:~0,4%%date:~5,2%%date:~8,2%.txt" ( echo. echo ========================= 正在清除过时归档文件,请稍等...... %date% %time% ========================= echo. rman cmdfile=D:\app\admin\del_archivelog.txt echo. echo ========================= 【结束清理 %date% %time%】 ========================= echo. )>>D:\app\admin\%filename% 2>&1<nul pause
* 注意修改文件路径
oracle
下图是根据上面教程建立的两个文件app
(1)、先查看归档日志路径,确认归档日志文件信息状况。工具
SQL > show parameter recover;
随便打开一个在清理范围内的日期文件夹测试
del_archivelog.bat
脚本,而后将自动生成日志文件
del_archivelog_task_log_20190202.txt
del_archivelog_task_log_20190202.txt
,查看执行状况
任务计划程序
del_archivelog.bat
脚本文件sqlplus /nolog
进入SQLPlus, 执行 conn / as sysdba
[oracle@custom04 data]$ sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on Sat Feb 2 16:37:55 2019 Copyright (c) 1982, 2009, Oracle. All rights reserved. SQL> conn / as sysdba Connected. SQL>
show parameter recover;
查询归档日志的位置,注意:若是更改过归档日志路径,请执行archive log list;
查看SQL> show parameter recover; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /data/oracle/flash_recovery_area db_recovery_file_dest_size big integer 70G recovery_parallelism integer 0 SQL>
更改过归档日志路径的状况查看,执行archive log list;
3d
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /home/oracle/oracle_fast_recovery_area Oldest online log sequence 1622 Next log sequence to archive 1624 Current log sequence 1624 SQL>
ls -l |grep "^-"|wc -l
[root@custom04 oracle_fast_recovery_area]# ls -l |grep "^-"|wc -l 1215
del_archivelog.sh
脚本,执行vi del_archivelog.sh
[oracle@custom04 oracle]$ vi del_archivelog.sh
输入内容,注意修改/data/oracle/del_archivelog/
路径日志
#!/bin/bash echo "----------------------------------------`date`---------------------------------------" source ~/.bash_profile LOG_DIR=/data/oracle/del_archivelog/ DATEL=`date '+%Y-%m-%d'` LOG_NAME=${LOG_DIR}${DATEL}".log" rman log=$LOG_NAME target / <<EOF crosscheck archivelog all; delete noprompt expired archivelog all; delete noprompt archivelog all completed before 'sysdate-7'; EOF echo -e "\n" echo "------------------------------------- FINISHED -------------------------------------"
注意赋予文件的可执行权限,执行chmod 777 del_archivelog.sh
code
[oracle@custom04 oracle]$ chmod 777 del_archivelog.sh
./del_archivelog.sh
[oracle@custom04 oracle]$ ./del_archivelog.sh ----------------------------------------Sun Feb 3 13:41:11 CST 2019--------------------------------------- RMAN> RMAN> RMAN> RMAN> ------------------------------------- FINISHED ------------------------------------- [oracle@custom04 oracle]$
ls -l |grep "^-"|wc -l
[root@custom04 oracle_fast_recovery_area]# ls -l |grep "^-"|wc -l 1189
crontab -e
[oracle@custom04 oracle]$ crontab -e
写入内容,天天凌晨4点执行脚本del_archivelog.sh
,并将执行结果输出到task.log
blog
00 4 * * * sh /data/oracle/del_archivelog.sh >> /data/oracle/del_archivelog/task.log 2>&1 &
查看crontab全部定时任务,执行crontab -l
[oracle@custom04 oracle]$ crontab -l 00 4 * * * sh /data/oracle/del_archivelog.sh >> /data/oracle/del_archivelog/task.log 2>&1 &
到此整个Linux下的配置已结束,注意按期观察任务的运行状况。