Определение параметра NLS_LANG для существующего файла дампа базы данных Oracle

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

IMP-00038: не удалось преобразовать в дескриптор набора символов среды

После некоторых исследований мы предположили, что мы имеем несоответствие между настройкой NLS_LANG исходного компьютера и нашего локального компьютера. В настоящее время у нас нет никаких средств для проверки значения NLS_LANG на исходном компьютере.

Итак, имея в руках только файл дампа, есть ли способ выяснить значение NLS_LANG, с которым был выполнен экспорт? Судя по всему, мы должны иметь возможность переопределить переменную среды NLS_LANG перед запуском клиента импорта (imp).

Другое дело, что дамп был сделан из экземпляра 11g, а наша версия imp - 10. Я прочитал, что imp не совместим с forward. Может ли это быть проблемой здесь (вместо несоответствия NLS_LANG)?

5 ответов

Решение

Самый простой способ на Unix это:

#>imp username/password file=test.dmp show=y

Import: Release 10.2.0.3.0 - Production on Fri Nov 26 08:38:47 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

Export file created by EXPORT:V10.02.01 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses WE8ISO8859P1 character set (possible charset conversion)

Версия exp/imp является проблемой: я обычно использую программу экспорта V10 и подключаю ее к базе данных V11. Убедитесь, что у вас есть псевдоним dev11 в вашем tnsnames.ora в oracle_home dev10.

hostname{oracle}# . oraenv
ORACLE_SID = [oracle] ? dev10
hostname{oracle}#
hostname{oracle}#>exp username/password@dev11 full=y dumpfile=dump.exp

Ates, попробуйте impdp - иногда это может помочь:-)

Несмотря на то, что файл является бинарным искажением, есть некоторые читаемые человеком текстовые выдержки. Я видел следующие строки там, и я думаю, что это отвечает на мой вопрос:

AL32UTF8AL16UTF16...
NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA'

Может быть, это было экспортировано с помощью expdp....пытаться impdp.... это то, что я видел при поиске в Google, и это действительно помогло мне решить эту же проблему.

Другое дело, что дамп был сделан из экземпляра 11g, а наша версия imp - 10. Я прочитал, что imp не совместим с forward. Может ли это быть проблемой здесь (вместо несоответствия NLS_LANG)?

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

Хотя это и не рекомендуется, вы можете экспортировать более новую исходную базу данных Oracle (например, 10g+) с более старым клиентом Oracle (например, 10g), поскольку вы используете ту же версию Oracle Client для импорта в более старую целевую базу данных Oracle (например, 10g).

Предположение: версия Oracle Source вашей исходной базы данных такая же или более новая, чем версия вашей целевой базы данных Oracle. Обратите внимание, что инструменты для смешивания Datapump (11g) и утилита импорта imp (-10g) не работают.

Интересная ссылка Использование разных версий и версий экспорта

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