impdp导入表结构和表数据_ORACLE数据库如何用datapump工具导出表结构然后导入到其它Schema下面...
這里簡單介紹一下如何使用ORACLE數(shù)據(jù)庫的datapump工具導(dǎo)出、導(dǎo)入表結(jié)構(gòu)定義。由于業(yè)務(wù)場(chǎng)景可能非常簡單,你不會(huì)遇到任何問題,也有可能業(yè)務(wù)場(chǎng)景非常復(fù)雜,你就會(huì)遇到一些雜七雜八的問題。下面我簡單介紹一下個(gè)人遇到的需求。一批表準(zhǔn)備歸檔,歸檔的策略為將UserA下面的一批表T1、T2、、、、Tn,歸檔到UserB下面(UserB.T1, UserB.T2.....),那么必須在UserB下面創(chuàng)建這樣一批表,不想手工創(chuàng)建。手工創(chuàng)建的話,費(fèi)時(shí)又費(fèi)力,想利用datapump工具批量導(dǎo)出這批表的定義,然后批量導(dǎo)入。
正確的做法:
1:先導(dǎo)出表結(jié)構(gòu)定義
expdp xxxx/xxxx tables=xxx,xxx,xxx..... directory=dumpdir? content=metadata_only dumpfile=test.dmp logfile=exp_test_20200527.log;
2:導(dǎo)入表結(jié)構(gòu)定義時(shí),要做好幾件事情。
2.1? 原始表與目標(biāo)表位于不同的SCHEMA,那么導(dǎo)入的時(shí)候,就必須完成這種轉(zhuǎn)換,可以使用REMAP_SCHEMA參數(shù)將表和數(shù)據(jù)從一個(gè)SCHEMA轉(zhuǎn)移到另外一個(gè)SCHEMA,其作用類似于老的imp工具中的fromuser和touser參數(shù),impdp中將fromuser和touser參數(shù)合并成了REMAP_SCHEMA參數(shù)。該參數(shù)的使用方法REMAP_SCHEMA=source_schema:target_schema.
注意事項(xiàng):即使你指定的對(duì)應(yīng)SCHEMA不存在,只要導(dǎo)入時(shí)連接的用戶有足夠的權(quán)限,就會(huì)使用DUMP文件中的CREATE USER的metadata來創(chuàng)建一個(gè)對(duì)應(yīng)的用戶。
2.2? 一般而言,對(duì)應(yīng)SCHEMA(User)有默認(rèn)的表空間,有可能不同SCHEMA默認(rèn)的表空間不同,那么就必須用參數(shù)REMAP_TABLESPACE來解決導(dǎo)入數(shù)據(jù)更改表空間,否則就會(huì)遇到ORA-01950: no privileges on tablespace 'xxxxx' 這種錯(cuò)誤。
注意事項(xiàng):有可能原始表的數(shù)據(jù)和索引位于不同的表空間,所以可能需要匹配多個(gè)表空間,具體操作為REMAP_TABLESPACE=src1:dst1 REMAP_TABLESPACE=src2:dst2
2.3 邏輯沖突,這個(gè)無關(guān)工具的關(guān)系,而是由于邏輯關(guān)系緣故。
如下案例所示,例如原表"TEST"."INV_CARTONS"跟"TEST"."INV_STORE_CODES"有主外鍵關(guān)系。但是我們沒有導(dǎo)出、導(dǎo)入"TEST"."INV_STORE_CODES",那么此時(shí)不存在"TEST_ARCH"."INV_STORE_CODES",所以拋出一個(gè)錯(cuò)誤。
$ impdp xxx/xxx tables=test.inv_cartons,test.inv_month_end_aging directory=dumpdir? remap_schema=test:test_arch REMAP_TABLESPACE=TEST_DATA:TEST_DATA_ARCH REMAP_TABLESPACE=TEST_IDX:TEST_DATA_ARCH dumpfile=test.dmp logfile=imp_test_20200527.logImport: Release 10.2.0.5.0 - 64bit Production on Wednesday, 27 May, 2020 13:57:10Copyright (c) 2003, 2007, Oracle.? All rights reserved.Connected to: Oracle Database 10g Release 10.2.0.5.0 - 64bit ProductionMaster table "SYSTEM"."SYS_IMPORT_TABLE_01" successfully loaded/unloadedStarting "SYSTEM"."SYS_IMPORT_TABLE_01":? system/******** tables=test.inv_cartons,test.inv_month_end_aging directory=dumpdir remap_schema=test:test_arch REMAP_TABLESPACE=TEST_DATA:TEST_DATA_ARCH REMAP_TABLESPACE=TEST_IDX:TEST_DATA_ARCH dumpfile=test.dmp logfile=imp_test_20200527.logProcessing object type TABLE_EXPORT/TABLE/TABLEProcessing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANTProcessing object type TABLE_EXPORT/TABLE/INDEX/INDEXProcessing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINTProcessing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSProcessing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINTORA-39083: Object type REF_CONSTRAINT failed to create with error:ORA-00942: table or view does not existFailing sql is:ALTER TABLE "TEST_ARCH"."INV_CARTONS" ADD CONSTRAINT "FK_INV_CART_FK_INV_CA_INV_STOR" FOREIGN KEY ("STORE_CD") REFERENCES "TEST_ARCH"."INV_STORE_CODES" ("STORE_CD") ENABLE NOVALIDATEProcessing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSJob "SYSTEM"."SYS_IMPORT_TABLE_01" completed with 1 error(s) at 13:57:11
常見的datapump工具導(dǎo)入腳本例子
impdp xxx/xxx tables=xxxxxx directory=dumpdir? remap_schema=xxxxx:xxxxx REMAP_TABLESPACE=xxxx:xxxx REMAP_TABLESPACE=xxxx:xxxx dumpfile=test_20200527.dmp logfile=imp_test_20200527.log
標(biāo)簽:導(dǎo)入到,REMAP,test,TABLESPACE,TEST,datapump,ORACLE,TABLE,SCHEMA
來源: https://www.cnblogs.com/kerrycode/p/12978269.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的impdp导入表结构和表数据_ORACLE数据库如何用datapump工具导出表结构然后导入到其它Schema下面...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 糟糕!ChatGPT把魅族20的配置价格
- 下一篇: 世界有史以来最大百科全书!《永乐大典》首