nls_session_parameters vs nls_instance_parameters vs nls_database_parameters

时间:2016-01-21 12:58:15

标签: oracle

有人可以清楚地解释这些表中值之间的差异。 (标题中提到)

我明白:

nls_session_parameters:在会话级别设置值(在实例和数据库级别上执行这些操作)

nls_instance_parameters:在实例级别设置值(我们的意思是实例级别)

nls_database_parameters:在整个数据库级别设置值。

现在,如果数据库是RAC类型,多个SID在上表中有不同的值吗?

我目前正面临一个问题:&{39; NLS_NUMERIC_CHARACTERS'在许多会话中被设置为错误的值,我不能每次都改变会话。行为是随机的,非常混乱

1 个答案:

答案 0 :(得分:3)

对于99.9%的已知宇宙,您只会关心会话设置。会话设置始终覆盖数据库或实例设置。会话设置由客户端上的设置决定,而不是由服务器上的任何内容决定。即使您的代码看起来没有客户端(例如,通过dbms_job提交的作业),提交作业的会话的NLS设置也将用于执行该作业。

在RAC集群中,只有一个数据库,但该数据库有多个实例(每个RAC节点一个)。您可能能够在RAC集群的不同节点上具有不同的NLS设置(因此导致nls_instance_parameters具有不同的结果)但是从基本上0个问题可以解决的角度来看这将是疯狂的。从这一观点来看,在RAC集群的不同节点上运行不同的配置设置是DBA的痛苦,痛苦和心痛的一个因素。