【问题标题】:Is it possible to create trigger for "after connect" in oracle?是否可以在 oracle 中为“连接后”创建触发器?
【发布时间】:2015-10-08 13:26:02
【问题描述】:

每当在 Oracle 中执行 connect user/pass 时,我都会尝试执行触发器。

尝试使用以下after logon 触发器,但没有执行:

CREATE OR REPLACE TRIGGER logon_trigger
  AFTER LOGON
  ON DATABASE
BEGIN
  dbms_output.put_line('Logon detected');
END;
/

创建上述触发器后,尝试了以下连接操作,但没有成功:

conn scott/tiger@pdb1
conn system/manager@pdb1

在 AskTom 和其他 Oracle 相关问答网站中进行了搜索,但没有得到任何正确的指针来实现这一点。如果有人能指出实现这一目标的正确方法,那就太好了。

【问题讨论】:

  • 连接将serveroutput 重置为关闭(在 SQL*Plus 中);你希望谁看到输出?连接用户已经知道他们已经连接。如果您打算做一些更有意义的事情并且只是作为一个简单的测试这样做,那么触发器就会触发。
  • @AlexPoole 感谢您让我了解重置服务器输出设置。当我尝试其他一些与表相关的操作而不是dbms_output 时,它起作用了。再次感谢。

标签: oracle triggers connection-string


【解决方案1】:

您编写的代码不会成功,因为您看不到 DBMS_OUTPUT。它默认为服务器输出:连接时关闭。 (感谢 Alex)您需要写入表,或者更好的是,使用写入 SYS.AUD$ 的built in Oracle auditing

ALTER SYSTEM SET AUDIT_TRAIL=DB SCOPE=SPFILE;

AUDIT ALL BY Your_User BY ACCESS;

或者只是基本的访问权限

  AUDIT SESSION;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-03
    • 2013-12-24
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多