关于NLS_INSTANCE_PARAMETERS的显示内容

[复制链接]
查看11 | 回复3 | 2008-2-13 12:43:03 | 显示全部楼层 |阅读模式
SQL>
select
*
from NLS_SESSION_PARAMETERS;
PARAMETER
VALUE
------------------------------ ------------------------------
NLS_LANGUAGE
SIMPLIFIED CHINESE
NLS_TERRITORY
CHINA
NLS_CURRENCY

NLS_ISO_CURRENCY
CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR
GREGORIAN
NLS_DATE_FORMAT
DD-MON-RR
NLS_DATE_LANGUAGE
SIMPLIFIED CHINESE
NLS_SORT
BINARY
NLS_TIME_FORMAT
HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT
HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMATDD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY

NLS_COMP
BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP
FALSE
SQL>
select
*
from NLS_INSTANCE_PARAMETERS;
PARAMETER
VALUE
------------------------------ ------------------------------
NLS_LANGUAGE
AMERICAN
NLS_TERRITORY
AMERICA
NLS_SORT

NLS_DATE_LANGUAGE

NLS_DATE_FORMAT

NLS_CURRENCY

NLS_NUMERIC_CHARACTERS
NLS_ISO_CURRENCY

NLS_CALENDAR

NLS_TIME_FORMAT

NLS_TIMESTAMP_FORMAT
NLS_TIME_TZ_FORMAT

NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY

NLS_COMP
BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP
FALSE
为什么NLS_SESSION_PARAMETERS中显示的内容有一部分在NLS_INSTANCE_PARAMETERS中没有显示,比如NLS_SORT ,NLS_DATE_LANGUAGE,NLS_TIME_FORMAT。。。。。。
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
哥作了个测试:
1) DB默认的设置,也是NLS_INSTANCE_PARAMETERS里面NLS_SORT是空的
2) 在spfile中指定NLS_SORT,然后NLS_INSTANCE_PARAMETERS中就有值了
SQL>alter system set NLS_SORT = BINARY scope=spfile;
SQL> startup force
SQL> select * from NLS_INSTANCE_PARAMETERS where PARAMETER='NLS_SORT';
PARAMETER
VALUE
-------------------------------------------------- ------------------------------------------------------------
NLS_SORT
BINARY

其实,只要NLS_SESSION_PARAMETERS中有值就行了,它的优先级最高,会覆盖NLS_INSTANCE_PARAMETERS跟NLS_DATABASE_PARAMETERS的设置
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
如果从优先级的角度来说的话,为何NLS_DATABASE_PARAMETERS的值是全的呢。
SQL> select view_name,text from dba_views t where t.VIEW_NAME like 'NLS%';
VIEW_NAME
TEXT
------------------------------ --------------------------------------------------------------------------------
NLS_SESSION_PARAMETERS select substr(parameter, 1, 30),

substr(value, 1, 40)

from v$nls_parameters

where parameter != 'NLS_CHARACTERSET' and

parameter != 'NLS_NCHAR_CHARACTERSET'
NLS_INSTANCE_PARAMETERSselect substr(upper(name), 1, 30),

substr(value, 1, 40)

from v$parameter

where name like 'nls%'
NLS_DATABASE_PARAMETERSselect name,

substr(value$, 1, 40)

from props$

where name like 'NLS%'
从视图的定义上看,NLS_INSTANCE_PARAMETERS来自v$parameter,v$parameter表现的是init.ora(或是spfile.ora,这个我记不清了,呵呵)中的设置吧,没在init.ora中设置的应该有默认值吧,那为何v$parameter没有响应的值呢
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
我感觉NLS_DATABASE_PARAMETERS的值是全的跟优先级角度无关,NLS_DATABASE_PARAMETERS的值存在DB 的datafile中,它的默认值非空我认为也是可能的.

没在init.ora中设置的应该有默认值吧
===================
我感觉这个参数的默认值就是空的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行