溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

oracle 11g生產(chǎn)環(huán)境清理歸檔日志腳本

發(fā)布時(shí)間:2020-07-11 17:52:02 來(lái)源:網(wǎng)絡(luò) 閱讀:1173 作者:roidba 欄目:關(guān)系型數(shù)據(jù)庫(kù)
  最近幾個(gè)客戶生產(chǎn)環(huán)境都遇到一些故障,原因就是開(kāi)歸檔,沒(méi)有部署刪除歸檔定時(shí)任務(wù),以下大家可以參考,經(jīng)過(guò)本人測(cè)試,在生產(chǎn)環(huán)境上正常運(yùn)行。
**roidba刪除歸檔日志腳本**
一、基于RHEL6服務(wù)器端的歸檔日志刪除腳本
生產(chǎn)庫(kù)部署環(huán)境:
數(shù)據(jù)庫(kù):Oracle 11.2.0.4
操作系統(tǒng):RHEL 6.6
第一步:設(shè)置control_file_record_keep_time
此參數(shù)很重要,備份記錄、歸檔記錄等都會(huì)存放在控制文件中,而此參數(shù)提供保留記錄的時(shí)間段,默認(rèn)值為7天。通常我們要設(shè)置此參數(shù)大于備份文件保留的時(shí)間段。這里我們?cè)O(shè)置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;  --動(dòng)態(tài)參數(shù)
SQL> show parameter keep_time
NAME                          TYPE            VALUE
---------------------------------------- ---------------------- ------------------------------
control_file_record_keep_time      integer           31
第二步:創(chuàng)建detele_archivelog.sh腳本
選擇存放腳本的路徑
$ mkdir -p /home/oracle/scripts?? --創(chuàng)建腳本存放目錄
$ cd /home/oracle/scripts?? --打開(kāi)/home/oracle
$ touch delete_archivelog.sh? --創(chuàng)建腳本
$ chmod 755 delete_archivelog.sh?? --賦予讀寫(xiě)權(quán)限
$ vi delete_archivelog.sh? --編輯腳本
注意修改ORACLE_SID?,log路徑要寫(xiě)絕對(duì)路徑,不寫(xiě)絕對(duì)路徑會(huì)導(dǎo)致單獨(dú)執(zhí)行成功,定時(shí)任務(wù)執(zhí)行時(shí)找不到對(duì)應(yīng)的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

第三步:執(zhí)行detele_archivelog.sh腳本
$sh delete_archivelog.sh?? --執(zhí)行腳本
查看對(duì)應(yīng)日志執(zhí)行成功
第四步:添加crontab計(jì)劃任務(wù)
使用oracle用戶添加例行任務(wù):
crontab -l  --查看計(jì)劃任務(wù)
crontab -e  --編輯計(jì)劃任務(wù)
新打開(kāi)的窗口中添加一下內(nèi)容:
0 1 * * * /home/oracle/scripts/delete_archivelog.sh
----每天1點(diǎn)執(zhí)行
編輯完成后按Esc鍵,輸入“:wq”存盤(pán)退出
關(guān)于crontab每一列的含義可以參考一下內(nèi)容:
# 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
第五步:執(zhí)行驗(yàn)證
1、查看執(zhí)行計(jì)劃是否自動(dòng)啟動(dòng)
ps -ef | grep crond      #判斷定時(shí)服務(wù)是否啟動(dòng)
service crond start|stop|restart     #啟動(dòng)、停止或重啟服務(wù)
crontab -l                 #查看是否有正確添加定時(shí)任務(wù)
2、crontab成功執(zhí)行驗(yàn)證:
在root下執(zhí)行tail -f /var/log/cron,監(jiān)控cron日志來(lái)確保crontab的成功執(zhí)行:
在oracle下執(zhí)行tail -f /var/spool/mail/oracle
或者在 oracle 下執(zhí)行mail 查看最近的日志看執(zhí)行情況
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI