您好,登錄后才能下訂單哦!
最近幾個(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í)行情況
免責(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)容。