首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

SCO Unix 定時備份 Oracle DMP 檔案實作

     編輯:Oracle 資料庫基礎

前置條件

  • 掌握 Oracle System/備份帳號密碼、SCO Unix root/oracle 密碼
  • 熟悉 vi、mkdir、chmod、su、crontab

1. 建立備份目錄結構

# su - oracle
$ cd /dbf
$ mkdir dmpbak
$ cd dmpbak
$ mkdir zd cm

2. 編寫匯出腳本 exp_t

$ cd $ORACLE_HOME/bin
$ vi exp_t

exp_t 內容:

ORACLE_HOME=/oracle
ORACLE_SID=ora7
ORACLE_TERM=ansi
export ORACLE_HOME ORACLE_SID ORACLE_TERM
MENU5PATH=$ORACLE_HOME/forms30/admin/resource
export MENU5PATH
ORATERMPATH=$ORACLE_HOME/forms30/admin/resource
export ORATERMPATH
NLS_LANG=American_America.ZHS16CGB231280
export NLS_LANG
ORA_NLS=/oracle/ocommon/nls/admin/data
export ORA_NLS

home1='/dbf/dmpbak'
dt1=`date "+%y%m%d%H%M"`
echo ' ' > '$home1/new_record'
file_name="$home1/zd/zd$dt1"
echo $file_name >> '$home1/new_record'
$ORACLE_HOME/bin/exp zd/zdzd file=$file_name.dmp owner=zd grants=y buffer=204800 rows=y indexes=y compress=y

file_name="$home1/cm/cm$dt1"
echo $file_name >> '$home1/new_record'
$ORACLE_HOME/bin/exp common/cmcm file=$file_name.dmp owner=common grants=y buffer=204800 rows=y indexes=y compress=y

file='/dbf/dmpbak/new_record'
backup_dir='/oracle/sec_back'
if [ -d $backup_dir ]; then
  for i in `cat $file`; do cp $i $backup_dir/; done
  echo ' ' > $file
fi

3. 賦予執行權限並測試

$ chmod 755 exp_t
$ ./exp_t
$ ls /dbf/dmpbak/zd/  # 確認生成 .dmp 檔

4. 編寫刪除舊備份腳本 deldmp (保留 24 小時)

$ vi deldmp
home1='/dbf/dmpbak'
TZ=CST+16; export TZ
dt1=`date "+%y%m%d"`
file_name="$home1/zd/zd$dt1"
rm $file_name*.dmp
file_name="$home1/cm/cm$dt1"
rm $file_name*.dmp
TZ=CST-16; export TZ
$ chmod 755 deldmp
$ ./deldmp  # 測試

5. 設定 crontab

# crontab -e
35 * * * * su - oracle -c /oracle/bin/exp_t
55 1 * * * /oracle/bin/deldmp
  • 第 1 行:每小時 35 分執行備份
  • 第 2 行:每天 01:55 刪除前一日備份

簡化版 (直接覆蓋)

若不需保留歷史,可移除 deldmp,讓同名檔案直接覆蓋。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved