Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проблема с русскими буквами в функциях после imp базы данных  [new]
NordRus
Member

Откуда:
Сообщений: 46
Доброго времени суток, всемогущий All. Проблема соответствия кодировок на форуме обсуждалась многократно, всё читал, но так и не понял, куда копать. Рискую нарваться на нелестные комментарии, но самому разобраться не получается.

Имеем:
1. бэкап БД, полученный exp несколько лет назад V11.02.00. Сейчас доступа к ней уже нет и не будет.
2. Linux, на нём Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.7.0.0.0.
Задача как у многих тут: затолкать старую БД на новый сервер.
Проблема:
Делаю imp, всё загружается с несколькими warning, но русские буквы в процедурах вот такие: "??? ?????? ???".
Во всех таблицах русские столбцы загрузились корректно. Смотрю TOAD'ом.
Вот что пишет в начале импорта:
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses CL8MSWIN1251 character set (possible charset conversion)
export client uses CL8MSWIN1251 character set (possible charset conversion)

Похоже, проблема в первой строчке, потому что вторая и третья говорят о соответствии кодировки.
Процедур много, и все их перелопатить нужно много времени, к тому же не везде понятно, что там было до "???".

Вопрос:
есть ли шанс повторить загрузку дампа, поправив параметры СУБД, чтобы текст процедур загрузился корректно?
Какой конкретно параметр СУБД может за это отвечать?

Буду признателен за совет или тычок где почитать.

NLS_RDBMS_VERSION	19.0.0.0.0
NLS_NCHAR_CONV_EXCP	FALSE
NLS_LENGTH_SEMANTICS	BYTE
NLS_COMP	BINARY
NLS_DUAL_CURRENCY	$
NLS_TIMESTAMP_TZ_FORMAT	DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT	HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT	DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT	HH.MI.SSXFF AM
NLS_SORT	BINARY
NLS_DATE_LANGUAGE	AMERICAN
NLS_DATE_FORMAT	DD-MON-RR
NLS_CALENDAR	GREGORIAN
NLS_NUMERIC_CHARACTERS	.,
NLS_NCHAR_CHARACTERSET	AL16UTF16
NLS_CHARACTERSET	CL8MSWIN1251
NLS_ISO_CURRENCY	AMERICA
NLS_CURRENCY	$
NLS_TERRITORY	AMERICA
NLS_LANGUAGE	AMERICAN
22 ноя 20, 19:08    [22236636]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с русскими буквами в функциях после imp базы данных  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51815

NordRus
Какой конкретно параметр СУБД может за это отвечать?

Если и есть параметр, то не у DB, а у утилиты импорта. Но вероятнее всего он был у утилиты
экспорта и в файле буковки уже поломатые. Загляни в него глазками.

Posted via ActualForum NNTP Server 1.5

22 ноя 20, 19:50    [22236661]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с русскими буквами в функциях после imp базы данных  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8136
NordRus,

Установите переменную окружения
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
и попробуйте повторить импорт.

Если переменная не установлена, считается, что
NLS_LANG=AMERICAN_AMERICA.US7ASCII 

Всех этих проблем не было бы, если бы в том далёком прошлом использовали Data Pump Export.
22 ноя 20, 20:17    [22236687]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с русскими буквами в функциях после imp базы данных  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8136
NordRus,

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

И было очень обидно, что, хотя в функционале ничто не сломалось,
но пропали все тщательно написанные русские комментарии.

Поэтому часто программисты свои комментарии пишут тоже по-английски.

Ещё посмотрите, что содержится в вашем файле экспорта с помощью утилиты IMP с параметром SHOW=Y
22 ноя 20, 20:31    [22236706]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с русскими буквами в функциях после imp базы данных  [new]
NordRus
Member

Откуда:
Сообщений: 46
SQL*Plus,

NordRus, Установите переменную окружения
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
и попробуйте повторить импорт.

Получилось. Удивительно, как просто. Жаль, что Вы из Москвы. В Питере я бы завёз коньяк.

Спасибо БОЛЬШОЕ!

Сообщение было отредактировано: 22 ноя 20, 22:28
22 ноя 20, 22:26    [22236786]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с русскими буквами в функциях после imp базы данных  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8136
NordRus
SQL*Plus,

NordRus, Установите переменную окружения
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
и попробуйте повторить импорт.

Получилось. Удивительно, как просто. Жаль, что Вы из Москвы. В Питере я бы завёз коньяк.

Спасибо БОЛЬШОЕ!
На добре здоровье!

Надеюсь, что пандемия закончится, и будете вы в Москве, или я в Питере.
Вполне сможем посидеть в уютном кабачке за коньяком с виски и приятной беседой об Oracle и др. :-)
22 ноя 20, 23:30    [22236814]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить