簡介:本文主要介紹Linux系統中OA系統的Oracle資料庫進行備份并異地存儲的過程。涉及的内容包括:磁盤挂載、資料備份腳本編寫,資料備份的清洗等内容。
詳細情況請參考下文。
一、挂載磁盤
1、登入linux系統
2、挂載FTP伺服器的磁盤為備份目錄
執行腳本:
mount -t cifs -o "rw,dir_mode=0777,file_mode=0777,username=**db,password=**db@v1P,vers=2.0" //172.*.*.*/BACKUP/OADB /usr/local/databackup
二、編寫資料庫備份腳本
1、檢視資料庫版本
通過賬号oralce登入linux系統,執行指令$ sqllpus /as sysdba
2、檢視資料庫環境變量
執行指令$ cat .bash_profile檢視資料庫環境變量
3、編寫資料庫備份腳本
執行指令# vim backup.sh編寫備份腳本
#!/bin/bash
. /etc/profile
. ~/.bash_profile
days=$(date '+%Y%m%d')
#echo $days
echo 執行資料庫備份任務
#備份資料
expdp ***user/******188# directory=datadir dumpfile=OA_$days.dmp logfile=OA_$days.log schemas=***user compression=ALL
cd /usr/local/databackup
# tar指令打包并删除原檔案
tar -zcvf OA_$days.tar.gz OA_$days.dmp OA_$days.log --remove-files
#删除10天前的備份資料
find /usr/local/databackup -name "*.*" -mtime +10 -exec rm -rf {} \;
echo 任務完成!
三、制訂備份計劃
1、執行指令# crontab –e編寫備份計劃
執行指令# crontab -u username -e
編寫計劃任務腳本如下:
30 02 * * * sh /usr/local/backup/backup.sh
備注:上述計劃任務意為每天淩晨2:30執行/usr/local/backup/backup.sh備份腳本。
格式說明:第1列為分鐘,0~59;第2列為小時,0~23;第3列為日期,1~31;第4列為月份,1~12;第5列為星期,0~7(0和7表示星期天);第6列為要運作的指令(如果有多個指令用 && 隔開)。
2、crontab指令使用說明
crontab指令格式如下:
crontab [-u user] [ -e | -l | -r ]
備注:指令參數
-u user:用來設定某個使用者的crontab服務,例如,“-u xyz”表示設定xyz使用者的crontab服務,此參數一般由系統管理者賬号root運作。
-e:編輯某個使用者的crontab檔案内容。如果不指定使用者,則表示編輯目前使用者的crontab檔案。
-l:顯示某個使用者的crontab檔案内容,如果不指定使用者,則表示顯示目前使用者的crontab檔案内容。
-r:從/var/spool/cron目錄中删除某個使用者的crontab檔案,如果不指定使用者,則預設删除目前使用者的crontab檔案。
-i:在删除使用者的crontab檔案時給确認提示。
四、備份測試
執行指令# sh backup.sh進行備份測試。如下圖
五、檢視資料庫的DIRECTORY
說明:如果測試過程出現expdp導出提示ORA-39002和ORA-39070的錯誤。如下圖
解決辦法:一般是資料庫的DIRECTORY路徑有問題,執行以下指令
SQL> col OWNER format a6
SQL> col DIRECTORY_NAME for a20
SQL> col DIRECTORY_PATH for a30
SQL> select * from dba_directories;
檢查datadir路徑是否對應系統目錄/usr/local/databackup。