NLS_CHARACTERSET в nls_session_parameters возвращает None

Приложение, которое я использую с Oracle, похоже, имеет проблемы с символами, и я выполнил приведенные ниже запросы, чтобы проверить CHARACTERSET.

  • SELECT * FROM nls_session_parameters WHERE PARAMETER='NLS_CHARACTERSET';
  • SELECT * FROM nls_database_parameters WHERE PARAMETER='NLS_CHARACTERSET';

Второй запрос из nls_database_parameters возвращает AL32UTF8 .

Но первый запрос, похоже, возвращает None .

Я читал, что параметры nls_session_parameters имеют приоритет над параметрами nls_database_parameters , но в этом случае, если для него не установлено никакого значения, будет ли он возвращен к параметру nls_database_parameters или есть что-то, что необходимо настроить для установки nls_session_parameters .

Спасибо за любой вклад по этому вопросу.

Всего 2 ответа


Из документов Oracle

NLS_SESSION_PARAMETERS показывает параметры NLS и их значения для сеанса, который запрашивает представление. Он не показывает информацию о наборе символов.

В основном NLS_SESSION_PARAMETERS не будет иметь параметр с именем NLS_CHARACTERSET .

Набор символов является частью локали, которая определяется значением NLS_LANG .

NLS_LANG устанавливается в качестве переменной среды на платформах UNIX. NLS_LANG устанавливается в реестре на платформах Windows.

Следовательно, проверьте NLS_LANG . Также эта информация выбирается клиентским приложением во время запуска и не может быть изменена изнутри.


NLS_CHARACTERSET - это набор символов, который используется базой данных . Ваш сеанс (т. NLS_CHARACTERSET Клиент) ничего не хранит, поэтому NLS_CHARACTERSET не существует.

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

Обратите внимание, что некоторые клиенты (например, клиенты на основе Java JDBC) не используют настройку NLS_LANG , они используют другой механизм глобализации.