您好,登錄后才能下訂單哦!
最近幾個客戶生產環境都遇到一些故障,原因就是開歸檔,沒有部署刪除歸檔定時任務,以下大家可以參考,經過本人測試,在生產環境上正常運行。
**roidba刪除歸檔日志腳本**
一、基于RHEL6服務器端的歸檔日志刪除腳本
生產庫部署環境:
數據庫:Oracle 11.2.0.4
操作系統:RHEL 6.6
第一步:設置control_file_record_keep_time
此參數很重要,備份記錄、歸檔記錄等都會存放在控制文件中,而此參數提供保留記錄的時間段,默認值為7天。通常我們要設置此參數大于備份文件保留的時間段。這里我們設置31天。
操作如下:
SQL> show parameter keep_time
NAME TYPE VALUE
---------------------------------------- ---------------------- ------------------------------
control_file_record_keep_time integer 7
SQL>
SQL> alter system set control_file_record_keep_time=31 scope=both; --動態參數
SQL> show parameter keep_time
NAME TYPE VALUE
---------------------------------------- ---------------------- ------------------------------
control_file_record_keep_time integer 31
第二步:創建detele_archivelog.sh腳本
選擇存放腳本的路徑
$ mkdir -p /home/oracle/scripts?? --創建腳本存放目錄
$ cd /home/oracle/scripts?? --打開/home/oracle
$ touch delete_archivelog.sh? --創建腳本
$ chmod 755 delete_archivelog.sh?? --賦予讀寫權限
$ vi delete_archivelog.sh? --編輯腳本
注意修改ORACLE_SID?,log路徑要寫絕對路徑,不寫絕對路徑會導致單獨執行成功,定時任務執行時找不到對應的log
腳本:? ?
cat > /home/oracle/scripts/delete_archivelog.sh <<eof
#!/bin/bash
#Author Roidba
#FileName: delete_archivelog.sh
#Date: 2019-01-25
#DESC: Delete all complete before 5 days archivelog.
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
$ORACLE_HOME/bin/rman log=/home/oracle/scripts/rman_archive.log <<EOF
connect target sys/oracle@orcl
run{
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate - 5';
}
exit;
EOF
eof
第三步:執行detele_archivelog.sh腳本
$sh delete_archivelog.sh?? --執行腳本
查看對應日志執行成功
第四步:添加crontab計劃任務
使用oracle用戶添加例行任務:
crontab -l --查看計劃任務
crontab -e --編輯計劃任務
新打開的窗口中添加一下內容:
0 1 * * * /home/oracle/scripts/delete_archivelog.sh
----每天1點執行
編輯完成后按Esc鍵,輸入“:wq”存盤退出
關于crontab每一列的含義可以參考一下內容:
# more /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
第五步:執行驗證
1、查看執行計劃是否自動啟動
ps -ef | grep crond #判斷定時服務是否啟動
service crond start|stop|restart #啟動、停止或重啟服務
crontab -l #查看是否有正確添加定時任務
2、crontab成功執行驗證:
在root下執行tail -f /var/log/cron,監控cron日志來確保crontab的成功執行:
在oracle下執行tail -f /var/spool/mail/oracle
或者在 oracle 下執行mail 查看最近的日志看執行情況
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。