Практическое руководство импортирует дамп оракула в другой табличной области

Еще один способ - использовать Spring Expression Language или SpEL, который делает намного больше, а также оценивает математические выражения, поэтому может немного переборщить. Вам не нужно использовать Spring framework для использования этой библиотеки выражений, поскольку она является автономной. Копирование примеров из документации SpEL:

ExpressionParser parser = new SpelExpressionParser();
int two = parser.parseExpression("1 + 1").getValue(Integer.class); // 2 
double twentyFour = parser.parseExpression("2.0 * 3e0 * 4").getValue(Double.class); //24.0

Ниже приведены более сжатые примеры Spel здесь и полные документы здесь

36
задан Michiel Overeem 15 September 2008 в 13:54
поделиться

6 ответов

У Вас есть несколько проблем здесь.

Во-первых , различные версии Oracle, которую Вы используете, являются причиной ошибки статистики таблицы - у меня была та же проблема, когда некоторые наши Базы данных 10 г Oracle были обновлены до Выпуска 2, и некоторые были все еще на Выпуске 1, и я подкачивал.DMP файлы между ними.

решение, которое работало на меня, состояло в том, чтобы использовать ту же версию exp и imp инструменты, чтобы сделать экспорт и импорт на различных экземплярах Базы данных. Это было самым легким сделать при помощи того же ПК (или Oracle Server) для издания всего экспорта и импорта команд.

, Во-вторых , я подозреваю, что Вы добираетесь ORA-00959: tablespace 'A_TBLSPACE' does not exist, потому что Вы пытаетесь импортировать.DMP файл из полноценной Базы данных Oracle в 10 г Express Edition (XE) База данных, которая, по умолчанию, создает единственную, предопределенную табличную область, названную USERS для Вас.

, Если это так, тогда необходимо будет сделать следующее..

  1. С Вашим.DMP файлом, создайте файл SQL, содержащий структуру (Таблицы):

    imp <xe_username>/<password>@XE file=<filename.dmp> indexfile=index.sql full=y

  2. Открывают индексный файл (index.sql) в текстовом редакторе, который может сделать, находят и заменяют по всему файлу и выходят, следующее находят и заменяют операторы IN ORDER (проигнорируйте одинарные кавычки..'):

    Find: 'REM<space>' Replace: <nothing>

    Find: '"<source_tablespace>"' Replace: '"USERS"'

    Find: '...' Replace: 'REM ...'

    Find: 'CONNECT' Replace: 'REM CONNECT'

  3. Сохраняют индексный файл, затем работают, он против Вашей Oracle Express Edition считает (я нахожу, лучше создавать новую, пустую учетную запись пользователя XE - или отбрасывать и воссоздавать, если я обновляюсь):

    sqlplus <xe_username>/<password>@XE @index.sql

  4. Наконец выполняет тот же.DMP файл, с которым Вы создали индексный файл против той же учетной записи для импорта данных, хранимых процедур, представления и т.д.:

    imp <xe_username>/<password>@XE file=<filename.dmp> fromuser=<original_username> touser=<xe_username> ignore=y

можно получить страницы ошибок Oracle при попытке создать определенные объекты, такие как Задания Базы данных, поскольку Oracle попытается использовать тот же Идентификатор Базы данных, который, скорее всего, перестанет работать, как Вы находитесь на различной Базе данных.

33
ответ дан Andrew 10 October 2019 в 10:41
поделиться

Какую версию Oracle Вы используете? Если его 10 г или больше, необходимо посмотреть на использование Объекта преобразования данных вместо импорта/экспорта так или иначе. Я не на 100% уверен, может ли это обработать этот сценарий, но я ожидал бы, что это могло.

Объект преобразования данных является заменой для exp/imp для 10 г и выше. Это работает очень похожее на exp/imp, кроме (предположительно, я не использую его, так как я застреваю в 9i земля), лучше.

Вот документы Объекта преобразования данных

3
ответ дан Matthew Watson 10 October 2019 в 10:41
поделиться

При использовании Oracle 10 г и datapump можно использовать пункт REMAP_TABLESPACE. пример:

REMAP_TABLESPACE=A_TBLSPACE:NEW_TABLESPACE_GOES_HERE
16
ответ дан 10 October 2019 в 10:41
поделиться

Проблема имеет отношение к столбцам CLOB. Кажется, что инструмент импорта не может переписать создать оператор для использования другой табличной области.

Источник: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:66890284723848

решение: Создайте схему вручную в корректной табличной области. Если у Вас нет сценария для создания схемы, можно создать ее при помощи индексного файла = инструмента импорта.

действительно необходимо отключить все ограничения Ваш сам, инструмент импорта оракула не отключит их.

После этого можно импортировать данные со следующей командой:

импорт b / Примечание *** file=oracledump.dmp log=import.log fromuser=a touser=b statistics=none ignore=y

: Мне все еще было нужно statistics=none должное к другим ошибкам.

дополнительная информация об объекте преобразования данных

С Oracle 10 импорт/экспорт улучшен: инструмент объекта преобразования данных ([ http://www.oracle-base.com/articles/10g/OracleDataPump10g.php] [1] )

Используя это, чтобы повторно импортировать данные в новую табличную область:

  1. Первый создают каталог для временного дампа:

    СОЗДАЮТ ИЛИ ЗАМЕНЯЮТ КАТАЛОГ tempdump AS '/temp/tempdump / ';
    ЧТЕНИЕ ПРЕДОСТАВЛЕНИЯ, ЗАПИШИТЕ НА КАТАЛОГЕ tempdump К a;

  2. Экспорт:

    expdp /* schemas=a directory=tempdump dumpfile=adump.dmp logfile=adump.log

  3. Импорт:

    impdp b /* Примечание directory=tempdump dumpfile=adump.dmp logfile=bdump.log REMAP_SCHEMA=a:b

: файлы дампа хранятся и читаются из диска сервера, не из локального (клиент) диск

1
ответ дан Michiel Overeem 10 October 2019 в 10:41
поделиться

Ответ трудный, но выполнимый:

Ситуация такова:

1
ответ дан 27 November 2019 в 04:45
поделиться

Для меня это работает нормально (Oracle Database 10g Express Edition Release 10.2.0.1.0):

impdp B/B full=Y dumpfile=DUMP.dmp REMAP_TABLESPACE=OLD_TABLESPACE:USERS

Но для нового восстановления вам нужно новое табличное пространство

P.S. Может быть полезно http://www.oracle-base.com/articles/10g/OracleDataPump10g.php

6
ответ дан 27 November 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: