Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Здравствуйте всем!
DB2 UDB 8.2 fp14 под Linux
При создании базы забыл явно указать набор кодов и регион. Хорошо бы было воспользоваться скриптом:
create database PENSTRAN using codeset 1251 territory RU using SYSTEM;
Вместо этого я выполнил короткий скрипт:
create database PENSTRAN;
Какие codeset и territory задаются по умолчанию? Можно ли изменить эти параметры на рабочей базе? В книжке прочитал, что нельзя.
С какими проблемами можно столкнуться, если для базы явно не заданы codeset и territory? Сейчас, например, я не могу со своей машины (ОС Windows 2000) через ЦУ администратора выполнить резервное копирование на сервере. Говорит, что не совпадает кодировка Unknown и 1251.

Спасибо
С уважением, Семен Попов
17 дек 07, 12:04    [5056951]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Здравствуйте.
При создании базы, если не указано явно, эти параметры берутся из локали пользователя:
Тут подробнее.
Я бы обращал внимание также на это.
Что у вас в
db2 get db cfg for PENSTRAN | grep -i code
?
17 дек 07, 12:21    [5057056]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Mark Barinstein
Здравствуйте.
При создании базы, если не указано явно, эти параметры берутся из локали пользователя:
Тут подробнее.
Я бы обращал внимание также на это.
Что у вас в
db2 get db cfg for PENSTRAN | grep -i code
?

Спасибо. Вытащил cfg для базы. Там все в порядке.
 Территория базы данных                                  = RU
Кодовая страница базы данных = 1251
Кодовый набор базы данных = 1251
Код страны/региона базы данных = 7
Последовательность упорядочивания базы данных = UNIQUE
Альтернативная последовательность слияния (ALT_COLLATE) =

Почему ж тогда не получается с моей машины сохранить резервную копию? Пишет вот это:
SQL0332N  Невозможно преобразовать данные из исходной кодовой 
страницы "819" в кодовую страницу назначения "UNKNOWN". Код
причины "1".
17 дек 07, 12:43    [5057228]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Semen Popov
Почему ж тогда не получается с моей машины сохранить резервную копию?

Нашел, почему. Спасибо.
Национальные настройки для сервера администратора DB2

Убедитесь, что национальная версия экземпляра сервера администратора DB2 совместима с национальной версией экземпляра DB2. В противном случае экземпляр DB2 не сможет связываться с сервером администратора DB2.

Если в профиле пользователя сервера администратора DB2 не задана переменная среды LANG, сервер администратора DB2 будет запущен с системной национальной версией по умолчанию. Если системная национальная версия по умолчанию не определена, сервер администратора будет запущен с кодовой страницей 819. Если экземпляр DB2 использует одну из национальных версий DBCS, а сервер администратора DB2 запущен с кодовой страницей 819, этот экземпляр не сможет связываться с сервером администратора DB2. Национальная версия экземпляра сервера администратора DB2 и национальная версия экземпляра DB2 должны быть совместимы.
А как побороть?
17 дек 07, 12:51    [5057291]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Semen Popov
А как побороть?
Поставьте локаль у владельца административного истанса в профиле.
17 дек 07, 13:45    [5057728]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Mark Barinstein
Поставьте локаль у владельца административного истанса в профиле.

Вот такая ситуация.
На моей машине (ОС Win 2000) установлена DB2 8.2 14, на сервере (ОС Linux) также установлена DB2 8.2 14. Чтобы администрировать сервер на свою машину дополнительно установил Administration Client. В ЦУ подключил базу PENSTRAN. Теперь пытаюсь создать резервную копию этой базы, а DB2 мне выдает ошибку несоответствия кодовых страниц.
На сервере запускал команду get db cfg. Все нормально, кодовая страница 1251. Затем попытался задать переменную среды LANG (как это указано в доке по вашей ссылке - LANG=ru_RU), но резервное копирование все равно вываливается в ту же ошибку. Как поставить локаль в Линуксе и какое значение нужно? 819, я думаю, не очень подходит.
17 дек 07, 16:37    [5059021]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Что у вас в
locale -a | grep -i ru
?
17 дек 07, 16:56    [5059134]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
ru_RU
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.koi8u
ru_UA.utf8
tt_RU.utf8
17 дек 07, 17:16    [5059268]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Попробуйте
LANG=ru_RU.UTF-8
17 дек 07, 17:28    [5059338]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Mark Barinstein
Попробуйте
LANG=ru_RU.UTF-8

