本文以CentOS 7.6系統與Oracle 11g為例,教你如何在Linux下設定每天自動備份Oracle資料庫。
一.先找到資料庫的環境變量
如果是在root賬戶下,須先登入到資料庫所在賬戶
su oraclecat ~/.bash_profile

export PATHexport ORACLE_BASE=/home/nnc_db/appexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1export PATH=$PATH:$ORACLE_HOME/binexport ORACLE_SID=orcl
環境變量就已經找到了!
二.編輯備份的腳本檔案
vi bak.sh
先把環境變量複制粘貼到bak.sh檔案,
然後定義一個變量date(它的作用是為每天備份的檔案命名便于識别),使用expdp指令導出資料庫,代碼如下:
date=$(date +%Y%m%d)expdp 資料庫賬号/資料庫密碼@資料庫執行個體名 dumpfile=${date}_db_auto_backup.dmp schemas=資料庫賬号名 compression=all
退出儲存。
三.使用Linux的crontab指令設定定時任務
crontab -e
crontab -e的作用是使用文本編輯器設定定時任務(crontab具體用法在此不贅述);
輸入後在文本編輯器輸入
0 0 * * * /home/nnc_db/bak.sh
以上代碼意為每天的0點0分執行/home/nnc_db下的bak.sh檔案,也就是第二步所建立的檔案,需根據自身的備份時間以及檔案目錄調整;
然後重新開機crond服務即可
service crond restart
四.測試任務是否成功運作
根據我在網上收集的資料來看,有朋友說crontab -e設定成功後三分鐘不會生效!也就是說假如你在上午10:00設定好任務,想要測試能否成功,把下次的定時任務設到10:02分,有可能會出現問題!但是這裡我用
* * * * * /home/nnc_db/bak.sh
設定為每一分鐘運作一次,發現沒有問題。 還有一個新手大坑就是你直接運作腳本檔案會在指令行輸出詳細過程,而設定定時任務運作是沒有反應的!是以想要看自己的腳本是否自動運作了需要到/var/spool/mail/下看日志檔案,如圖