一. 先看官網的說明
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一致。
二. 示例
我們以字符集爲例,進行查看和對比。
http://blog.csdn.net/tianlesoftware/article/details/4915223
NLS_LANG的格式如下: NLS_LANG = language_territory.charset
Language:指定服務器消息的語言, 影響提示信息是中文還是英文
Territory:指定服務器的日期和數字格式,
Charset:指定字符集,這部分真正影響數據庫字符集。
如:AMERICAN _AMERICA. ZHS16GBK
SYS@dave2(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
SYS@dave2(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 查詢的結果是一樣的。 現在看我們修改一下字符集。然後在查看:
SYS@dave2(db2)> alter system setnls_language='SIMPLIFIED CHINESE' scope=spfile;
System altered.
--該參數需要重啓才能生效。
SYS@dave2(db2)> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@dave2(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.
SYS@dave2(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
SYS@dave2(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