Как импортировать файл экспорта данных из 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
Теперь импорт работал как положено.