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

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

IMP-00038: Could not convert to environment character set's handle

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

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

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

Ответы [ 5 ]

11 голосов
/ 26 ноября 2010

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

6 голосов
/ 26 ноября 2010

Самый простой способ для 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
3 голосов
/ 25 ноября 2010

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

<CHARSET>AL32UTF8</CHARSET><NCHARSET>AL16UTF16</NCHARSET>
...
NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA'
1 голос
/ 17 марта 2013

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

1 голос
/ 09 марта 2011

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

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

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

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

Ссылка на интерес * Использование различных версий иВарианты экспорта

...