本文章詳細介紹備份過程中遇到的坑。
導出:
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