Database Oracle 10g:注销触发器未启动

Database Oracle 10g:注销触发器未启动,database,oracle,plsql,database-trigger,Database,Oracle,Plsql,Database Trigger,我正在开发Oracle 10.2.0.4.0。这是一个具有2个节点的RAC设置。 我已经创建了一个登录和注销触发器来识别一个特定的用户并进行一些清理工作 登录触发器会适当地捕获用户会话,但当用户断开连接时,注销触发器根本不会触发 代码是这样的: CREATE OR REPLACE TRIGGER XXX.LOGOFF_TRIG_XXX BEFORE LOGOFF ON DATABASE BEGIN IF UPPER (SYS_CONTEXT ('USERENV', 'SE

我正在开发Oracle 10.2.0.4.0。这是一个具有2个节点的RAC设置。 我已经创建了一个登录和注销触发器来识别一个特定的用户并进行一些清理工作

登录触发器会适当地捕获用户会话,但当用户断开连接时,注销触发器根本不会触发

代码是这样的:

CREATE OR REPLACE TRIGGER XXX.LOGOFF_TRIG_XXX
   BEFORE LOGOFF
   ON DATABASE
BEGIN
  IF     UPPER (SYS_CONTEXT ('USERENV', 'SESSION_USER')) = 'XXX'
     AND UPPER (SYS_CONTEXT ('USERENV', 'MODULE')) LIKE 'YYY%'
..
END;
/
此触发器在克隆环境中正常工作。
有人能提出什么问题以及如何解决吗?谢谢

你是如何断定触发器没有触发的。您可以在触发器中的IF语句之前登录到一个表,以非常确定触发器没有触发。查看代码片段,可能会发生触发器正在触发,但IF条件未得到满足的情况。当用户断开连接时,触发器有代码插入到日志表的行中。因为注销触发器没有这样的条目,所以我得出结论,它根本没有触发。正如你所说,我试着把插入物放在顶部并检查了一下,但触发器仍然没有触发。此外,我已经在克隆环境中测试了这两个触发器,它们每天都工作正常。我怀疑这是因为RAC设置或连接池。但我不知道如何证实这一点。有人能给我指路吗??