Попробую. Тут еще такая штука. DB2 на Линуксе устанавливалась не под root, а под пользователем db2inst. Под ним я и пытаюсь сделать резервное копирование. Для него и пытался устанавливать локаль ru_RU, но результата нет. А на моей машине почему 819? Может на моей тоже на какую-нить ru изменить?
17 дек 07, 17:37    [5059409]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Anka_S
Member

Откуда:
Сообщений: 203
Semen Popov
Mark Barinstein
Попробуйте
LANG=ru_RU.UTF-8

Попробую. Тут еще такая штука. DB2 на Линуксе устанавливалась не под root, а под пользователем db2inst. Под ним я и пытаюсь сделать резервное копирование. Для него и пытался устанавливать локаль ru_RU, но результата нет. А на моей машине почему 819? Может на моей тоже на какую-нить ru изменить?
Воткни задание в планировщик ЦУ на самом серваке и ни парься, при желании можно всегда зайти, например, через цигвин отлогиниться под root'ом отбросить приложения, потом перелогиниться # su - db2inst и сделать копию. С своими экземплярами, когда разбиралась, то же то там чего то ни робит, то здесь, ребята предолжили полностью размонироваться и заново собрать пока я оттягиваю этот подвиг :)
17 дек 07, 21:21    [5060258]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
LANG=ru_RU.utf8 тоже не помог.

Anka_S
Воткни задание в планировщик ЦУ на самом серваке и ни парься, при желании можно всегда зайти, например, через цигвин отлогиниться под root'ом отбросить приложения, потом перелогиниться # su - db2inst и сделать копию. С своими экземплярами, когда разбиралась, то же то там чего то ни робит, то здесь, ребята предолжили полностью размонироваться и заново собрать пока я оттягиваю этот подвиг :)
Спасибо. Чтобы воткнуть задание в планировщик на самом серваке, нужно сначала создать там каталог инструментов. Это у меня с первого раза, по крайней мере, не получилось - база создалась и далее вывалилась ошибка. Думаю, что попозже я его все равно добью. А сейчас резервное копирование у нас так и выполняется на самом серваке, только задача включена в планировщик ОС. В определенное время запускается .sh, который выполняет скрипт копирования от имени db2inst. Там все хорошо делается.
18 дек 07, 09:15    [5060942]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Здравствуйте!

Извиняюсь, что после большого периода продолжаю дискуссию по этой теме. Недавно мы вновь столкнулись с проблемой преобразования исходной кодовой страницы в кодовую страницу назначения. Невозможно было даже конфигурировать параметры удаленной базы, если мы пытались получить список парметров в центре управления через пункт вплывающего меню "Конфигурировать параметры". Много чего делали, чтобы побороть ошибку
SQL0332N  Невозможно преобразовать данные из исходной кодовой 
страницы "819" в кодовую страницу назначения "UNKNOWN". Код
причины "1".
В том числе выполнили все операции, предлагаемые в этой теме. Затем где-то выкопали, что у сервера DB2 существуют конфигурируемые параметры DB2CODEPAGE и DB2COUNTRY. За установку значений параметров сервера отвечает утилита db2set. В созданном терминале на сервере Linux с помощью команды
db2set -all
посмотрели все параметры сервера DB2. В списке не оказалось DB2CODEPAGE и DB2COUNTRY. Тогда мы просто проинициализировали эти параметры
db2set DB2CODEPAGE=1251
db2set DB2COUNTRY=7
Это решило нашу проблему. Теперь с моей машины (ОС Windows) из ЦУ я могу выполнить резервное копирование или конфигурировать параметры базы, которая создана на удаленном сервере с ОС Linux.

Думаю, что выполнили элементарные вещи. Но мы о них не знали. Может, кому-нибудь это будет интересно.
3 дек 08, 12:15    [6518430]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Vladimir Kiselev
Member

Откуда: Жуковский
Сообщений: 209
Semen Popov,

