天天看點

Linux系統中的Oracle資料異地備份之OA系統資料備份

簡介:本文主要介紹Linux系統中OA系統的Oracle資料庫進行備份并異地存儲的過程。涉及的内容包括:磁盤挂載、資料備份腳本編寫,資料備份的清洗等内容。

詳細情況請參考下文。

一、挂載磁盤

1、登入linux系統

Linux系統中的Oracle資料異地備份之OA系統資料備份

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

Linux系統中的Oracle資料異地備份之OA系統資料備份

二、編寫資料庫備份腳本

1、檢視資料庫版本

通過賬号oralce登入linux系統,執行指令$ sqllpus /as sysdba

Linux系統中的Oracle資料異地備份之OA系統資料備份

2、檢視資料庫環境變量

執行指令$ cat .bash_profile檢視資料庫環境變量

Linux系統中的Oracle資料異地備份之OA系統資料備份

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 任務完成!

Linux系統中的Oracle資料異地備份之OA系統資料備份

三、制訂備份計劃

1、執行指令# crontab –e編寫備份計劃

執行指令# crontab -u username -e

Linux系統中的Oracle資料異地備份之OA系統資料備份

編寫計劃任務腳本如下:

30 02 * * * sh /usr/local/backup/backup.sh

Linux系統中的Oracle資料異地備份之OA系統資料備份

備注:上述計劃任務意為每天淩晨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進行備份測試。如下圖

Linux系統中的Oracle資料異地備份之OA系統資料備份

五、檢視資料庫的DIRECTORY

說明:如果測試過程出現expdp導出提示ORA-39002和ORA-39070的錯誤。如下圖

Linux系統中的Oracle資料異地備份之OA系統資料備份

解決辦法:一般是資料庫的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。