Импорт dmp с секционированными таблицами в Oracle XE - PullRequest
0 голосов
/ 31 марта 2010

У меня есть схема, содержащая многораздельные таблицы. Я могу использовать exp для создания .dmp, но когда я импортирую его в Oracle XE, я получаю ошибки, потому что Oracle XE не поддерживает многораздельные таблицы.

Как мне импортировать .dmp в Oracle XE? Я думаю, что предварительное создание таблиц может сделать это, но как мне извлечь DDL каким-то автоматическим способом сделать это?

Или я могу как-то создать exp без разделов?

Ответы [ 4 ]

2 голосов
/ 30 апреля 2010

Вот что я делаю с expdp / impdp

  1. Использовать impdp SQLFILE = Create_Non_Partitioned_Tables.sql EXCLUDE = STATISTICS
  2. Скопируйте этот файл в Create_Indexes_Constraints.sql
  3. Редактировать Create_Non_Partitioned_Tables.sql, чтобы удалить все ссылки на индексы, ограничения и разделы, оставив только запросы CREATE.
  4. Редактировать Create_Indexes_Constraints.sql, чтобы удалить все ссылки на многораздельные таблицы и запросы CREATE.
  5. Запустите Create_Non_Partitioned_Tables.sql для создания однораздельных таблиц.
  6. Выполнить impdp с опцией CONTENT=DATA_ONLY
  7. Запустите Create_Indexes_Constraints.sql, чтобы создать индексы и ограничения.
2 голосов
/ 01 апреля 2010

Если вы попытаетесь выполнить импорт с ROWS = N, вы получите сообщение об ошибке «ORA-00439: функция не включена: разбиение на разделы», но вы также получите дамп оператора (ов), на котором произошел сбой.

Он заключен в 75 символов с двойными кавычками, но это то, что вы должны уметь обрабатывать с помощью текстового редактора (мне нравится PSPad, который имеет режим выбора столбцов, который легко избавится от кавычек в начале и в конце каждой строки, плюс функция JOIN LINES, чтобы склеить все вместе.

Вы также можете использовать dbms_metadata.get_ddl для извлечения DDL из источника.

В любом из этих случаев вам потребуется отредактировать символы, чтобы удалить предложения разделения перед запуском их в XE.

Если у вас много секционированных таблиц, посмотрите, сможет ли администратор баз данных установить временного пользователя в исходной среде с правами на выполнение CREATE TABLE abc AS SELECT * FROM realuser.abc, ГДЕ 1 = 2;

У вас будет куча пустых таблиц с соответствующей структурой, но без разделов, и вы сможете выполнить их экспорт, импортировать в XE и затем выполнить другой импорт, если хотите строки.

У вас могут быть похожие проблемы с секционированными индексами. Я бы пошел для DBMS_METADATA.GET_DDL для них и взломать результаты.

1 голос
/ 22 сентября 2012

Oracle 11g и далее поддерживает экспорт таблиц путем объединения разделов в EXPDP. Пожалуйста, обратитесь к опции PARTITION_OPTIONS при экспорте с использованием утилиты expdp.

Больше на Oracle Data Pump 10g .

0 голосов
/ 14 апреля 2010

Используйте опцию «indexfile», чтобы получить таблицу и файл создания индекса импортируемых таблиц. Измените этот файл, чтобы получить инструкцию создания таблицы без разделов. Запустите команды создания, чтобы предварительно создать таблицы в БД, в которую вы импортируете. Затем выполните imp, используя «ignore = y», и он должен импортироваться в таблицу предварительных условий, а не выдавать ошибку из-за оператора create.

...