本篇文章為大家展示了數(shù)據(jù)庫邏輯備份與恢復(fù)是怎樣的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)是專業(yè)的湖南網(wǎng)站建設(shè)公司,湖南接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行湖南網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
(一)問題:
初次接觸數(shù)據(jù)庫備份與恢復(fù),目前是應(yīng)用在這樣一個(gè)場(chǎng)景:
我們平時(shí)開發(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)建語句拷貝出來,待會(huì)要用來在新數(shù)據(jù)庫上創(chuàng)建對(duì)應(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實(shí)例下的user1用戶所屬的數(shù)據(jù)庫,dmp文件放在遠(yuǎn)端服務(wù)器172.16.1.61的oradata目錄下(注意,這個(gè)目錄是相對(duì)于Oracle的工作目錄而言的,如果導(dǎo)出出現(xiàn)“無效操作,不能操作日志文件”的錯(cuò)誤,那就換一個(gè)導(dǎo)出目錄把,或者不要directory這項(xiàng)了)。
(3)dmp文件傳輸:
利用PenguiNet等windows連接linux的軟件將服務(wù)器上導(dǎo)出的dmp文件拷貝到windows上來,在將這個(gè)dmp文件上傳到目標(biāo)linux服務(wù)器(新數(shù)據(jù)庫),也可以直接用scp命令在源Linux和目標(biāo)Linux上互傳這個(gè)dmp文件。
注意:如果是覆蓋已經(jīng)存在的數(shù)據(jù)庫,即你要導(dǎo)入的目標(biāo)數(shù)據(jù)庫已經(jīng)存在了user1這個(gè)用戶,那么(4)(5)兩步跳過,直接到第(6)步。
(4)創(chuàng)建存放表空間的目錄:
PenguiNet連接到目標(biāo)Linux服務(wù)器,創(chuàng)建一個(gè)新的目錄來存放新數(shù)據(jù)庫的表空間:
mkdir -p /oradata/newDataBase
chown -R oracle:oogroup /oradata/newDataBase
創(chuàng)建一個(gè)目錄,然后將這個(gè)目錄的所有權(quán)賦給oogroup組的oracle用戶,因?yàn)槭莖racle用戶下創(chuàng)建的數(shù)據(jù)庫實(shí)例,所以需要給它讀寫這個(gè)目錄的權(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ù)器指定實(shí)例下:
注意:在導(dǎo)入之前最好先執(zhí)行drop user userName cascade刪除即將要導(dǎo)入的用戶,然后再執(zhí)行下面的導(dǎo)入命令。
另外順便提一句,如果你是要導(dǎo)入多個(gè)用戶,可以刪除一個(gè),導(dǎo)一個(gè),因?yàn)樗鼈冎g可能會(huì)有以來,如果全部刪除了再一個(gè)個(gè)導(dǎo)入,那么可能會(huì)出現(xiàn)錯(cuò)誤。
但是最好的辦法是全部所有用戶一起導(dǎo)出,然后一起導(dǎo)入,用戶名之間用逗號(hào)分隔。
impdp system/password@192.168.9.226/baseinfo dumpfile=user1.dmp schemas=user1
注意:用Penguinet的SCP方式連接,導(dǎo)航到user1.dmp文件所在的目錄,那么直接執(zhí)行上面的imp命令就可以找到這個(gè)dmp文件。
如果出現(xiàn)錯(cuò)誤,一般是因?yàn)闆]有找到dmp文件,你可以看看錯(cuò)誤提示,它是在哪兒去找dmp文件,那么你就把dmp文件放到哪兒。
至此數(shù)據(jù)庫導(dǎo)出,導(dǎo)入工作結(jié)束,你在新機(jī)器上已經(jīng)擁有了一個(gè)同樣的數(shù)據(jù)庫,接下來用Toad測(cè)試一下,用user1用戶登錄。
(三)與exp/imp的區(qū)別:
1、Oracle 的導(dǎo)出導(dǎo)入是一個(gè)很常用的遷移工具。 在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命令來實(shí)現(xiàn)
EXP和IMP是Oracle提供的一種邏輯備份工具。邏輯備份創(chuàng)建數(shù)據(jù)庫對(duì)象的邏輯拷貝并存入一個(gè)二進(jìn)制轉(zhuǎn)儲(chǔ)文件。這種邏輯備份需要在數(shù)據(jù)庫啟動(dòng)的情況下使用, 其導(dǎo)出實(shí)質(zhì)就是讀取一個(gè)數(shù)據(jù)庫記錄集(甚至可以包括數(shù)據(jù)字典)并將這個(gè)記錄集寫入一個(gè)文件,這些記錄的導(dǎo)出與其物理位置無關(guān),導(dǎo)入實(shí)質(zhì)就是讀取轉(zhuǎn)儲(chǔ)文件并執(zhí)行其中的命令。此備份方式是通過Oracle的實(shí)用工具export和import來實(shí)施的, export是把數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出,import是把export卸出的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中。通過此工具可以衍生出多種功能, 比如整個(gè)數(shù)據(jù)庫的備份、表結(jié)構(gòu)重建、數(shù)據(jù)的傳輸、用戶的改變等等。
Oracle Export/Import工具提供了靈活多樣的功能和導(dǎo)出/導(dǎo)入模式,最常使用的三種模式是User、table和full database。除此以外,還可以在導(dǎo)出/導(dǎo)入時(shí)決定是否包含與對(duì)象有關(guān)的數(shù)據(jù)字典信息,如索引、約束、權(quán)限等等。
注意:通過邏輯備份可以備份整個(gè)數(shù)據(jù)庫, 或僅備份部分重要數(shù)據(jù)。因?yàn)槭沁壿嬌系膫浞?故只能用于邏輯的恢復(fù)數(shù)據(jù), 一旦數(shù)據(jù)庫被物理損壞, 導(dǎo)致不能啟動(dòng),邏輯備份的數(shù)據(jù)不能幫助恢復(fù)數(shù)據(jù)庫。
首先介紹下 Export/Import的命令用法:
(一)將一個(gè)用戶的對(duì)象導(dǎo)入到另一個(gè)用戶模式中
把數(shù)據(jù)庫中原有的用戶Export至一個(gè)dmp文件(如把用戶olduser的對(duì)象導(dǎo)出到文件*****.dmp中):
命令: exp sys/password file=******.dmp owner=olduser grant=N
indexes=Y rows=Y |
從dmp文件中把一個(gè)用戶的對(duì)象import至一個(gè)用戶的模式中(從******.dmp中,把用戶user的對(duì)象導(dǎo)入到用戶newuser中):
命令:imp sys/password file=******,dmp fromuser=olduser
touser=newuser indexes=Y rows=Y |
導(dǎo)入時(shí)避免出現(xiàn)ORA-00942(表或是圖不存在)錯(cuò)誤
因?yàn)?,?dǎo)出是按照在數(shù)據(jù)庫中對(duì)象建立的順序進(jìn)行的,從而在導(dǎo)入時(shí),數(shù)據(jù)庫對(duì)象之間的依賴性會(huì)引起某些先導(dǎo)入對(duì)象找不到其依賴對(duì)象(如view、procedure等等),就會(huì)引起ORA-00942(表或是圖不存在)錯(cuò)誤。通常解決這種問題的方法是,做兩次導(dǎo)入工作,第一遍導(dǎo)入時(shí)設(shè)置如下:
命令: imp sys/password file=******.dmp full=Y commit=y rows=Y |
導(dǎo)入時(shí)如果出現(xiàn)錯(cuò)誤,就修改設(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 |
把整個(gè)數(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ù)庫在第三天被破壞了重新建一個(gè)Oracle數(shù)據(jù)庫,先把最后的一個(gè)dmp文件imp至數(shù)據(jù)庫中:
命令: imp sys/manager file= 第三天3.dmp full=y ignore=y inctype=system |
把整個(gè)數(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ù)計(jì)劃定時(shí)備份數(shù)據(jù)庫:
把上面各個(gè)命令寫成各個(gè)bat腳本, 然后添加備份的定時(shí)器,具體的配置步驟如下:
我的環(huán)境是windowxp操作系統(tǒng),在附件選擇系統(tǒng)工具,選擇任務(wù)計(jì)劃,然后點(diǎn)擊“添加任務(wù)計(jì)劃”,一步一步的按照提示往下走,定制的每個(gè)bat執(zhí)行的時(shí)間,這樣,就可以定時(shí)的執(zhí)行數(shù)據(jù)庫備份的任務(wù)任務(wù)。
上述內(nèi)容就是數(shù)據(jù)庫邏輯備份與恢復(fù)是怎樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:數(shù)據(jù)庫邏輯備份與恢復(fù)是怎樣的
本文路徑:http://muchs.cn/article42/gjgohc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化、標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、小程序開發(fā)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)