2015-07-21 70 views
2

为什么在Oracle中有逻辑不同视图为Ñ大号 anguage 小号 upport?会话VS实例VS数据库中的Oracle NLS设置

我可以理解会话和数据库之间区分的必要性 - 允许客户自定义设置。

会话与实例有什么关系?

我运行了一个查询来比较它们之间的值,这里是结果(我注意到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 

enter image description here

我想深挖和解决我的PL/SQL开发客户端的问题,独自一人,不能够显示希伯来语字符。公司中的所有其他人都是。

更新:在希伯来语显示字符的问题(这是不是这里的问题)解决了,我贴here解决以下。

回答

4

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

NLS_DATABASE_PARAMETERS

当您创建数据库时,你告诉它你将如何处理 或不处理数据库的全球化。 NLS_DATABASE_PARAMETERS视图将显示这些设置在 数据库创建时间。这些固定在数据库级别,并且 不能更改。好消息是,虽然他们确实建立了一些 你的选择下关于道路具有全球数据库的谈话 ,他们只当检查约束在 数据库强制执行使用。因此,您不必担心这些设置在数据库创建时间后会有什么变化。

NLS_INSTANCE_PARAMETERS

如你所知,你可以通过连接init.ora文件或SPFILE更改多种参数为实例 。 NLS_INSTANCE_PARAMETERS视图将显示在实例级别设置为 的那些设置。

NLS_SESSION_PARAMETERS

此外,你必须设置每个会话的 全球化参数的能力和NLS_SESSION_PARAMETERS视图将显示 你当前的设置是什么。该视图特定于从中查询的 会话。

+1

@PatrickHofman,因为每个人都有自己的“工作”,如上所述,是NLS_DATABASE_PARAMETERS创建数据库时,作为NLS_SESSION_PARAMETERS将显示您个人设置的设置,我的回答我覆盖大部分。如果他阅读完整的文章,他会理解很多东西。 – Moudiz

+0

第一件事:通过其他人的问题我自己也学到了很多:-) – Veverke

+1

Patrick,Moudiz是对的,它增加了答案。我认为这个问题最终是关于Oracle DB中的一个实例和一个会话之间的区别。但是这肯定会增加有用的信息。 – Veverke