2011-08-04 43 views
1

oracle服务器的设置,如nls_date_format,....属性(我真的不知道这些类型的设置有多少)将被下载到运行的oracle客户端在不同的机器上通过连接到SQL * plus使用服务器主机名?Oracle客户端和服务器中的设置

或者客户端将保留不同的集合,假设客户端是SQL * Plus。

如果客户端有自己的设置,有没有什么办法如果我可以设置与服务器相同的设置。如从服务器导出所有设置并将这些设置导入到客户端。

如果客户端是SQL Developer,有什么办法维护同步。在服务器设置和客户端之间。

回答

1

您可以从NLS-Views(NLS_DATABASE_PARAMETERS,NLS_INSTANCE_PARAMETERS,NLS_SESSION_PARAMETERS)查询设置(约20个变量)。通过show parameter nls,您可以查看SQL * Plus中的实际设置。

这些可以通过SYSDBA在几个方面改变:

  • 数据库参数从启动时(一个或多个)PFILE读取。如果使用spfile,则可以通过ALTER SYSTEM SCOPE=SPFILE修改它们。如果你使用的pfile你必须编辑手动
  • 参数由ALTER SYSTEM SCOPE=MEMORY设置,并在关机时
  • 两个失去一次可以使用SCOPE=BOTH改变的实例。这将立即应用和生存的关机

客户可以重写此为自己的会话(至少?)两种方式:

  • 将其设置为你的会话在SQL ALTER SESSION *加通过export NLS_...=...客户端启动之前
  • 设置环境变量在shell

后者覆盖了早期的,所以SESSION击败INSTANCE哪吃DATABASE

对于您的问题:您可以使用SELECT * FROM NLS_INSTANCE_SETTINGS并将这些应用于您当前的会话ALTER SESSION SET ...(对于这些变量中的每一个(可能通过一些PL/SQL过程))。另一种方法就是取消设置所有会话参数,以便使用实例参数。

如果您未在环境中设置任何NLS变量(特别是NLS_LANG),则您的会话应该与实例或数据库的变量相同。在实践中,这绝不会像预期的那样工作,因为您总是会有一些locale设置可以在SQLP * Plus中产生理想的结果。 ;-)