本文以Centos7.6系統(tǒng)與Oracle11g為例:
一.先找到數(shù)據(jù)庫(kù)的環(huán)境變量
如果是在root賬戶下,須先登錄到數(shù)據(jù)庫(kù)所在賬戶
su oracle
cat ~/.bash_profile
export PATH
export ORACLE_BASE=/home/nnc_db/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl
環(huán)境變量就已經(jīng)找到了!
二.編輯備份的腳本文件
vi bak.sh
先把環(huán)境變量復(fù)制粘貼到bak.sh文件,
然后定義一個(gè)變量date(它的作用是為每天備份的文件命名便于識(shí)別),使用expdp命令導(dǎo)出數(shù)據(jù)庫(kù),代碼如下:
date=$(date +%Y%m%d)
expdp 數(shù)據(jù)庫(kù)賬號(hào)/數(shù)據(jù)庫(kù)密碼@數(shù)據(jù)庫(kù)實(shí)例名 dumpfile=${date}_db_auto_backup.dmp schemas=數(shù)據(jù)庫(kù)賬號(hào)名 compression=all
退出保存。
三.使用Linux的crontab命令設(shè)置定時(shí)任務(wù)
crontab -e
crontab -e的作用是使用文本編輯器設(shè)置定時(shí)任務(wù)(crontab具體用法在此不贅述);
輸入后在文本編輯器輸入
0 0 * * * /home/nnc_db/bak.sh
以上代碼意為每天的0點(diǎn)0分執(zhí)行/home/nnc_db
下的bak.sh文件,也就是第二步所創(chuàng)建的文件,需根據(jù)自身的備份時(shí)間以及文件目錄調(diào)整;
然后重啟crond服務(wù)即可
service crond restart
四.測(cè)試任務(wù)是否成功運(yùn)行
根據(jù)我在網(wǎng)上收集的資料來(lái)看,有朋友說(shuō)crontab -e設(shè)置成功后三分鐘不會(huì)生效!也就是說(shuō)假如你在上午10:00設(shè)置好任務(wù),想要測(cè)試能否成功,把下次的定時(shí)任務(wù)設(shè)到10:02分,有可能會(huì)出現(xiàn)問(wèn)題!但是這里我用
* * * * * /home/nnc_db/bak.sh
設(shè)置為每一分鐘運(yùn)行一次,發(fā)現(xiàn)沒(méi)有問(wèn)題。
還有一個(gè)新手大坑就是你直接運(yùn)行腳本文件會(huì)在命令行輸出詳細(xì)過(guò)程,而設(shè)置定時(shí)任務(wù)運(yùn)行是沒(méi)有反應(yīng)的!所以想要看自己的腳本是否自動(dòng)運(yùn)行了需要到/var/spool/mail/
下看日志文件,如圖
總結(jié)
以上所述是小編給大家介紹的Linux下設(shè)置每天自動(dòng)備份數(shù)據(jù)庫(kù)的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!