2009/5/20

備份Oracle Data 到backup Server 的 作法

讓 backup server 自動將 oracle server 的資料留存一份

( 透過 scp 的方式)

1. 在 oracle server 上, 用 oracle 這帳號來登入
mkdir /backup/daily
chown -R oracle.oinstall /backup

2. vi ~/backup.sh
內容如下 :
export time=`date '+%Y%m%d-%H%M'`

export ORACLE_HOME=/oracle/product/9.2.0
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export NLS_LANG=AMERICAN_AMERICA.UTF8

exp userid=ip200/ip200pwd@ENOTER.LOCALDOMAIN file=/backup/daily/ip200-83data.dmp owner=ip200 log=/backup/daily/ip200-83data.log
exp userid=health/healthpwd@ENOTER.LOCALDOMAIN file=/backup/daily/health-83data.dmp owner=health log=/backup/daily/health-83data.log


3. crontab -e
增加一筆資料
10 12,23 * * * sh /home/oracle/backup.sh >> /home/oracle/log/backup.log 2>> /home/oracle/log/backup.err
(我是設定每天備份兩次 , 分別是在 12:10 和 23:10 )

4. 到 backup server 上, 用 要 backup 的帳號登入 ( 假設是 backup )
mkdir /backup/daily

5. cd ( 回$HOME )
vi backup83.sh
內容
scp oracle@oracle_server_ip:/backup/daily/health-83data.dmp /backup/daily
scp oracle@oracle_server_ip:/backup/daily/ip200-83data.dmp /backup/daily

6. 因為我們是要採用 scp 將資料備份過來, 但是 scp 會詢問 password
自動備份時,將會讓備份作業失敗, 所以必須讓 oracle server 信任 backup server
因此要在 backup server 上產生 private key 和 public key

ssh-keygen -C oracle@oracle_server_ip -t dsa

會產生兩個檔
$Home/id_dsa 和 id_dsa.pub ( 當然了, 在產生過程中可以改名 , 此時再改也無妨 )

7. 將 id_dsa.pub 傳送到 Oracle Server 去

scp ~/.ssh/id_dsa.pub oracle@oracle_server_ip:~/

8. 回到 Oracle_server 上

在 Home Directory 下先 ls -la 看一下有無 .ssh 這個隱藏檔

a. 若有的話, 下以下的指令
cat ~/id_dsa.pub >>~/.ssh/authorized_keys

b. 若沒有 .ssh 目錄的話
mkdir .ssh
cp ~/id_dsa.pub ~/.ssh/authorized_keys

9. 再來到 Backup Server 上 建立 crontab
crontab -e
加上以下一行命令
20 12,23 * * * sh /home/young/backup83.sh
在 12:20 和 23:20 把data copy 過來, 時間上晚了 10 分鐘,
當然了若您的 Oracle Server 資料量過多, 在 10 分鐘內可能 export 不完
這時間可以在往後延一些

10. 大功告成, 只要定時看一下 oracle 的 data 有沒有被放到 Backup Server 上即可!!!!!