一. 先看官网的说明
1.1 V$NLS_PARAMETERS
V$NLS_PARAMETERS contains current values of NLS parameters。
Column | Datatype | Description |
PARAMETER | VARCHAR2(64) | Parameter names are as follows: NLS_CALENDAR, NLS_CHARACTERSET, NLS_COMP, NLS_CURRENCY, NLS_DATE_FORMAT, NLS_DATE_LANGUAGE, NLS_DUAL_CURRENCY, NLS_ISO_CURRENCY, NLS_LANGUAGE, NLS_LENGTH_SEMANTICS, NLS_NCHAR_CHARACTERSET, NLS_NCHAR_CONV_EXCP, NLS_NUMERIC_CHARACTERS, NLS_SORT, NLS_TERRITORY, NLS_TIMESTAMP_FORMAT, NLS_TIMESTAMP_TZ_FORMAT Two additional parameters, NLS_TIME_FORMAT and NLS_TIME_TZ_FORMAT, are currently used for internal purposes only. |
VALUE | VARCHAR2(64) | NLS parameter value |
1.2 NLS_DATABASE_PARAMETERS
NLS_DATABASE_PARAMETERS lists permanent NLS parameters of the database.
Column | Datatype | NULL | Description |
PARAMETER | VARCHAR2(30) | NOT NULL | Parameter name |
VALUE | VARCHAR2(40) | Parameter value |
从官网的定义:
NLS_DATABASE_PARAMETERSlists permanent NLS parameters of the database.
V$NLS_PARAMETERScontains current values of NLS parameters。
可以看出:
(1)nls_database_parameters来源于props$,是表示数据库的字符集。在创建数据库的时候设定的,一般不会改变.
(2)v$nls_parameters 显示当前会话值 ,他受客户端nls 的控制。
所以2个视图的查询结果是可能不一样的。
其他几个相关的视图:
(1)nls_instance_parameters 其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表。
(2)nls_session_parameters 来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。
二. 示例
我们以字符集为例,进行查看和对比。
Oracle 字符集的查看和修改
http://blog.csdn.net/tianlesoftware/article/details/4915223
NLS_LANG的格式如下: NLS_LANG = language_territory.charset
Language:指定服务器消息的语言, 影响提示信息是中文还是英文
Territory:指定服务器的日期和数字格式,
Charset:指定字符集,这部分真正影响数据库字符集。
如:AMERICAN _AMERICA. ZHS16GBK
[email protected](db2)> select * from nls_database_parameters where parameter in('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');
PARAMETER VALUE
-------------------------------------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET ZHS16GBK
[email protected](db2)> select * from v$nls_parameters where parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');
PARAMETER VALUE
-------------------------------------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET ZHS16GBK
现在nls_database_parameters 和 v$nls_parameters 查询的结果是一样的。 现在看我们修改一下字符集。然后在查看:
[email protected](db2)> alter system setnls_language='SIMPLIFIED CHINESE' scope=spfile;
System altered.
--该参数需要重启才能生效。
[email protected](db2)> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[email protected](db2)> startup
ORACLE instance started.
Total System Global Area 239075328 bytes
Fixed Size 1218724 bytes
Variable Size 79693660 bytes
Database Buffers 155189248 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
[email protected](db2)> select * from nls_database_parameters where parameter in('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');
PARAMETER VALUE
-------------------- -----------------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET ZHS16GBK
[email protected](db2)> select * fromv$nls_parameters where parameter in('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');
PARAMETER VALUE
-------------------------------------------------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY AMERICA
NLS_CHARACTERSET ZHS16GBK
现在看到,2个视图查看的结果不一样了。
本文转自:http://blog.csdn.net/tianlesoftware/article/details/6600637