Вы можете запросить настройки (около 20 переменных) из NLS-просмотров (NLS_DATABASE_PARAMETERS
, NLS_INSTANCE_PARAMETERS
, NLS_SESSION_PARAMETERS
). По show parameter nls
вы можете просмотреть фактические настройки в SQL * Plus.
Они могут быть изменены sysdba несколькими способами:
- Параметры базы данных читаются из файла (ов) pfile при запуске. Их можно изменить с помощью
ALTER SYSTEM SCOPE=SPFILE
, если вы используете spfile. Если вы используете pfile, вы должны отредактировать его вручную
- Параметры экземпляра устанавливаются
ALTER SYSTEM SCOPE=MEMORY
и будут потеряны при выключении
- Оба одновременно можно изменить с помощью
SCOPE=BOTH
. Это будет применено немедленно и переживет остановку
Клиент может переопределить это для своего собственного сеанса (по крайней мере?) Двумя способами:
- Установите для своей сессии
ALTER SESSION
в SQL * Plus
- Установка переменных среды перед запуском клиента через
export NLS_...=...
в оболочке
Последний переопределяет более ранние, поэтому SESSION
бьет INSTANCE
, что съедает DATABASE
.
По вашему вопросу: вы можете использовать SELECT * FROM NLS_INSTANCE_SETTINGS
и применить их к текущему сеансу с помощью ALTER SESSION SET ...
для каждой из этих переменных (возможно, с помощью некоторой процедуры PL / SQL). Другой способ - просто сбросить все параметры сеанса, чтобы использовать параметры экземпляра.
Если вы не устанавливаете переменные NLS (особенно NLS_LANG
) в своей среде, ваш сеанс должен совпадать с сеансом экземпляра или базы данных. На практике это никогда не будет работать так, как ожидалось, поскольку у вас всегда есть некоторые настройки locale
, которые приводят к потере результатов в SQLP * Plus. ; -)