imp 只导入索引_使用imp导入表和索引至不同表空间方法
在以前我的blog中,曾經(jīng)記錄過(guò)使用expdp/impdp方式將表和索引導(dǎo)入至不同表空間的方法,這里再提一下:
導(dǎo)出:
expdp?test/test?directory=dump_dir?dumpfile=test.dmp?logfile=test_expdp.log?tables=t
導(dǎo)入表數(shù)據(jù):
impdp?test/test?directory=dump_dir?dumpfile=test.dmp?logfile=impdp_data.log?remap_tablespace=system:datatb?exclude=index
導(dǎo)入索引數(shù)據(jù):
impdp?test/test?directory=dump_dir?dumpfile=test.dmp?logfile=impdp_index.log?remap_tablespace=system:idxtb?include=index
查詢語(yǔ)句:
select?segment_name,tablespace_name?from?dba_segments?where?owner='TEST';
本文記錄的是exp/imp方式將表和索引導(dǎo)入至不同表空間的方法,先說(shuō)明一下原因:
由于應(yīng)用數(shù)據(jù)需要遷移,要將原來(lái)數(shù)據(jù)庫(kù)中應(yīng)用數(shù)據(jù)通過(guò)導(dǎo)入導(dǎo)出的方式,遷移至目標(biāo)數(shù)據(jù)庫(kù),同時(shí)由于新的規(guī)劃需求,需要將表中數(shù)據(jù)和索引存放的表空間區(qū)分,遷移前后數(shù)據(jù)庫(kù)版本均為Oracle 10g。此操作本來(lái)是可以用上述expdp/impdp方式完成的,不過(guò)由于在源端數(shù)據(jù)庫(kù)沒有足夠空間存放導(dǎo)出后的dmp文件,所以需要使用其他方式完成數(shù)據(jù)遷移。
先給出一般的exp/imp遷移數(shù)據(jù)方法:
(為方便說(shuō)明,以下示例是將a用戶下的數(shù)據(jù)導(dǎo)入至b用戶,同時(shí)表中數(shù)據(jù)和索引表空間需遷移至不同表空間)
exp/imp方式將數(shù)據(jù)進(jìn)行遷移時(shí),如果想改變數(shù)據(jù)存放的表空間的話,需要注意2點(diǎn):
(1)導(dǎo)入用戶無(wú)DBA權(quán)限
(2)導(dǎo)入用戶無(wú)unlimited tablespace權(quán)限
不過(guò)這樣是無(wú)法將表中數(shù)據(jù)和索引導(dǎo)入至不同表空間的,如果想將索引導(dǎo)入至其他表空間,方法如下:
導(dǎo)出a用戶下數(shù)據(jù)
exp a/a file=exp_test.dmp log=exp_test.log
首先不導(dǎo)入索引,只導(dǎo)入表數(shù)據(jù)部分:
imp b/b file=exp_test.dmp log=imp_test_data.log fromuser=a touser=b indexes=n
之后,通過(guò)indexfile參數(shù),將創(chuàng)建索引的SQL語(yǔ)句保存至文本中:
imp b/b file=exp_test.dmp log=imp_test_index.log fromuser=a touser=b indexfile=index.sql
最后,通過(guò)修改并執(zhí)行索引創(chuàng)建的SQL語(yǔ)句index.sql,完成實(shí)際導(dǎo)入需求。
以上方式可以完成需求,不過(guò)操作起來(lái)比較麻煩,尤其需要注意:
(1)應(yīng)用用戶導(dǎo)入的缺省表空間及該用戶相關(guān)權(quán)限。
(2)修改index.sql文本的方法頗顯麻煩。
以下給出我的Oracle 10g下exp/imp遷移數(shù)據(jù)方法,也是本次數(shù)據(jù)遷移實(shí)際使用的方法:
首先使用expdp/impdp方法遷移元數(shù)據(jù)(metadata):
導(dǎo)出:
expdp system/oracle directory=dump_dir dumpfile=expdp_test.dmp logfile=expdp_test.log CONTENT=METADATA_ONLY schemas=a
導(dǎo)入元數(shù)據(jù)(metadata),指定不同表空間。
impdp system/oracle directory=dump_dir dumpfile=expdp_test.dmp logfile=impdp_test_data.log remap_schema=a:b remap_tablespace=splex:datatb exclude=index
impdp system/oracle directory=dump_dir dumpfile=expdp_test.dmp logfile=impdp_test_index.log remap_schema=a:b remap_tablespace=splex:proftb include=index
之后,通過(guò)exp/imp方式遷移應(yīng)用數(shù)據(jù),注意源數(shù)據(jù)庫(kù)字符集、目標(biāo)端數(shù)據(jù)庫(kù)字符集、客戶端字符集設(shè)置應(yīng)當(dāng)一致,避免字符轉(zhuǎn)換:
exp a/a file=exp_test.dmp log=exp_test.log STATISTICS=none buffer=52428800
imp b/b file=exp_test.dmp log=imp_test.log fromuser=a touser=b ignore=y commit=y buffer=52428800 indexes=n grants=n constraints=n
通過(guò)上述方式,可完成exp/imp遷移數(shù)據(jù)的方法。
數(shù)據(jù)泵的其他導(dǎo)出方法:
雖然本次數(shù)據(jù)遷移未使用到,不過(guò)還是記錄一下。
其實(shí)數(shù)據(jù)泵是可以在客戶端導(dǎo)出數(shù)據(jù)的,即指定NETWORK_LINK參數(shù):
expdp system/password NETWORK_LINK=db_link_name DIRECTORY=data_pump_dir DUMPFILE=server.dmp TABLES=employees
這種方式需要涉及到2個(gè)數(shù)據(jù)庫(kù)實(shí)例,相當(dāng)于是客戶端的數(shù)據(jù)庫(kù)通過(guò)使用database link訪問(wèn)了服務(wù)器端的數(shù)據(jù)庫(kù),并通過(guò)數(shù)據(jù)泵方式實(shí)現(xiàn)服務(wù)器端數(shù)據(jù)的導(dǎo)出。
總結(jié)
以上是生活随笔為你收集整理的imp 只导入索引_使用imp导入表和索引至不同表空间方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 原理 msc_解析应用在气象站中的GPR
- 下一篇: mysql执行语句_实时查看MySQL执