Если вы вынуждены использовать устаревшие инструменты 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