溫馨提示×

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

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

怎么使用Oracle數(shù)據(jù)庫(kù)的邏輯備份工具

發(fā)布時(shí)間:2021-11-05 11:33:35 來(lái)源:億速云 閱讀:145 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這篇文章主要介紹“怎么使用Oracle數(shù)據(jù)庫(kù)的邏輯備份工具”,在日常操作中,相信很多人在怎么使用Oracle數(shù)據(jù)庫(kù)的邏輯備份工具問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么使用Oracle數(shù)據(jù)庫(kù)的邏輯備份工具”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

Oracle數(shù)據(jù)庫(kù)可以通過數(shù)據(jù)泵expdp工具進(jìn)行數(shù)據(jù)的導(dǎo)出、導(dǎo)入。在介紹工具使用之前,先說個(gè)注意事項(xiàng),在Oracle11g之后新創(chuàng)建的表在沒有插入數(shù)據(jù)時(shí),是不會(huì)分配segment的,也就是說不會(huì)分配空間,而使用expdp導(dǎo)出時(shí),這類空表就不會(huì)被導(dǎo)出,導(dǎo)致數(shù)據(jù)庫(kù)結(jié)構(gòu)不完整(此情況不包含原先有數(shù)據(jù)后來(lái)被清空的表)。因此為了不會(huì)遺漏數(shù)據(jù),在導(dǎo)出時(shí)先對(duì)空表進(jìn)行一次處理(手動(dòng)分配空間):
1.通過user_tables查詢那些表時(shí)沒有數(shù)據(jù)的(注意:為了提高準(zhǔn)確性,可以先對(duì)用戶下的所有表進(jìn)行一次表分析analysis table),然后通過下面語(yǔ)句直接生成手動(dòng)分配segment的語(yǔ)句:

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

PS:當(dāng)然以上語(yǔ)句會(huì)把原先有數(shù)據(jù)后被清空的表也查詢出來(lái),但為了一個(gè)一個(gè)排除麻煩,就直接再?gòu)男路峙湟淮蝧egment。

2.批量執(zhí)行生成的語(yǔ)句即可。

一、以上處理完成后,下面說一下expdp導(dǎo)出工具的使用:

1.expdp工具導(dǎo)出的文件只能存放在數(shù)據(jù)庫(kù)服務(wù)器本地,是無(wú)法遠(yuǎn)程導(dǎo)出到其他服務(wù)器的(exp工具導(dǎo)出通過本地遠(yuǎn)程到數(shù)據(jù)庫(kù)服務(wù)器,將導(dǎo)出文件直接放到本地:),只能導(dǎo)出存放到數(shù)據(jù)庫(kù)服務(wù)器本地,然后才能傳到你想存放的備份服務(wù)器。
expdp工具使用需要在數(shù)據(jù)庫(kù)中創(chuàng)建directory映射到指定存放dmp文件的系統(tǒng)目錄:

# 創(chuàng)建dmp文件存放系統(tǒng)目錄(當(dāng)然創(chuàng)建的目錄Oracle用戶要有權(quán)限讀寫):[oracle@local ~]$ mkdir /data/dmpfile
# 使用sys用戶(或者有DBA權(quán)限的用戶)登錄數(shù)據(jù)庫(kù)[oracle@local ~]$ sqlplus /  as sysdba
# 查看當(dāng)前實(shí)例是否是要進(jìn)行用戶導(dǎo)出的實(shí)例名
SQL> select instance_name from v$instance; # 創(chuàng)建directory名稱為expdp,映射目錄是剛才創(chuàng)建的目錄/data/dmpfile   
SQL> create directory expdp as '/data/dmpfile';  # 將該目錄讀寫權(quán)限授予用戶或者直接授予public,表示所有用戶都可使用,不用每次不同用戶都授權(quán)一次。
SQL> Grant read,write on directory expdp to PUBLIC;# 推出數(shù)據(jù)庫(kù)
SQL> exit
# 導(dǎo)出指定用戶數(shù)據(jù)進(jìn)行備份[oracle@local ~]$ expdp username/userpassword directory=expdp dumpfile=orcl_full20200216.dmp loggile=orcl_full20200216.log

2.impdp是數(shù)據(jù)泵的導(dǎo)入工具,要進(jìn)行dmp文件導(dǎo)入時(shí),需要將dmp文件放到執(zhí)行導(dǎo)入操作的數(shù)據(jù)庫(kù)服務(wù)器上,dmp存放的目錄是導(dǎo)入directory映射的目錄,當(dāng)然系統(tǒng)Oracle用戶要有讀寫權(quán)限:

# 在導(dǎo)入數(shù)據(jù)庫(kù)服務(wù)器上創(chuàng)建dmp文件存放系統(tǒng)目錄(當(dāng)然創(chuàng)建的目錄Oracle用戶要有權(quán)限讀寫):[oracle@localhost ~]$ mkdir /data/dmpfile2[oracle@localhost ~]$ mv orcl_full20200216.dmp /data/dmpfile2
# 使用sys用戶(或者有DBA權(quán)限的用戶)登錄數(shù)據(jù)庫(kù)[oracle@localhost ~]$ sqlplus /  as sysdba
# 查看當(dāng)前實(shí)例是否是要進(jìn)行導(dǎo)入的數(shù)據(jù)庫(kù)
SQL> select instance_name from v$instance; # 創(chuàng)建directory名稱為expdp,映射目錄是剛才創(chuàng)建的目錄/data/dmpfile2  
SQL> create directory expdp2 as '/data/dmpfile2';  # 將該目錄讀寫權(quán)限授予用戶或者直接授予public,表示所有用戶都可使用,不用每次不同用戶都授權(quán)一次。
SQL> Grant read,write on directory expdp2 to PUBLIC;# 推出數(shù)據(jù)庫(kù)
SQL> exit
# 導(dǎo)出指定用戶數(shù)據(jù)進(jìn)行備份[oracle@localhost ~]$ impdp username/userpassword directory=expdp2 dumpfile=orcl_full20200216.dmp loggile=orcl_full20200216.log

