溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫邏輯備份與恢復(fù)是怎樣的

發(fā)布時間:2021-11-30 14:08:01 來源:億速云 閱讀:282 作者:柒染 欄目:數(shù)據(jù)庫

本篇文章為大家展示了數(shù)據(jù)庫邏輯備份與恢復(fù)是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

(一)問題:

初次接觸數(shù)據(jù)庫備份與恢復(fù),目前是應(yīng)用在這樣一個場景:

我們平時開發(fā)都是在自己的開發(fā)環(huán)境中進(jìn)行,開發(fā)完成之后,需要將oracle數(shù)據(jù)庫(安裝在Linux服務(wù)器上)轉(zhuǎn)到位客戶部署的服務(wù)器(也是Linux)之上。

所以就需要將開發(fā)環(huán)境中的數(shù)據(jù)庫備份出來,然后恢復(fù)到新的服務(wù)器機(jī)器上。

(二)解決方案:使用expdp/impdp數(shù)據(jù)泵

按照以下步驟進(jìn)行:

(1)備份表空間創(chuàng)建腳本:

將要備份的數(shù)據(jù)庫的所有表空間的創(chuàng)建語句拷貝出來,待會要用來在新數(shù)據(jù)庫上創(chuàng)建對應(yīng)的表空間;

(2)在自己的windows機(jī)器上利用expdp命令按照用戶導(dǎo)出數(shù)據(jù)庫:

expdp system/password@172.16.1.61/baseinfo dumpfile=user1.dmp directory=backup schemas=user1

以管理員system的身份登錄,導(dǎo)出用戶服務(wù)器172.16.1.61上的數(shù)據(jù)庫baseinfo實例下的user1用戶所屬的數(shù)據(jù)庫,dmp文件放在遠(yuǎn)端服務(wù)器172.16.1.61的oradata目錄下(注意,這個目錄是相對于Oracle的工作目錄而言的,如果導(dǎo)出出現(xiàn)“無效操作,不能操作日志文件”的錯誤,那就換一個導(dǎo)出目錄把,或者不要directory這項了)。

(3)dmp文件傳輸:

利用PenguiNet等windows連接linux的軟件將服務(wù)器上導(dǎo)出的dmp文件拷貝到windows上來,在將這個dmp文件上傳到目標(biāo)linux服務(wù)器(新數(shù)據(jù)庫),也可以直接用scp命令在源Linux和目標(biāo)Linux上互傳這個dmp文件。

注意:如果是覆蓋已經(jīng)存在的數(shù)據(jù)庫,即你要導(dǎo)入的目標(biāo)數(shù)據(jù)庫已經(jīng)存在了user1這個用戶,那么(4)(5)兩步跳過,直接到第(6)步。

(4)創(chuàng)建存放表空間的目錄:

PenguiNet連接到目標(biāo)Linux服務(wù)器,創(chuàng)建一個新的目錄來存放新數(shù)據(jù)庫的表空間:

mkdir -p /oradata/newDataBase
chown -R oracle:oogroup /oradata/newDataBase

創(chuàng)建一個目錄,然后將這個目錄的所有權(quán)賦給oogroup組的oracle用戶,因為是oracle用戶下創(chuàng)建的數(shù)據(jù)庫實例,所以需要給它讀寫這個目錄的權(quán)限。

(5)創(chuàng)建表空間:

使用Toad連接到目標(biāo)Linux服務(wù)器(System用戶登錄),將第一步中備份的創(chuàng)建表空間的腳本拷進(jìn)去,修改表空間文件的路徑為上一步創(chuàng)建的目錄路徑,然后執(zhí)行,創(chuàng)建好數(shù)據(jù)庫需要的所有表空間;

(6)在自己的windows機(jī)器上使用impdp命令導(dǎo)入數(shù)據(jù)導(dǎo)入到目標(biāo)Linux服務(wù)器指定實例下:

注意:在導(dǎo)入之前最好先執(zhí)行drop user userName cascade刪除即將要導(dǎo)入的用戶,然后再執(zhí)行下面的導(dǎo)入命令。

