【问题标题】:Set up default "alter session" for an Oracle user为 Oracle 用户设置默认的“更改会话”
【发布时间】:2010-11-28 01:03:54
【问题描述】:

对于 JDBC 应用程序,我需要发出一些 ALTER SESSION 命令。我不想将它们放入应用程序代码本身。有没有办法为应用程序使用的数据库模式(在数据库端)指定会话参数的默认值?

【问题讨论】:

  • @Thilo,谢谢你为我节省了很多时间!

标签: oracle session configuration


【解决方案1】:

大多数会话参数由客户端应用程序定义。如果您想覆盖客户端设置,您可以创建一个DATABASE TRIGGER。例如,这将在BAR 架构上创建一个LOGON 触发器:

CREATE OR REPLACE TRIGGER bar.foo
   AFTER LOGON ON DATABASE WHEN (USER = 'BAR')
BEGIN
   dbms_session.set_nls('NLS_NUMERIC_CHARACTERS', '''.,''');
   EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA=hr';
END foo;

【讨论】:

  • 登录数据库触发器是在不更改应用程序代码的情况下执行此操作的唯一方法。
【解决方案2】:

我还没有对此进行测试,但是您能否让应用程序调用一个存储过程,以便在创建会话时设置会话变量?然后,您可以在需要时修改服务器端的存储过程。

【讨论】:

  • 关键是根本不改变应用程序代码。如果我将其更改为包含一些有关会话创建的操作(例如调用存储过程),我可能会使这些操作可配置(例如从文件中读取它们),这样我还不如直接包含 ALTER SESSION 调用。
猜你喜欢
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2020-07-24
相关资源
最近更新 更多