Как да импортирате Oracle (C)LOB в друго таблично пространство

Импортирам дъмп на база данни от една инсталация на Oracle 10g в друга. Източникът има оформление с няколко таблични пространства. Целта има едно таблично пространство по подразбиране за потребителя, в който импортирам дъмпа.

Всичко работи добре, за обикновени маси. Таблиците се преместват от първоначалното си таблично пространство към потребителското по подразбиране. Проблемът, с който се сблъсквам, е, че няколко таблици съдържат CLOB с изрични директиви за съхранение. Тоест, те дават име на своето таблично пространство за съхранение. Командата imp изглежда не може да премести тези CLOB в табличното пространство по подразбиране на потребителя.

Има ли някаква скрита опция на командния ред за командата imp за преместване на CLOB хранилището в табличното пространство по подразбиране на потребителя или дори едно наименувано таблично пространство?

Съобщението за грешка ORACLE 959 изглежда така:

IMP-00017: Nachfolgende Anweisung war wegen Oracle-Fehler 959 erfolglos:
 "CREATE TABLE "IF_MDE_DATA_OUT" ("OID" NUMBER(10, 0) NOT NULL ENABLE, "CLIEN"
 "T_OID" NUMBER(10, 0) NOT NULL ENABLE, "TS_CREATE" TIMESTAMP (6) NOT NULL EN"
 "ABLE, "TS_UPDATE" TIMESTAMP (6) NOT NULL ENABLE, "OP_CREATE" VARCHAR2(30) N"
 "OT NULL ENABLE, "OP_UPDATE" VARCHAR2(30) NOT NULL ENABLE, "IDENTIFIER" VARC"
 "HAR2(50), "TRANSFERTYPE" VARCHAR2(20) NOT NULL ENABLE, "STORE" NUMBER(10, 0"
 "), "DATUM" DATE, "STATE" NUMBER(3, 0) NOT NULL ENABLE, "DATA_OLD" LONG RAW,"
 " "SUPPLIER" NUMBER(10, 0), "BUYER" NUMBER(10, 0), "GOODS_OUT_IDS" VARCHAR2("
 "4000), "CUSTOM_FIELD" VARCHAR2(50), "DATA_ARCHIVE" BLOB, "DATA" BLOB)  PCTF"
 "REE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1"
 " FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "DATA32M" LOGGING NOCOMP"
 "RESS LOB ("DATA_ARCHIVE") STORE AS  (TABLESPACE "DATA32M" ENABLE STORAGE IN"
 " ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGGING  STORAGE(INITIAL 65536 FREELI"
 "STS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) LOB ("DATA") STORE AS  (TABLE"
 "SPACE "DATA32M" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGG"
 "ING  STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAUL"
 "T))"
IMP-00003: ORACLE-Fehler 959 aufgetreten
ORA-00959: Tablespace 'DATA32M' nicht vorhanden

person Kriegel    schedule 17.12.2009    source източник
comment
След всички тези години обичам да споделям опита си по този въпрос. Използването на datapump вместо просто изхвърляне и импортиране е, както е предложено в отговорите по-долу, по-добро от подхода в моя въпрос. Решението, предложено от Гари, работи добре с Datapump.   -  person Kriegel    schedule 22.11.2017


Отговори (3)


Можете предварително да създадете таблицата, като използвате параметрите за съхранение, от които се нуждаете, и да настроите импортирането да игнорира грешките.

person David Aldridge    schedule 17.12.2009

Подобно на Карл, препоръчвам Datadump, но използвайте REMAP_TABLESPACE

person Gary Myers    schedule 17.12.2009

Ако използвате Data Pump Dumps, можете да опитате опцията remap_schema, за да коригирате табличното пространство.

person Karl Bartel    schedule 17.12.2009