В моём случае (думаю и в Вашем тоже) было достаточно установить DB2CODEPAGE=915 (у меня AIX, iso-8859-5).
Такой способ кривой, по рекомендации IBM это параметр не должен устанавливаться.
По моему опыту с AIX (подобная проблема), я пришёл к выводу, что при установке графической среды у меня не было нужной локали, локаль доустанавливали после установки CDE. Потому такая проблема есть. Однако на тестовой машине, CDE устанавливалось после установки необходимых локалей, а там этих проблем с кодировкой - нет. Могу только предполагать, что в Вашем случае было что то подобное при установке Linux? Было бы интересно узнать правильно ли моё предположение?
Спасибо.
3 дек 08, 13:41    [6519115]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Vladimir Kiselev
Member

Откуда: Жуковский
Сообщений: 209
Извиняюсь, что не сразу написал, перечитал ветку, хочу поделиться опытом.
По поводу БД инструментов, в ней происходит тоже самое, потому выход, как я уже писал в другой ветке, запускать в задаче скрипт ОС (а не скрипт DB) примерно такой:
db2set DB2CODEPAGE=915
db2 -tvf backup.cpl -z backup.log
db2set DB2CODEPAGE=
либо намертво установить db2set DB2CODEPAGE=915 и не париться, хоть это и криво.
3 дек 08, 13:46    [6519153]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Vladimir Kiselev
В моём случае (думаю и в Вашем тоже) было достаточно установить DB2CODEPAGE=915 (у меня AIX, iso-8859-5).
Такой способ кривой, по рекомендации IBM это параметр не должен устанавливаться.
По моему опыту с AIX (подобная проблема), я пришёл к выводу, что при установке графической среды у меня не было нужной локали, локаль доустанавливали после установки CDE. Потому такая проблема есть. Однако на тестовой машине, CDE устанавливалось после установки необходимых локалей, а там этих проблем с кодировкой - нет. Могу только предполагать, что в Вашем случае было что то подобное при установке Linux? Было бы интересно узнать правильно ли моё предположение?
Linux RedHat, DB2 8.1.14. Наши админы говорят, что никаких локалей дополнительно не устанавливали. После установки Linux поставили DB2 c параметрами по умолчанию. Думаю, что, если б не было нужных локалей RU, то проблема до сих пор существовала бы. Наверно, локали существовали изначально, просто они не использовались.
Vladimir Kiselev
Извиняюсь, что не сразу написал, перечитал ветку, хочу поделиться опытом.
По поводу БД инструментов, в ней происходит тоже самое, потому выход, как я уже писал в другой ветке, запускать в задаче скрипт ОС (а не скрипт DB) примерно такой:
db2set DB2CODEPAGE=915
db2 -tvf backup.cpl -z backup.log
db2set DB2CODEPAGE=
либо намертво установить db2set DB2CODEPAGE=915 и не париться, хоть это и криво.
Мы до сих пор так и делали. Только DB2CODEPAGE не устанавливали, потому что и без этого прокатывало. Из командной строки выполнялось все без проблем. Невозможно было выполнить ту же операцию из графического интерфейса ЦУ удаленной машины. После установки намертво db2set DB2CODEPAGE=1251 графический интерфейс ЦУ с моей машины больше не выдает ошибок преобразования кодовой страницы. А почему установить намертво DB2CODEPAGE в 1251 - это неправильно?
3 дек 08, 15:38    [6520204]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Vladimir Kiselev
Member

Откуда: Жуковский
Сообщений: 209
Semen Popov,

Здесь, например, пишут
3 дек 08, 18:04    [6521349]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Спасибо. Есть над чем задуматься.
По поводу Вашего предположения. Я предполагаю, что перед тем как устанавливать сервер DB2 нужно не доустанавливать локаль в Linux, а просто русифицировать ОС. Как русифицировать Linux можно почитать здесь. Думаю, что, если DB2 установить в русифицированной среде, то ошибок преобразования страниц возникать не будет.
4 дек 08, 11:11    [6523338]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Vladimir Kiselev
Member

Откуда: Жуковский
Сообщений: 209
Semen Popov,

Похоже на правду, попробую, при случае, если новый сервер буду устанавливать.
4 дек 08, 11:15    [6523373]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Vladimir Kiselev
Semen Popov,

