Oracle NLS 设置中的会话与实例与数据库

Vev*_*rke 4 oracle plsqldeveloper

Oracle中为什么有3个逻辑不同对视图Ñ大号anguage小号upport?

我可以理解需要区分会话和数据库 - 允许客户端自定义设置。

Session 与 Instance 呢?

我运行了一个查询来比较它们之间的值,这是结果(我注意到 NLS_DATABASE_SETTINGS 有更多的参数,其他的所有参数加上更多,因此我将它作为我的起点进行外连接):

SELECT
   db.parameter as parameter,
   db.value as database_value,
   s.value as session_value,
   i.value as instance_value
FROM
   nls_database_parameters db
LEFT JOIN 
   nls_session_parameters s
ON s.parameter = db.parameter
LEFT JOIN 
   nls_instance_parameters i
ON i.parameter = db.parameter
ORDER BY parameter
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我正在尝试深入挖掘并解决我的 pl/sql 开发人员客户端的问题,单独无法显示希伯来语字符。公司里的其他人都是。

更新:按照我在此处发布的解决方案,解决了希伯来语中显示字符的问题(这不是这里的问题)。

Mou*_*diz 6

好问题,直到我做了一些研究,我才知道它们之间的区别。看看这个网站National-Language-Support

NLS_DATABASE_PARAMETERS

当你创建你的数据库时,你告诉它你将如何处理或不处理数据库的全球化。NLS_DATABASE_PARAMETERS 视图将显示这些设置在数据库创建时的内容。这些在数据库级别是固定的,不能更改。好消息是,虽然他们确实设置了一些关于让您的数据库全局对话的选项,但它们仅在数据库中强制执行检查约束时使用。因此,在创建数据库之后,您实际上不必担心这些设置是什么。

NLS_INSTANCE_PARAMETERS

如您所知,您可以通过 INIT.ORA 文件或 SPFILE 为您的实例更改各种参数。NLS_INSTANCE_PARAMETERS 视图将显示在实例级别设置的那些设置。

NLS_SESSION_PARAMETERS

此外,您可以设置每个单独会话的全球化参数,NLS_SESSION_PARAMETERS 视图将显示当前设置。此视图特定于从中查询的会话。