oracle自動備份

本文章詳細介紹備份過程中遇到的坑。

導出:
expdp vids/vids123@orclvids directory=dpdata dumpfile=db20200311214001.dmp logfile=20200311214001.log

刪除線部分非必須,可以不要

導出常見錯誤:

連接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
ORA-39002: 操作無效
ORA-39070: 無法打開日誌文件。
ORA-29283: 文件操作無效
ORA-06512: 在 "SYS.UTL_FILE", line 536
ORA-29283: 文件操作無效

錯誤原因:目錄授權問題,如果備份目錄是自定義目錄,必須擁有oracle用戶的權限和權限組。這種情況在root和oracle用戶混用的情況下比較常見
解決:
#備份目錄查詢(目錄擁有者都在sys下,需要對expdp導出用戶進行授權)
select * from dba_directories;
#創建並授權
create directory dpdata as '/data/backup/';
grant create any directory to vids;

導入:
impdp vids/vids123@xe directory=dpdata dumpfile=db20200311214001.dmp logfile=20200311214001.log

備份腳本,每日定時

chmod +x  oracle_back.sh
11 14 * * * /data/oracle_back.sh

自動備份腳本:

echo -e '******Start********'$(date '+%Y%m%d%H%M%S')>>/data/blog.txt #日誌打印
export ORACLE_BASE=/u01/app/oracle #oracle安裝目錄
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe #數據庫實體名稱,有些系統這個位置不同名
export ORACLE_SID=XE
export PATH=$ORACLE_HOME/bin:$PATH

rq='db'$(date '+%Y%m%d')'214001' #動態編寫時間
orq='db'$(date -d'2 day ago' +'%Y%m%d')'214001' #當前時間減去2天

echo -e $rq $orq>>/data/blog.txt
expdp vids/vids123@XE dumpfile=$rq.dmp log=$rq.log directory=dpdata #導出數據庫文件
zip -m /data/backup/$rq.zip /data/backup/$rq.dmp /data/backup/$rq.log #壓縮文件zip
find /data/backup -name $orq.zip |xargs rm -rf #壓刪除最近2天之外的數據
echo -e '******End**********'$(date '+%Y%m%d%H%M%S')>>/data/blog.txt

其中如果是10g的話expdp參數有變化,可調整爲下邊示例
expdp vids/vids123 directory=dpdata dumpfile=db20200311214001.dmp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章