Похоже на правду, попробую, при случае, если новый сервер буду устанавливать.
Меняли мы тут у себя железо под одной задачей. Перед переносом базы решил сразу покопать проблему с кодовой страницей. Сначала русифицировал ОС Linux - сделал изменения в файле /etc/sysconfig/i18n(согласно документации из ссылки, которую я давал ранее). Правда, выбрал локаль ru_RU.utf-8. Содержание файла i18n такое:
LANG="ru_RU.UTF-8"
LINGUAS="ru:en"
LC_ALL="ru_RU.UTF-8"
SUPPORTED="ru_RU.UTF-8:ru_RU:ru"
SYSFONT="latarcyrheb-sun16"

Далее установил локаль для профайла root LANG=ru_RU.UTF-8 (она устанавливается автоматом из i18n после перезапуска системы).
Посмотрел admin cfg сервера DB2 (v8.1.14), который был установлен.
db2 get admin cfg
и вижу
 DAS Code Page                            (DAS_CODEPAGE) = 0
DAS Territory (DAS_TERRITORY) = 0

Задал новые значения DAS_CODEPAGE=1251, DAS_TERRITORY=7.

Теперь радуюсь :-) Никаких проблем как в консоли, так в центре управления с удаленной машины, я не наблюдаю. Более того, в консоли Putty русифицировался текст сообщений, которые выдает DB2. Ранее при выполнении скриптов все ошибки или сообщения показывались на инглишь.

На старом сервере, где возникали проблемы с кодовыми страницами DAS_CODEPAGE, DAS_TERRITORY были равны нулю. Возможно из-за этого и возникали проблемы с кодовыми страницами, в частности
SQL0332N  Невозможно преобразовать данные из исходной кодовой 
страницы "819" в кодовую страницу назначения "UNKNOWN". Код
причины "1".
Сейчас системные переменные DB2CODEPAGE, DB2COUNTRY мне не потребовалось задавать.
25 мар 09, 13:09    [6972861]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
Semen Popov
Member

Откуда: Сыктывкар
Сообщений: 793
Единственный минус локали ru_RU.UTF-8 в том, что создаваемые текстовые файлы будут иметь кодировку UTF-8. Чтобы работать с ними в ОС Win, нужно будет делать некоторые телодвижения.
Например, в консоли Putty хочу сохранить конфигурацию менеджера баз данных в файл, а затем через шару вытащить его на другую машину с ОС Win для чтения (анализа).
db2 get dbm cfg > /share/dbm_cfg.txt
В ОС Win этот файл в простеньких текстовых редакторах (например, FAR по F3) уже не прочтёшь.
25 мар 09, 14:58    [6973680]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Установка codeset и territory  [new]
D.Bug
Guest
Доброго времени суток.
Имеется сервер на CentOS 5.7 x64. На нем DB2 WSE 9.7.5.
Параметры базы:
 Территория базы данных                                  = RU
 Кодовая страница базы данных                            = 1251
 Кодовый набор базы данных                               = 1251
 Код страны/региона базы данных                          = 7

Выполняю к кроне скрипт бекапа:
...
#настраиваем переменные среды
PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/home/db2inst/sqllib/bin:/opt/ibm/db2/V9.7/bin
MyPath=/home/db2inst/BackUPDB2
DBPath=/opt/ibm/db2/V9.7/bin

#Переменные для db2
DB2INSTANCE=db2inst
LANG=en_US.UTF-8
...

Дальнейший конект к базе в скрипте вызывает:
SQL0332N  Character conversion from the source code page "819" to the target code page "UNKNOWN" is not supported.  SQLSTATE=57017

Т.е. скрипт не видит кодировку базы и установка LANG проходит мимо (хотя echo $LANG говорит об обратном). При этом не влияет ни текущая локаль сервера (ru_RU.UTF-8 | en_US.UTF-8), ни смена LANG (ru | en) в скрипте. Помогает только внешняя установка DB2CODEPAGE. Однако db2set DB2CODEPAGE=1251 в скрипте не дает результата.

Запуск скрипта руками из под db2inst - все ок.
7 янв 12, 13:34    [11867409]     Ответить | Цитировать Сообщить модератору
 Re: Установка codeset и territory  [new]
D.Bug
Guest
Тысяча чертей, разобрался!
LANG надо было устанавливать в файле крона, а не самом скрипте:
LANG=ru_RU.UTF-8
30 23 * * * /home/db2inst/BackUPDB2/script.sh > /home/db2inst/BackUPDB2/save.log
7 янв 12, 16:27    [11867705]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить