1. 程式人生 > >oracle 11g生產環境清理歸檔日誌腳本

oracle 11g生產環境清理歸檔日誌腳本

情況 efi bho ram 時間段 sys ini 定時 讀寫權限

最近幾個客戶生產環境都遇到一些故障,原因就是開歸檔,沒有部署刪除歸檔定時任務,以下大家可以參考,經過本人測試,在生產環境上正常運行。
**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 查看最近的日誌看執行情況

oracle 11g生產環境清理歸檔日誌腳本