繁体   English   中英

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

[英]Does AFTER LOGON ON DATABASE trigger execute on multiple database instances?

我在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服务器上的每个数据库实例上运行?

每当有人登录数据库时,无论使用哪个实例,都会触发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;
/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM