【问题标题】:Settings in Oracle client and ServerOracle 客户端和服务器中的设置
【发布时间】:2011-08-04 19:45:13
【问题描述】:

oracle 服务器的设置是否像 nls_date_format,.... 属性(我不知道到底有多少这样的设置),将通过连接下载到在不同机器上运行的 oracle 客户端SQL*plus 使用服务器主机名?

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

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

如果客户端是 SQL Developer ,有什么方法可以保持同步。在服务器设置和客户端设置之间。

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

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

    sysdba 可以通过多种方式更改这些:

    • 数据库参数在启动时从 (s)pfile 中读取。如果您使用 spfile,可以通过 ALTER SYSTEM SCOPE=SPFILE 更改它们。如果您使用 pfile,则必须手动编辑它
    • 实例参数由ALTER SYSTEM SCOPE=MEMORY设置,关机后会丢失
    • 可以同时使用SCOPE=BOTH 更改两者。这将立即应用并在关闭后继续存在

    客户可以通过(至少?)两种方式为他自己的会话覆盖它:

    • 在 SQL*Plus 中通过 ALTER SESSION 为您的会话设置它
    • 在客户端启动前通过shell中的export NLS_...=...设置环境变量

    后者覆盖了之前的那些,所以SESSION 击败了INSTANCE,后者吃掉了DATABASE。

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

    如果您没有在您的环境中设置任何 NLS 变量(尤其是NLS_LANG),您的会话应该与实例或数据库的会话相同。实际上,这永远不会按预期工作,因为您总是有一些locale 设置会在 SQLP*Plus 中产生奇怪的结果。 ;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 2018-07-24
      • 2018-11-04
      • 2014-09-11
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      相关资源
      最近更新 更多