Имя табличного пространства Import dmp должно соответствовать старому?

Имя нового табличного пространства Oracle должно совпадать со старым именем табличного пространства?

Например:

Имя табличного пространства файла дампа — A, и я создаю новое табличное пространство B, и оно может импортировать таблицу, но имеет много ошибок?

         ORA-00959:tablespace 'ECASYS'(old) not exits.

Это мой оператор импорта:

imp userid='ZHPE/zhpe@ORCL' file='E:\xxxx\xxxx2013-08-15Bak\130815.dmp' log='D:\app\Administrator\oradata\orcl\ZHPE.log' full=y ignore=y;

Должно ли новое табличное пространство соответствовать старому??? помощь!


person Dolphin    schedule 16.08.2013    source источник


Ответы (2)


Если вы вынуждены использовать устаревшие инструменты exp и imp, тогда табличное пространство не может быть изменено во время самого импорта с помощью параметров командной строки. Если можете, переключитесь на использование версий datapump, expdp и impdp< /a>, а затем следуйте совету @schurik.

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

Если вы запустите imp с параметром indexfile, он создаст файл, содержащий DDL для таблиц и индексов:

imp user/password indexfile=schema.sql file=...

DDL создания таблицы закомментирован маркерами REM, которые необходимо удалить. Затем вы можете отредактировать его, чтобы изменить табличное пространство и любые другие параметры хранения, которые больше не подходят. Затем запустите этот SQL создания схемы, чтобы создать все таблицы как пустые.

Затем снова запустите обычный импорт, но с флагом ignore=y, чтобы он не жаловался (сильно), что таблицы уже существуют. Данные по-прежнему будут вставлены в эти существующие таблицы.

Это будет немного медленнее, если вы создадите индексы, а также таблицы заранее; обычно он создает таблицы, вставляет данные, а затем строит индексы, что более эффективно. Если замедление значительно, вы можете разделить schema.sql на отдельные файлы создания таблиц и индексов и сделать то же самое вручную - создать таблицы, запустить импорт с ignore=y и indexes=n (чтобы остановить попытки и неудачи их создания), а затем создайте индексы самостоятельно после этого.

Ясно, что это немного больно, и это одна из многих причин, почему переход на datapump — хорошая идея.

person Alex Poole    schedule 16.08.2013

взгляните на параметр импорта REMAP_TABLESPACE, например

REMAP_TABLESPACE=A:B
person schurik    schedule 16.08.2013
comment
Нет выбора REMAP_TABLESPACE.C:\Users\Administrator›imp -help - person Dolphin; 16.08.2013
comment
@Dolphin — это вариант datapump impdp; если вы находитесь на 10g+ и вам разрешено, переключитесь на expdp и impdp, что упрощает такие вещи. - person Alex Poole; 16.08.2013
comment
@AlexPoole impdp ZHPE/zhpe directory=E:\镇海石化\镇海石化2013-08-15Bak dumpfile=E:\xxxx\xxxx2013-08-15Bak\130815.dmp REMAP_TABLESPACE=ECA:ZHPE REMAP_SCHEMA=ECASYS:ZHPE logfile=ZHPE .журнал; UDI-00014: недопустимое значение параметра "каталог" - person Dolphin; 16.08.2013
comment
@Dolphin - directory является объектом базы данных, а не файлом путь; вам нужно прочитать, как это работает, и у dumpfile тоже нет пути, только имя файла. Вы можете только impdp файл, созданный expdp, хотя его формат отличается от файла, созданного exp. - person Alex Poole; 16.08.2013