原文出處:http://www.ccw.com.cn/htm/app/aprog/01_4_29_3.asp
| 對Oracle資料庫的定時熱備份(Exp)通常可用兩種辦法實現,一種是在Oracle資料庫中利用其提供的任務隊列管理器(Job Queue)來實現;另一種是利用作業系統的定時執行命令來完成。在第一種方法中需要資料庫啟動後台進程SNP,並且需在Oracle的初始設定檔案中加入任務隊列的啟動參數,而第二種方法不需對資料庫做任何改動即可完成。本例介紹如何利用Digital Unix 4.0F下的定時觸發器Crontab去完成對Oracle8i資料庫的熱備份。 |
| Crontab是UNIX系統下的定時任務觸發器,其使用者的許可權記載在下列兩個檔案中: |
| /usr/var/adm/cron/cron.deny:該檔案中所列的使用者不允許使用Crontab命令; |
| /usr/var/adm/cron/cron.allow:該檔案中所列的使用者允許使用Crontab命令; |
| Crontab命令的格式為:crontab –l|-v|-r|-e [username],其參數含義如表一: |
| 參數名稱 |
含義 |
| -l |
顯示使用者的Crontab檔案的內容 |
| -v |
顯示使用者的Crontab檔案的內容及其提交的時間,只適用於Compaq系列 |
| -r |
從Crontab目錄中刪除使用者的Crontab檔案 |
| -e |
編輯使用者的Crontab檔案 |
|
| 使用者所建立的Crontab檔案存於/var/spool/cron/crontabs中,其檔案名稱與使用者名稱一致。它的格式共分為六段,前五段為時間設定段,第六段為所要執行的命令段,格式如下: |
| 段 |
含義 |
取值範圍 |
| 第一段 |
代表分鐘 |
0—59 |
| 第二段 |
代表小時 |
0—23 |
| 第三段 |
代表日期 |
1—31 |
| 第四段 |
代表月份 |
1—12 |
| 第五段 |
代表星期幾,0代表星期日 |
0—6 |
|
| 例:如果使用者的Crontab檔案的內容是:29 19 * * * echo its dinner time,則系統每天的19:29顯示‘its dinner time’。 |
| Exp為Oracle資料庫的熱備份命令,其經常使用格式為: |
| exp userid file=…… owner=[username] |
| 因Exp命令的參數較多,這裡不逐一介紹了,讀者可通過exp help=y命令瞭解Exp命令各項參數的用法,下面只把將要用到的三個參數的含義介紹給大家,見表三: |
| 參數名稱 |
含義 |
| userid |
寫法為[username]/[userpassword],Oracle中的使用者名稱/口令,其必須為Exp的第一個參數 |
| file |
備份檔案所放位置及名稱 |
| owner |
備份該使用者所擁有的Oracle對象(表、預存程序等) |
|
| 假設資料庫的擁有者為oracle,資料庫的使用者為scott,其口令為trigger,Oracle資料庫的參數$ORACLE_HOME為/usr/oracle,$ORACLE_SID為orcl,則實現步驟如下: |
| 在/usr/oracle中用vi命令建立檔案backup.sh,其內容為: |
| /usr/oracle/bin/exp scott/trigger file=/usr/oracle/backup.dmp owner=scott |
| 使用chmod命令修改backup.sh的屬性為可執行: |
| 到此,具有備份功能的可執行檔(shell)backup.sh已經建成。其執行結果是將scott所擁有的ORACLE對象備份到/usr/oracle中的backup.dmp中,讀者可以直接運行它來看看效果。值得注意的是,backup.sh中Oracle的兩個環境參數一定要聲明,否則系統會報錯。下一步將開始建立oracle使用者的Crontab檔案。 |
| 使用超級使用者(root)的身份登入,在/usr/var/adm/cron下通過vi命令查看cron.deny檔案,如果資料庫的擁有者oracle被列在裡面,將其刪除即可。 |
| 用oracle使用者登入,通過使用命令crontab –e oracle開始建立oracle使用者的Crontab檔案。其內容為: |
| 00 17 * * 1-5 “/usr/oracle/backup.sh” |
| 存檔退出後,你會發現在/var/spool/cron/crontabs中新增了一個名為oracle檔案,其作用是在周一至周五每天的17:00運行“/usr/oracle/backup.sh”。 |
| 到此大功告成,系統會將每次備份的資訊通過mail的形式發送給oracle使用者。在進行以上操作時,建議將/var/spool/cron/crontabs中其他使用者(尤其是root)的Crontab檔案進行備份,以免誤操作對系統產生影響。 |