另外順便提一句,如果你是要導(dǎo)入多個用戶,可以刪除一個,導(dǎo)一個,因為它們之間可能會有以來,如果全部刪除了再一個個導(dǎo)入,那么可能會出現(xiàn)錯誤。

但是最好的辦法是全部所有用戶一起導(dǎo)出,然后一起導(dǎo)入,用戶名之間用逗號分隔。

impdp system/password@192.168.9.226/baseinfo dumpfile=user1.dmp schemas=user1

注意:用Penguinet的SCP方式連接,導(dǎo)航到user1.dmp文件所在的目錄,那么直接執(zhí)行上面的imp命令就可以找到這個dmp文件。

如果出現(xiàn)錯誤,一般是因為沒有找到dmp文件,你可以看看錯誤提示,它是在哪兒去找dmp文件,那么你就把dmp文件放到哪兒。

至此數(shù)據(jù)庫導(dǎo)出,導(dǎo)入工作結(jié)束,你在新機(jī)器上已經(jīng)擁有了一個同樣的數(shù)據(jù)庫,接下來用Toad測試一下,用user1用戶登錄。

(三)與exp/imp的區(qū)別:

1、Oracle 的導(dǎo)出導(dǎo)入是一個很常用的遷移工具。 在Oracle
10g
中,Oracle 推出了數(shù)據(jù)泵(expdp/impdp). 它可以通過使用并行,從而在效率上要比exp/imp 要高。

2、expdp/impdp調(diào)用Server端的API在執(zhí)行操作,是數(shù)據(jù)庫內(nèi)部的job任務(wù)??梢赃h(yuǎn)程使用,但是生成的dump
文件存在于服務(wù)器上的directory里。

3、據(jù)泵與exp/imp 來說性能有很大的提高, 其中影響最大的就是paralle。 可以這么來看:  expdp/impdp=exp/imp+direct
moe + paralle. 
所以, 使用數(shù)據(jù)泵,要想提高速度,就要設(shè)置并行參數(shù)。

Oracle數(shù)據(jù)庫邏輯備份和恢復(fù)——用exp和imp命令來實現(xiàn)

EXP和IMP是Oracle提供的一種邏輯備份工具。邏輯備份創(chuàng)建數(shù)據(jù)庫對象的邏輯拷貝并存入一個二進(jìn)制轉(zhuǎn)儲文件。這種邏輯備份需要在數(shù)據(jù)庫啟動的情況下使用, 其導(dǎo)出實質(zhì)就是讀取一個數(shù)據(jù)庫記錄集(甚至可以包括數(shù)據(jù)字典)并將這個記錄集寫入一個文件,這些記錄的導(dǎo)出與其物理位置無關(guān),導(dǎo)入實質(zhì)就是讀取轉(zhuǎn)儲文件并執(zhí)行其中的命令。此備份方式是通過Oracle的實用工具export和import來實施的, export是把數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出,import是把export卸出的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中。通過此工具可以衍生出多種功能, 比如整個數(shù)據(jù)庫的備份、表結(jié)構(gòu)重建、數(shù)據(jù)的傳輸、用戶的改變等等。

Oracle Export/Import工具提供了靈活多樣的功能和導(dǎo)出/導(dǎo)入模式,最常使用的三種模式是User、table和full database。除此以外,還可以在導(dǎo)出/導(dǎo)入時決定是否包含與對象有關(guān)的數(shù)據(jù)字典信息,如索引、約束、權(quán)限等等。

注意:通過邏輯備份可以備份整個數(shù)據(jù)庫, 或僅備份部分重要數(shù)據(jù)。因為是邏輯上的備份,故只能用于邏輯的恢復(fù)數(shù)據(jù), 一旦數(shù)據(jù)庫被物理損壞, 導(dǎo)致不能啟動,邏輯備份的數(shù)據(jù)不能幫助恢復(fù)數(shù)據(jù)庫。

首先介紹下 Export/Import的命令用法:

(一)將一個用戶的對象導(dǎo)入到另一個用戶模式中

把數(shù)據(jù)庫中原有的用戶Export至一個dmp文件(如把用戶olduser的對象導(dǎo)出到文件*****.dmp中):

