利用Crontab實現對Oracle資料庫的定時備份

來源:互聯網
上載者:User
利用Crontab實現對Oracle資料庫的定時備份
徐宇澤
01-4-29 上午 09:53:52

對Oracle資料庫的定時熱備份(Exp)通常可用兩種辦法實現,一種是在Oracle資料庫中利用其提供的任務隊列管理器(Job Queue)來實現;另一種是利用作業系統的定時執行命令來完成。在第一種方法中需要資料庫啟動後台進程SNP,並且需在Oracle的初始設定檔案中加入任務隊列的啟動參數,而第二種方法不需對資料庫做任何改動即可完成。本例介紹如何利用Digital Unix 4.0F下的定時觸發器Crontab去完成對Oracle8i資料庫的熱備份。
一、命令的使用方法
1、Crontab的使用方法
Crontab是UNIX系統下的定時任務觸發器,其使用者的許可權記載在下列兩個檔案中:
/usr/var/adm/cron/cron.deny:該檔案中所列的使用者不允許使用Crontab命令;
/usr/var/adm/cron/cron.allow:該檔案中所列的使用者允許使用Crontab命令;
Crontab命令的格式為:crontab –l|-v|-r|-e [username],其參數含義如表一:

表一  Crontab參數的使用方法

參數名稱<?XML:NAMESPACE PREFIX = O />

含義

-l

顯示使用者的Crontab檔案的內容

-v

顯示使用者的Crontab檔案的內容及其提交的時間,只適用於Compaq系列

-r

從Crontab目錄中刪除使用者的Crontab檔案

-e

編輯使用者的Crontab檔案

使用者所建立的Crontab檔案存於/var/spool/cron/crontabs中,其檔案名稱與使用者名稱一致。它的格式共分為六段,前五段為時間設定段,第六段為所要執行的命令段,格式如下:
* * * * * <command>
其時間段的含義如表二:

表二  Crontab檔案中時間段的含義

含義

取值範圍

第一段

代表分鐘

0—59

第二段

代表小時

0—23

第三段

代表日期

1—31

第四段

代表月份

1—12

第五段

代表星期幾,0代表星期日

0—6

例:如果使用者的Crontab檔案的內容是:29 19 * * * echo its dinner time,則系統每天的19:29顯示‘its dinner time’。
2、Exp的使用方法
Exp為Oracle資料庫的熱備份命令,其經常使用格式為:
exp userid file=…… owner=[username]
因Exp命令的參數較多,這裡不逐一介紹了,讀者可通過exp help=y命令瞭解Exp命令各項參數的用法,下面只把將要用到的三個參數的含義介紹給大家,見表三:

表三  Exp的常用參數

參數名稱

含義

userid

寫法為[username]/[userpassword],Oracle中的使用者名稱/口令,其必須為Exp的第一個參數

file

備份檔案所放位置及名稱

owner

備份該使用者所擁有的Oracle對象(表、預存程序等)

二、實現方法
假設資料庫的擁有者為oracle,資料庫的使用者為scott,其口令為trigger,Oracle資料庫的參數$ORACLE_HOME為/usr/oracle,$ORACLE_SID為orcl,則實現步驟如下:
1、建立實現備份的shell
在/usr/oracle中用vi命令建立檔案backup.sh,其內容為:
ORACLE_HOME=/usr/oracle;
export ORACLE_HOME;
ORACLE_SID=orcl;
export ORACLE_SID;
/usr/oracle/bin/exp scott/trigger file=/usr/oracle/backup.dmp owner=scott
使用chmod命令修改backup.sh的屬性為可執行:
chmod +x backup.sh
到此,具有備份功能的可執行檔(shell)backup.sh已經建成。其執行結果是將scott所擁有的ORACLE對象備份到/usr/oracle中的backup.dmp中,讀者可以直接運行它來看看效果。值得注意的是,backup.sh中Oracle的兩個環境參數一定要聲明,否則系統會報錯。下一步將開始建立oracle使用者的Crontab檔案。
2、查看Crontab的使用許可權
使用超級使用者(root)的身份登入,在/usr/var/adm/cron下通過vi命令查看cron.deny檔案,如果資料庫的擁有者oracle被列在裡面,將其刪除即可。
3、建立oracle的Crontab檔案
用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檔案進行備份,以免誤操作對系統產生影響。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.