2011-11-17 92 views
0

即使在关闭我的oracle sql developer之后,是否可以永久地改变会话?永久地改变会话

,我想改变的声明的一个例子:

Alter Session Set Nls_Timestamp_Tz_Format='HH24:MI TZR'; 

上面的语句只允许我以改变当前会话,而不是永久使它。

感谢

+0

题外话了这么;属于serverfault.com。 –

回答

1

如果您只想更改SQL Developer的默认值,则可以在SQL Developer设置中执行此操作。在SQL Developer 3.1中(虽然导航可能略有不同,但早期版本中存在相同的设置),Tools |首选项|数据库| NLS允许您指定时间戳格式和时间戳TZ格式。然后,SQL Developer将在创建新会话时自动为您发出适当的ALTER SESSION命令。

+0

嗨,谢谢你的回答。它非常清楚。我知道sql开发人员可以更改我们自己的设置。但是,如果我授予其他用户的表,他们将不会有相同的配置。有没有配置它的示例方法? – JLearner

+0

@ user976050 - 否。其他用户将使用其他客户端。其他客户端将从其他地方进行NLS设置。其他用户可能有不同的NLS偏好。如果要向其他用户呈现字段的特定字符串表示形式,请创建一个视图,该视图使用指定的格式掩码执行显式的“TO_CHAR”,并授予用户访问视图的权限。 –

+0

好吧,这就是我所做的显示不同表中的所有不同的时区。我只是在想,如果有什么更简单的方法可以让它永久保存。感谢您的澄清! – JLearner

0

您需要设置在initialization parameter file以影响整个数据库。

+0

数据库中的NLS设置被客户端上的设置所否决,因此不起作用。实际使用数据库的默认NLS设置的情况很少。 –

0

初始化参数如Nls_Timestamp_Tz_Format可以从三个来源设置:

  • 使用ALTER SESSION SET语句
  • 在客户端的参数文件中的会话init.ora
  • 在服务器端的参数文件spfile
+0

我可以知道如何修改'init.ora'来设置它的默认值吗? – JLearner

+0

init.ora和spfile都是服务器端参数文件。任何给定的数据库实例都可以使用init.ora文件或使用spfile启动,但不能同时启动。 NLS设置由客户端控制,并针对不同的客户端应用程序进行不同的控制。类似于SQL * Plus的东西将从'NLS_LANG'中派生出'NLS_TIMESTAMP_TZ_FORMAT',它被设置为一个环境变量或者在注册表中。其他应用程序将从别处获取值。 –

+0

因此总而言之,即使我授予他们特权,也无法编辑其他客户端的nls设置?谢谢 – JLearner

0

要在数据库中永久设置数据库中的默认值: -

alter system ... scope=spfile; 

然后作为SYS(因此您可能需要与DBA交谈),并且显然在适当的时间! -

shutdown; 
startup; 

(我知道spfile中已经提到,但都可以从sqlplus中CMDLINE做,至少在11g中。)