自動備份Oracle數(shù)據(jù)庫
更新時間:2007年03月06日 00:00:00 作者:
正在看的ORACLE教程是:自動備份Oracle數(shù)據(jù)庫?! ∠嘈艦閿?shù)不少的系統(tǒng)管理員每天都在做著同一樣的工作——對數(shù)據(jù)進行備份。一旦哪一天疏忽了,而這一天系統(tǒng)又恰恰發(fā)生了故障,需要進行數(shù)據(jù)恢復,那么此時就無能為力了。假如每天設定一個固定的時間,系統(tǒng)自動進行備份,那該多好?。∠旅婀P者結(jié)合實踐經(jīng)驗,談一談UNIX環(huán)境下Oracle數(shù)據(jù)庫的自動備份,以起到拋磚引玉的作用。
我們計劃讓數(shù)據(jù)庫在晚上23點做export導出備份,在凌晨2點將備份文件拷貝到磁帶上,在凌晨4點將備份文件拷貝到另一臺UNIX機器上,為此我們可進行如下操作:
一、導出數(shù)據(jù)庫
export命令將數(shù)據(jù)庫中的數(shù)據(jù)備份成一個二進制文件,它通常有三種模式:用戶模式、表模式和整個數(shù)據(jù)庫模式。本文擬采用用戶模式,備份之前,應先建立一個備份目錄,以容納備份文件,比如可建一個/backup目錄。接著我們可在UNIX的Oracle目錄下(也可以是其它目錄)分別建立兩個文件ora—backup,tar—backup。需要說明的是,前一個文件需要對Oracle的參數(shù)進行初始化,為了方便起見,我們不妨將初始化命令放到一個文件中(文件名姑且定為ora—env),再由第一個文件調(diào)用它。
1. ora—env文件對Oracle的參數(shù)進行初始化,其內(nèi)容如下:
ORACLE—HOME=$ORACLE—HOME;export ORACLE—HOME
ORACLE—SID=ora73;export ORACLE—SID
ORACLE—TERM=sun;export ORACLE—TERM
LD—LIBRARY—PATH=$ORACLE—HOME/lib;export LD—LIBRARY—PATH
ORA—NLS32=$ORACLE—HOME/ocommon/nls/admin/data;export ORA—NLS
PATH=.:/usr/ccs/bin:/usr/ucb:$ORACLE—HOME/bin:$PATH;export PATH
DISPLAY=host1:0;export DISPLAY
NLS—LANG=american—america.zhs16cgb231280;export NLS—LANG
2. ora—backup文件對數(shù)據(jù)庫做export導出,導出的文件名可以任意定,本文定為字母“xx”加當天日期,即假如當天日期是12月10號,則導出的文件名為“xx1210.dmp”,以區(qū)別于其它日期的備份文件。
ora—backup文件內(nèi)容:
./oracle/ora—env
#初始化Oracle數(shù)據(jù)庫
rq=′date +″%m%d″ ′
?。0旬斕烊掌谫x予變量rq
rm /backup/
# 清空 /backup目錄
exp test/test file=/backup/xx$rq.dmp log=/backup/xx$rq.log
本命令用于在$提示符下,導出test用戶的數(shù)據(jù)(其口令亦為test),導出文件及日志均放在/backup目錄下。
二、磁帶備份
tar—backup文件將用export命令導出的數(shù)據(jù)文件拷貝到磁帶上。
tar—backup文件內(nèi)容:
tar rvf /dev/rmt/0n/backup/
本命令可將/backup目錄下當天產(chǎn)生的文件備份到磁帶上。本文件中,tar命令使用了三個參數(shù),其中r選項表示向磁帶上拷入文件而不破壞磁帶原來內(nèi)容,v選項表示在拷貝過程中顯示文件信息,f選項后面加上磁帶設備名,指定文件向何處拷貝,n選項表示磁帶機不倒帶。/dev/rmt/0表示UNIX主機第一個磁帶驅(qū)動器,同理,/dev/rmt/1則表示UNIX主機第二個磁帶驅(qū)動器,依此類推。
ora—env、ora—backup、tar—backup文件編寫完成后,分別使用下述命令:
chmod 755 ora—env
chmod 755 ora—backup
chmod 755 tar—backup
這樣,三個文件就都變成了可執(zhí)行文件。
三、異地備份
我們知道,通??捎肍TP命令在兩臺主機間傳輸數(shù)據(jù),但一般是通過交互方式實現(xiàn)的,即需要手工輸入目標主機的IP地址、用戶名、口令等。顯然,這不符合自動備份的要求。所幸的是,我們可以通過編寫一個.netrc的文件來達到目標。這一文件必須命名為.netrc,且必須存放在啟動FTP命令的機器上的用戶注冊目錄中,該文件的權(quán)限應禁止組內(nèi)或其它用戶進行讀訪問。這樣,當用戶使用FTP命令的時候,系統(tǒng)將會在該用戶的注冊目錄中尋找.netrc文件,如果能夠?qū)ふ业?,將會首先?zhí)行該文件,否則,會交互式地提示用戶輸入用戶名、口令等。
在使用FTP命令之前,應先在另一臺作備份用的UNIX機器上建一目錄,以容納備份文件,本文建的目錄是/pub 。需要指出的是,為了加快備份速度,兩臺主機之間的傳輸速率應盡可能的高,最好位于同一局域網(wǎng)上。
.netrc文件內(nèi)容如下:
machine host2
?。?host2為作備份用的主機名
login oracle
?。racle為備份主機上的一個用戶
password oracle
?。racle用戶的口令為oracle
macdef init
?。6x一個名為init的宏,它將在自動注冊進程的最后被執(zhí)行
bin
#文件的傳輸方式設為二進制
lcd /backup
?。?進入本地工作目錄/backup
cd /pub
# 進入備份主機目錄/pub
mput
?。?將/backup目錄下的所有文件傳輸至備份主機
bye
#退出FTP會話進程
.netrc文件編寫完成后,使用下述命令:
chmod 600 .netrc
這樣,.netrc文件就只能被該用戶所訪問。
四、啟動備份進程
Cron是一個永久進程,它由/etc/rc.local啟動執(zhí)行。Cron檢查/var/spool/cron/crontabs/目錄中的文件,找到所要執(zhí)行的任務和執(zhí)行任務的時間。
Crontab文件的每一行由六個域(minutes、hours、day of month、month、day of week、 command)組成,域之間用空格或Tab分開,其中:
minutes:分鐘域,值的范圍是0到59
hours:小時域,值的范圍是0到23
day of month:日期,值的范圍是1到31
month:月份,值的范圍是1到12
day of week:星期,值的范圍是0到6,星期日值為0
command:所要運行的命令
如果一個域是,表明命令可以在該域所有可能的取值范圍內(nèi)執(zhí)行。
如果一個域是由連字符隔開的兩個數(shù)字,表明命令可以在兩個數(shù)字之間的范圍內(nèi)執(zhí)行(包括兩個數(shù)字本身)。
如果一個域是由逗號隔開的一系列值組成的,表明命令可以在這些值組成的范圍內(nèi)執(zhí)行。
如果日期域和星期域都有值,則這兩個域都有效。
現(xiàn)在,我們編寫一個文件,用以啟動自動備份進程。值得注意的是,該文件只能在Oracle用戶名下用crontab -e 命令來編輯,否則將不會被定時執(zhí)行,文件名定為Oracle,文件將放在/var/spool/cron/crontabs 目錄下。編輯完成后,可以在Oracle的$提示符下,用crontab -l命令來查看。
Oracle文件內(nèi)容:
0 23 /oracle/ora—backup
?。?每天23點對數(shù)據(jù)庫執(zhí)行備份
0 2 /oracle/tar—backup
# 每天2點將文件備份到磁帶上
0 4 ftp -i host2
?。?每天4點將文件備份到另一臺主機上
經(jīng)過以上的操作后,系統(tǒng)每天晚上將自動產(chǎn)生一個備份,并且自動將備份文件分別拷貝到磁帶上和另一臺主機上。正在看的ORACLE教程是:自動備份Oracle數(shù)據(jù)庫。系統(tǒng)管理員需要做的是,隔幾天換一盤磁帶(更換磁帶的周期取決于備份文件的大小和磁帶的容量)和清理備份目錄。這樣,他們就可以從備份數(shù)據(jù)的繁瑣中解脫出來,去做其它更有意義的工作。而數(shù)據(jù)庫既實現(xiàn)了磁帶備份,又實現(xiàn)了異地備份,相應的安全性也大大提高了。
我們計劃讓數(shù)據(jù)庫在晚上23點做export導出備份,在凌晨2點將備份文件拷貝到磁帶上,在凌晨4點將備份文件拷貝到另一臺UNIX機器上,為此我們可進行如下操作:
一、導出數(shù)據(jù)庫
export命令將數(shù)據(jù)庫中的數(shù)據(jù)備份成一個二進制文件,它通常有三種模式:用戶模式、表模式和整個數(shù)據(jù)庫模式。本文擬采用用戶模式,備份之前,應先建立一個備份目錄,以容納備份文件,比如可建一個/backup目錄。接著我們可在UNIX的Oracle目錄下(也可以是其它目錄)分別建立兩個文件ora—backup,tar—backup。需要說明的是,前一個文件需要對Oracle的參數(shù)進行初始化,為了方便起見,我們不妨將初始化命令放到一個文件中(文件名姑且定為ora—env),再由第一個文件調(diào)用它。
1. ora—env文件對Oracle的參數(shù)進行初始化,其內(nèi)容如下:
ORACLE—HOME=$ORACLE—HOME;export ORACLE—HOME
ORACLE—SID=ora73;export ORACLE—SID
ORACLE—TERM=sun;export ORACLE—TERM
LD—LIBRARY—PATH=$ORACLE—HOME/lib;export LD—LIBRARY—PATH
ORA—NLS32=$ORACLE—HOME/ocommon/nls/admin/data;export ORA—NLS
PATH=.:/usr/ccs/bin:/usr/ucb:$ORACLE—HOME/bin:$PATH;export PATH
DISPLAY=host1:0;export DISPLAY
NLS—LANG=american—america.zhs16cgb231280;export NLS—LANG
2. ora—backup文件對數(shù)據(jù)庫做export導出,導出的文件名可以任意定,本文定為字母“xx”加當天日期,即假如當天日期是12月10號,則導出的文件名為“xx1210.dmp”,以區(qū)別于其它日期的備份文件。
ora—backup文件內(nèi)容:
./oracle/ora—env
#初始化Oracle數(shù)據(jù)庫
rq=′date +″%m%d″ ′
?。0旬斕烊掌谫x予變量rq
rm /backup/
# 清空 /backup目錄
exp test/test file=/backup/xx$rq.dmp log=/backup/xx$rq.log
本命令用于在$提示符下,導出test用戶的數(shù)據(jù)(其口令亦為test),導出文件及日志均放在/backup目錄下。
二、磁帶備份
tar—backup文件將用export命令導出的數(shù)據(jù)文件拷貝到磁帶上。
tar—backup文件內(nèi)容:
tar rvf /dev/rmt/0n/backup/
本命令可將/backup目錄下當天產(chǎn)生的文件備份到磁帶上。本文件中,tar命令使用了三個參數(shù),其中r選項表示向磁帶上拷入文件而不破壞磁帶原來內(nèi)容,v選項表示在拷貝過程中顯示文件信息,f選項后面加上磁帶設備名,指定文件向何處拷貝,n選項表示磁帶機不倒帶。/dev/rmt/0表示UNIX主機第一個磁帶驅(qū)動器,同理,/dev/rmt/1則表示UNIX主機第二個磁帶驅(qū)動器,依此類推。
ora—env、ora—backup、tar—backup文件編寫完成后,分別使用下述命令:
chmod 755 ora—env
chmod 755 ora—backup
chmod 755 tar—backup
這樣,三個文件就都變成了可執(zhí)行文件。
三、異地備份
我們知道,通??捎肍TP命令在兩臺主機間傳輸數(shù)據(jù),但一般是通過交互方式實現(xiàn)的,即需要手工輸入目標主機的IP地址、用戶名、口令等。顯然,這不符合自動備份的要求。所幸的是,我們可以通過編寫一個.netrc的文件來達到目標。這一文件必須命名為.netrc,且必須存放在啟動FTP命令的機器上的用戶注冊目錄中,該文件的權(quán)限應禁止組內(nèi)或其它用戶進行讀訪問。這樣,當用戶使用FTP命令的時候,系統(tǒng)將會在該用戶的注冊目錄中尋找.netrc文件,如果能夠?qū)ふ业?,將會首先?zhí)行該文件,否則,會交互式地提示用戶輸入用戶名、口令等。
在使用FTP命令之前,應先在另一臺作備份用的UNIX機器上建一目錄,以容納備份文件,本文建的目錄是/pub 。需要指出的是,為了加快備份速度,兩臺主機之間的傳輸速率應盡可能的高,最好位于同一局域網(wǎng)上。
.netrc文件內(nèi)容如下:
machine host2
?。?host2為作備份用的主機名
login oracle
?。racle為備份主機上的一個用戶
password oracle
?。racle用戶的口令為oracle
macdef init
?。6x一個名為init的宏,它將在自動注冊進程的最后被執(zhí)行
bin
#文件的傳輸方式設為二進制
lcd /backup
?。?進入本地工作目錄/backup
cd /pub
# 進入備份主機目錄/pub
mput
?。?將/backup目錄下的所有文件傳輸至備份主機
bye
#退出FTP會話進程
.netrc文件編寫完成后,使用下述命令:
chmod 600 .netrc
這樣,.netrc文件就只能被該用戶所訪問。
四、啟動備份進程
Cron是一個永久進程,它由/etc/rc.local啟動執(zhí)行。Cron檢查/var/spool/cron/crontabs/目錄中的文件,找到所要執(zhí)行的任務和執(zhí)行任務的時間。
Crontab文件的每一行由六個域(minutes、hours、day of month、month、day of week、 command)組成,域之間用空格或Tab分開,其中:
minutes:分鐘域,值的范圍是0到59
hours:小時域,值的范圍是0到23
day of month:日期,值的范圍是1到31
month:月份,值的范圍是1到12
day of week:星期,值的范圍是0到6,星期日值為0
command:所要運行的命令
如果一個域是,表明命令可以在該域所有可能的取值范圍內(nèi)執(zhí)行。
如果一個域是由連字符隔開的兩個數(shù)字,表明命令可以在兩個數(shù)字之間的范圍內(nèi)執(zhí)行(包括兩個數(shù)字本身)。
如果一個域是由逗號隔開的一系列值組成的,表明命令可以在這些值組成的范圍內(nèi)執(zhí)行。
如果日期域和星期域都有值,則這兩個域都有效。
現(xiàn)在,我們編寫一個文件,用以啟動自動備份進程。值得注意的是,該文件只能在Oracle用戶名下用crontab -e 命令來編輯,否則將不會被定時執(zhí)行,文件名定為Oracle,文件將放在/var/spool/cron/crontabs 目錄下。編輯完成后,可以在Oracle的$提示符下,用crontab -l命令來查看。
Oracle文件內(nèi)容:
0 23 /oracle/ora—backup
?。?每天23點對數(shù)據(jù)庫執(zhí)行備份
0 2 /oracle/tar—backup
# 每天2點將文件備份到磁帶上
0 4 ftp -i host2
?。?每天4點將文件備份到另一臺主機上
經(jīng)過以上的操作后,系統(tǒng)每天晚上將自動產(chǎn)生一個備份,并且自動將備份文件分別拷貝到磁帶上和另一臺主機上。正在看的ORACLE教程是:自動備份Oracle數(shù)據(jù)庫。系統(tǒng)管理員需要做的是,隔幾天換一盤磁帶(更換磁帶的周期取決于備份文件的大小和磁帶的容量)和清理備份目錄。這樣,他們就可以從備份數(shù)據(jù)的繁瑣中解脫出來,去做其它更有意義的工作。而數(shù)據(jù)庫既實現(xiàn)了磁帶備份,又實現(xiàn)了異地備份,相應的安全性也大大提高了。
相關(guān)文章
Oracle中實現(xiàn)刪除重復數(shù)據(jù)只保留一條
這篇文章主要介紹了Oracle中實現(xiàn)刪除重復數(shù)據(jù)只保留一條,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
Oracle中幾種常見的數(shù)據(jù)庫錯誤類型及處理方法
處理常見的數(shù)據(jù)庫錯誤是數(shù)據(jù)庫管理的重要組成部分,以下是幾種常見的數(shù)據(jù)庫錯誤類型及其處理方法,結(jié)合具體代碼示例,以幫助你更好地解決這些問題,感興趣的小伙伴跟著小編一起來看看吧2024-09-09
oracle關(guān)聯(lián)查詢報invalid number錯誤的解決方法
這篇文章主要介紹了oracle關(guān)聯(lián)查詢報invalid number錯誤的解決方法,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-09-09
Oracle 管道 解決Exp/Imp大量數(shù)據(jù)處理問題
Oracle的exp/imp是許多用戶經(jīng)常使用的兩個工具. 它們常被用來做數(shù)據(jù)庫的邏輯備份,數(shù)據(jù)庫重組和數(shù)據(jù)轉(zhuǎn)移等工作.2009-07-07
深入Oracle的left join中on和where的區(qū)別詳解
本篇文章是對Oracle的left join中on和where的區(qū)別進行了詳細的分析介紹,需要的朋友參考下2013-06-06
如何在Oracle數(shù)據(jù)庫中更新CLOB字段
在Oracle數(shù)據(jù)庫中,Blob和Clob分別是兩種用來存儲大數(shù)據(jù)的字段類型,下面這篇文章主要給大家介紹了關(guān)于如何在Oracle數(shù)據(jù)庫中更新CLOB字段的相關(guān)資料,需要的朋友可以參考下2024-05-05
oracle誤刪數(shù)據(jù)恢復方法小結(jié)
最近幫客戶維護一個數(shù)據(jù)庫,數(shù)據(jù)庫中的數(shù)據(jù)被他誤刪了,下面就為大家分享下我是通過什么方法來實現(xiàn)的2015-08-08