命令: exp sys/password file=******.dmp owner=olduser grant=N
      indexes=Y rows=Y

從dmp文件中把一個用戶的對象import至一個用戶的模式中(從******.dmp中,把用戶user的對象導(dǎo)入到用戶newuser中):

命令:imp sys/password file=******,dmp fromuser=olduser
     touser=newuser indexes=Y rows=Y

導(dǎo)入時避免出現(xiàn)ORA-00942(表或是圖不存在)錯誤

因為,導(dǎo)出是按照在數(shù)據(jù)庫中對象建立的順序進(jìn)行的,從而在導(dǎo)入時,數(shù)據(jù)庫對象之間的依賴性會引起某些先導(dǎo)入對象找不到其依賴對象(如view、procedure等等),就會引起ORA-00942(表或是圖不存在)錯誤。通常解決這種問題的方法是,做兩次導(dǎo)入工作,第一遍導(dǎo)入時設(shè)置如下:

命令: imp sys/password file=******.dmp full=Y commit=y rows=Y

導(dǎo)入時如果出現(xiàn)錯誤,就修改設(shè)置:rows=n,ignore=n:

命令: imp sys/password file=******.dmp full=Y rows=N
      commit=Y ignore=N

(二)做無增量的全數(shù)據(jù)庫備份及恢復(fù)的例子

全數(shù)據(jù)庫Export至dmp文件(如******.dmp):

命令: exp sys/password file=******.dmp Full=y -- rows確省為Y

把整個數(shù)據(jù)庫備份的******.dmp文件至數(shù)據(jù)庫中:

命令: imp sys/password file=******.dmp ignore=y full=y-- rows確省為Y

注意:導(dǎo)入/導(dǎo)出是最徹底的減少磁盤碎片的方法。

其次介紹下數(shù)據(jù)庫備份策略:

(三)做全數(shù)據(jù)庫增量備份和恢復(fù)的方法:

全數(shù)據(jù)庫Export至dmp文件(如******.dmp)

命令: exp sys/manager file= ******.dmp Full=y inctype=complete

第一天增量備份Export至dmp文件(如第一天1.dmp):

命令: exp sys/manager file= 第一天1.dmp inctype=incremental

第二天增量備份Export至dmp文件(如第二天2.dmp):

命令: exp sys/manager file= 第二天2.dmp inctype=incremental

第三天增量備份Export至dmp文件(如第三天3.dmp):

命令: exp sys/manager file= 第三天3.dmp inctype=incremental

現(xiàn)假設(shè)Oracle數(shù)據(jù)庫在第三天被破壞了重新建一個Oracle數(shù)據(jù)庫,先把最后的一個dmp文件imp至數(shù)據(jù)庫中:

命令: imp sys/manager file= 第三天3.dmp full=y ignore=y inctype=system

把整個數(shù)據(jù)庫備份的dmp文件imp至數(shù)據(jù)庫中:

命令: imp sys/manager file= ******.dmp ignore=y full=y
      inctype=restore

把第一天增量備份的dmp文件imp至數(shù)據(jù)庫中:

命令: imp sys/manager file= 第一天1.dmp ignore=y full=y inctype=restore

把第二天增量備份的dmp文件imp至數(shù)據(jù)庫中:

命令: imp sys/manager file= 第二天2.dmp ignore=y full=y inctype=restore

把第三天增量備份的dmp文件imp至數(shù)據(jù)庫中

命令: imp sys/manager file= 第三天3.dmp ignore=y full=y inctype=restore

(四)利用windows任務(wù)計劃定時備份數(shù)據(jù)庫:

把上面各個命令寫成各個bat腳本, 然后添加備份的定時器,具體的配置步驟如下:

我的環(huán)境是windowxp操作系統(tǒng),在附件選擇系統(tǒng)工具,選擇任務(wù)計劃,然后點擊“添加任務(wù)計劃”,一步一步的按照提示往下走,定制的每個bat執(zhí)行的時間,這樣,就可以定時的執(zhí)行數(shù)據(jù)庫備份的任務(wù)任務(wù)。

上述內(nèi)容就是數(shù)據(jù)庫邏輯備份與恢復(fù)是怎樣的,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI