AFTER LOGON ON DATABASE触发器是否在多个数据库实例上执行?

时间:2014-09-01 09:19:06

标签: database oracle oracle11g

我在Oracle数据库实例中以下列方式创建了一个触发器。

CREATE OR REPLACE TRIGGER after_logon_on_database AFTER LOGON ON DATABASE
BEGIN
  -- some things that should be done on logon
END;
/

我的实例的Oracle服务器上运行了多个数据库实例。我希望此触发器仅在特定实例上运行。

AFTER LOGON ON DATABASE触发器是否在给定Oracle服务器上的每个数据库实例上运行?

1 个答案:

答案 0 :(得分:2)

每次有人登录数据库时都会触发AFTER LOGON ON DATABASE触发器,无论哪个实例。因此,每次都会触发每个实例的触发器。

但是,您可以将条件应用于触发器,因此在您的情况下,您需要类似这样的触发器才能触发触发器。实例1:

CREATE OR REPLACE TRIGGER after_logon_on_database AFTER LOGON ON DATABASE
WHEN (SYS_CONTEXT('USERENV','INSTANCE') = 1)
BEGIN
  -- some things that should be done on logon
END;
/