zoukankan      html  css  js  c++  java
  • Oracle12c中多宿主环境(CDB&PDB)的数据库触发器(Database Trigger)

    Oracle12c中可插拔数据库(PDBs)上的多宿主数据库触发器

    随着多宿主选项的引入,数据库事件触发器可以在CDB和PDB范围内创建。

    1.   触发器范围

    为了在CDB中创建数据库事件触发器,需要以通用用户登录到数据库,且该用户需要被授予ADMINISTER DATABASETRIGGER系统权限。

    CONN sys@cdb1 AS SYSDBA

     

    CREATE OR REPLACE TRIGGER cdb1_aftr_strtup_trg

    AFTER STARTUP ON DATABASE

    BEGIN

      --触发器操作代码

      NULL;

    END;

    /

    为了在PDB中创建一个数据库触发器,需要以通用用户或本地用户连接该数据库,且该用户需要被授予该数据库范围内的ADMINISTER DATABASETRIGGER系统权限。ON DATABASE 和ON PLUGGABLE DATABASE子句在PDB内作用是一样的,但有些事件要求显式的ON PLUGGABLE DATABASE子句。

    CONN sys@pdb1 AS SYSDBA

     

    CREATE OR REPLACE TRIGGER pdb1_aftr_strtup_trg

    AFTER STARTUP ON PLUGGABLE DATABASE

    BEGIN

      -- 触发器操作代码

      NULL;

    END;

    /

     

    CREATE OR REPLACE TRIGGER pdb1_aftr_strtup_trg

    AFTER STARTUP ON DATABASE

    BEGIN

      -- 触发器操作代码

      NULL;

    END;

    /

    有些事件触发器也可以用于CDB和PDB的模式层面。功能并未因多宿主选项而改变。

    CONN sys@cdb1 AS SYSDBA

     

    CREATE OR REPLACE TRIGGER cdb1_aftr_lgn_trg

    AFTER LOGON ON test.SCHEMA

    BEGIN

      -- 触发器操作代码

      NULL;

    END;

    /

     

    CONN sys@pdb1 AS SYSDBA

     

    CREATE OR REPLACE TRIGGER pdb1_aftr_lgn_trg

    AFTER LOGON ON test.SCHEMA

    BEGIN

      -- 触发器操作代码

      NULL;

    END;

    /

    2.   可用事件

    1)    下列数据库时间均可用于CDB和PDB层面。

    ü  AFTER STARTUP :CDB或PDB打开后触发器触发。

    ü  BEFORE SHUTDOWN :CDB或PDB关闭前触发器触发。

    ü  AFTER SERVERERROR。可用于PDB当服务器错误信息被记录且触发错误触发器安全时触发器将被触发,可用于数据库或模式层面。

    ü  AFTER LOGON :当客户端登录到CDB或PDB时触发器触发,可用于数据库或模式层面。

    ü  BEFORE LOGOFF:客户端退出CDB或PDB时触发,可用于数据库或模式层面。

    ü  AFTER SUSPEND :当服务器错误引起事务暂停时触发器触发,可用于数据库或模式层面。

    ü  BEFORE SET CONTAINER:SET CONTAINER命令执行前触发器触发,可用于数据库或模式层面。

    ü  AFTER SET CONTAINER:SET CONTAINER命令执行后触发器触发,可用于数据库或模式层面。

    2)    下列数据库事件仅用于CDB层面。

    ü  AFTER DB_ROLE_CHANGE:在DG配置环境中,当数据库角色从主库切换为备库或从备库切换为主库时触发。

    3)    下列数据库事件只能用于PDB层面,且要求显式的ON PLUGGABLEDATABASE子句,使用ON DATABASE子句会导致报错。

    ü  AFTER CLONE :克隆操作完成后,触发器就在新PDB中触发,且随后该触发器被删除。如果触发器失败,克隆操作也会失败。

    ü  BEFORE UNPLUG :在去插拔操作前,触发器在PDB中触发,且随后该触发器被删除。如果触发器失败,去插拔操作也将失败。

  • 相关阅读:
    .NET 回归
    Smart ORM v0.4.1开发计划
    计算4的1万次方的结果
    GMS Modem 短信收发组件
    计划任务的编成实现
    告别2007,展望2008
    Smart ORM v0.3发布(完全面向对象的轻量级ORM工具)
    Java中委托事件模型 (转)
    刚刚开通了博客,写点东西
    ASP.NET弹出对话框(转)
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/9045675.html
Copyright © 2011-2022 走看看