三、數(shù)據(jù)泵工具使用注意事項(xiàng)

1.expdp數(shù)據(jù)泵工具時(shí)向上兼容的,比如Oracle 11G使用expdp導(dǎo)出的dmp文件,可以直接導(dǎo)入Oracle 12C數(shù)據(jù)庫(kù)中,但是Oracle 12C導(dǎo)出的dmp文件是不能直接導(dǎo)入Oracle 11G中的。在expdp導(dǎo)出時(shí)導(dǎo)出語(yǔ)句還要加一個(gè)參數(shù),比如Oracle 12C導(dǎo)出dmp文件導(dǎo)入Oracle 11G數(shù)據(jù)庫(kù)中,在導(dǎo)出語(yǔ)句后加上 VERSION=11.1.0.0.0.:

[oracle@local ~]$ expdp username/userpassword directory=expdp dumpfile=orcl_full20200216.dmp loggile=orcl_full20200216.log VERSION=11.1.0.0.0

2.字符集要一致,數(shù)據(jù)庫(kù)字符集導(dǎo)入的數(shù)據(jù)庫(kù)要與導(dǎo)出的數(shù)據(jù)庫(kù)一致,保證數(shù)據(jù)正常導(dǎo)入。
查詢數(shù)據(jù)庫(kù)字符集的方法:

select userenv('language') from dual;

3.導(dǎo)出和導(dǎo)入前創(chuàng)建的存放dmp文件的目錄,oracle系統(tǒng)用戶必須有讀寫權(quán)限,為了避免此類錯(cuò)誤,可記住一點(diǎn),所有操作都在oracle系統(tǒng)用戶下操作,如果使用了root用戶來(lái)創(chuàng)建存放dmp文件的目錄,在創(chuàng)建后一定要進(jìn)行屬主屬組修改授權(quán),例如:

[root@local ~]# mkdir /data/dmpfile[root@local ~]# chown oracle:oinstall /data[root@local ~]# cd /data[root@local ~]# chown oracle:oinstall /dmpfile

注意:不要輕易使用chown -R /data/dmpfile的方式進(jìn)行授權(quán),如果/data目錄下有其他服務(wù)部署,此方法會(huì)導(dǎo)致/data下其他部署服務(wù)出現(xiàn)問題,為了防止這種錯(cuò)誤,一步一步授權(quán)比較保險(xiǎn)。

4.使用expdp進(jìn)行數(shù)據(jù)遷移時(shí),導(dǎo)入的數(shù)據(jù)庫(kù)要?jiǎng)?chuàng)建與導(dǎo)出數(shù)據(jù)庫(kù)相同表空間,尤其是一個(gè)表空間有多個(gè)數(shù)據(jù)文件的,必須要一致,防止導(dǎo)入時(shí)數(shù)據(jù)無(wú)法存入數(shù)據(jù)庫(kù)報(bào)錯(cuò)。

5.從大數(shù)據(jù)量的庫(kù)中導(dǎo)出一部分?jǐn)?shù)據(jù)時(shí)候,雖然導(dǎo)出的數(shù)據(jù)量很小,但是在導(dǎo)入的時(shí)候經(jīng)常報(bào)錯(cuò)表空間不足,原因是導(dǎo)出的數(shù)據(jù)中含有表空間的元數(shù)據(jù)(比如表占用的空間大?。?,
需要在導(dǎo)出的時(shí)加上compress 參數(shù)。

6.特殊的導(dǎo)出方式:
(1)按照查詢語(yǔ)句導(dǎo)出:

[oracle@local ~]$ expdp username/userpassword directory=expdp dumpfile=orcl_full20200216.dmp loggile=orcl_full20200216.log QUERY=employees:"WHERE department_id > 10"

(2)指定表名或者指定多個(gè)表導(dǎo)出:

# 導(dǎo)出所有sys開頭的表[oracle@local ~]$ expdp username/userpassword directory=expdp dumpfile=orcl_full20200216.dmp loggile=orcl_full20200216.log tables=(username.sys%)# 導(dǎo)出指定的多個(gè)表[oracle@local ~]$ expdp username/userpassword directory=expdp dumpfile=orcl_full20200216.dmp loggile=orcl_full20200216.log tables=(BTRULES, CDRULES, CXRULES, DTBTRULES, HLXRULES)

(3)規(guī)定dmp大小方式導(dǎo)出:

# 每個(gè)dmp大小為2G[oracle@local ~]$ expdp username/userpassword directory=expdp dumpfile=full_xzxt_%U.dmp filesize=2G  loggile=orcl_full20200216.log

(4)只導(dǎo)出表結(jié)構(gòu)

[oracle@local ~]$ expdp username/userpassword directory=expdp dumpfile=orcl_full20200216.dmp loggile=orcl_full20200216.log content=metadata_only

(5)只導(dǎo)出表結(jié)構(gòu)

[oracle@local ~]$ expdp username/userpassword directory=expdp dumpfile=orcl_full20200216.dmp loggile=orcl_full20200216.log content=data_only

(6)導(dǎo)入不同用戶,導(dǎo)出用戶為scott,導(dǎo)入用戶為zhang:

[oracle@local ~]$ impdp zhang/zhang directory=expdp dumpfile=scott.dmp logfile=scott.log schemas=scott remap_schema=scott:zhang

到此,關(guān)于“怎么使用Oracle數(shù)據(jù)庫(kù)的邏輯備份工具”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

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

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

AI