Oracle中与 NLS(National Language Support,国家语言支持) 相关的参数
在Oracle中,NLS_DATABASE_PARAMETERS
和 NLS_INSTANCE_PARAMETERS
是两个重要的视图,用于存储与 NLS(National Language Support,国家语言支持) 相关的参数。它们的作用和区别如下:
1. NLS_DATABASE_PARAMETERS
-
作用:存储数据库级别的NLS参数,这些参数在数据库创建时设置,通常不会更改。
-
适用范围:整个数据库。
-
常见参数:
NLS_CHARACTERSET
:数据库字符集,用于定义VARCHAR2、CHAR等数据类型的字符存储方式。NLS_NCHAR_CHARACTERSET
:国家字符集,用于定义NVARCHAR2、NCHAR等数据类型的字符存储方式。NLS_LANGUAGE
:数据库的默认语言(如英文、中文)。NLS_TERRITORY
:数据库的默认地区设置(如美国、中国)。NLS_DATE_FORMAT
:默认的日期格式。NLS_CALENDAR
:默认的日历系统(如公历)。
-
示例查询:
SELECT * FROM nls_database_parameters;
2. NLS_INSTANCE_PARAMETERS
-
作用:存储实例级别的NLS参数,这些参数可以在实例启动时通过参数文件(
spfile
或pfile
)设置。 -
适用范围:当前数据库实例。
-
常见参数:
NLS_LANGUAGE
:实例的默认语言。NLS_TERRITORY
:实例的默认地区设置。NLS_DATE_FORMAT
:实例的默认日期格式。NLS_SORT
:字符排序规则(如二进制排序、语言排序)。NLS_DATE_LANGUAGE
:日期相关的语言设置。
-
示例查询:
SELECT * FROM nls_instance_parameters;
3. NLS_SESSION_PARAMETERS
-
作用:存储当前会话的NLS参数,这些参数可以在会话级别动态修改。
-
适用范围:当前会话。
-
常见参数:
NLS_LANGUAGE
:会话的语言。NLS_TERRITORY
:会话的地区设置。NLS_DATE_FORMAT
:会话的日期格式。NLS_SORT
:会话的字符排序规则。
-
示例查询:
SELECT * FROM nls_session_parameters;
4. NLS参数的作用
NLS参数主要用于控制数据库的语言、字符集、日期格式、货币符号等与地域相关的行为。具体作用包括:
- 字符存储:定义字符数据的存储方式(如
NLS_CHARACTERSET
)。 - 语言和地区:控制默认的语言、日期格式、货币符号等(如
NLS_LANGUAGE
、NLS_TERRITORY
)。 - 排序和比较:定义字符的排序规则(如
NLS_SORT
)。 - 日期和时间:控制日期和时间的显示格式(如
NLS_DATE_FORMAT
)。
5. NLS参数的优先级
NLS参数的优先级从高到低依次为:
- 会话级别(
NLS_SESSION_PARAMETERS
):可以在会话中动态修改,优先级最高。 - 实例级别(
NLS_INSTANCE_PARAMETERS
):通过参数文件设置,优先级次之。 - 数据库级别(
NLS_DATABASE_PARAMETERS
):在数据库创建时设置,优先级最低。
6. 示例:修改会话级别的NLS参数
-- 修改当前会话的日期格式
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
-- 修改当前会话的语言
ALTER SESSION SET NLS_LANGUAGE = 'SIMPLIFIED CHINESE';
-- 查询当前会话的NLS参数
SELECT * FROM nls_session_parameters;
总结
NLS_DATABASE_PARAMETERS
:数据库级别的NLS参数,创建数据库时设置。NLS_INSTANCE_PARAMETERS
:实例级别的NLS参数,通过参数文件设置。NLS_SESSION_PARAMETERS
:会话级别的NLS参数,可以在会话中动态修改。
另外:
SELECT USERENV(‘language’) FROM DUAL;
这个查询返回当前会话的语言环境设置。USERENV 是一个函数,它提供了关于当前会话的多种环境信息。当使用参数 ‘language’ 时,它返回一个字符串,该字符串表示当前会话的语言和区域设置,通常格式为 AMERICAN_AMERICA.ZHS16GBK。