Как импортировать Oracle (C) LOB в другое табличное пространство
-
20-09-2019 - |
Вопрос
Я импортирую дамп базы данных из одной установки Oracle 10g в другую.Исходный код имеет макет с несколькими табличными пространствами.Целевой объект имеет одно табличное пространство по умолчанию для пользователя, в которое я импортирую дамп.
Все работает нормально, для обычных таблиц.Таблицы перемещаются из их исходного табличного пространства в пользовательское по умолчанию.Проблема, с которой я сталкиваюсь, заключается в том, что несколько таблиц содержат CLOBs с явными директивами хранения.То есть они называют свое табличное пространство хранения.Команда imp, похоже, не может переместить эти CLOBs в табличное пространство пользователя по умолчанию.
Существует ли какая-либо скрытая опция командной строки для команды 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
Решение
Вы могли бы предварительно создать таблицу, используя необходимые вам параметры хранилища, и настроить импорт так, чтобы ошибки игнорировались.
Другие советы
Как и Карл, я рекомендую Datadump, но использую ПЕРЕНАЗНАЧЕНИЕ_ТАБЛИЧНОЕ ПРОСТРАНСТВО
Если вы используете дампы перекачки данных, вы могли бы попробовать опцию remap_schema, чтобы исправить табличное пространство.