Как импортировать файл экспорта данных из XE 11g в XE 18c

У меня есть экспорт единой схемы datapump, сгенерированный на 11g XE. Я хочу импортировать его в 18c XE.

Я использую командную строку ImpDP.

Сначала я получил сообщение:

UDI-01017: operation generated ORACLE error 1017
ORA-01017: invalid username/password; logon denied

Позже, после некоторого исправления, я перешел к ошибке:

UDI-12154: operation generated ORACLE error 12154
ORA-12154: TNS:could not resolve the connect identifier specified

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

Для вашей службы подключаемых баз данных обязательно иметь запись tns names. Типичная запись:

XEPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = computer-name)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XEPDB1)
    )
  )

Тогда при запуске impdp у вас есть два варианта.

Если вы пишете данные авторизации в командной строке, они должны быть в формате username/password@xepdb1 (имя хоста необязательно, для тех, кому это нужно). Если вы вводите данные аутентификации в командной строке, сначала введите имя пользователя @xepdb1, а затем пароль.

Я использовал DATA_PUMP_DIR для файла дампа (почти). Имейте в виду, есть подкаталог с именем, содержащим GUID рассматриваемой подключаемой базы данных, по одному для каждой такой базы данных. Итак, я поместил файл дампа в специальный подкаталог с именем GUID.

Затем я выполнил командную строку, как показано ниже, и набрал данные аутентификации в командной строке.

impdp DUMPFILE=EXP-SERVICEDATA.DMP LOGFILE=EXP-SERVICEDATA.LOG DIRECTORY=DATA_PUMP_DIR SCHEMAS='servicedata' CONTENT=ALL STATUS=15
```none

Now import worked as expected.
Let me know if it worked for you.

1 ответ

Решение

Вот мое решение (цитата из исходного поста).

Для вашей службы подключаемых баз данных обязательно иметь запись tns names. Типичная запись:

XEPDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = имя компьютера)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1)))

Тогда при запуске impdp у вас есть два варианта.

Если вы пишете данные авторизации в командной строке, они должны быть в формате username/password@xepdb1 (имя хоста необязательно, для тех, кому это нужно). Если вы вводите данные аутентификации в командной строке, сначала введите имя пользователя @xepdb1, а затем пароль.

Я использовал DATA_PUMP_DIR для файла дампа (почти). Имейте в виду, есть подкаталог с именем, содержащим GUID рассматриваемой подключаемой базы данных, по одному для каждой такой базы данных. Итак, я поместил файл дампа в специальный подкаталог с именем GUID.

Затем я выполнил командную строку, как показано ниже, и набрал данные аутентификации в командной строке. impdp DUMPFILE=EXP-SERVICEDATA.DMP LOGFILE=EXP-SERVICEDATA.LOG DIRECTORY=DATA_PUMP_DIR SCHEMAS='servicedata' CONTENT=ALL STATUS=15

Теперь импорт работал как положено.

Другие вопросы по тегам