• 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中触发,且随后该触发器被删除。如果触发器失败,去插拔操作也将失败。

  • 相关阅读:
    Spark Streaming反压机制
    spark submit参数及调优
    kafka中的配额管理(限速)机制
    Kafka限流
    BlockingQueue
    Android 更改userdata的大小
    visual studio 2019 error MSB3073 exited with code 1
    ARM 链接脚本分析
    Android Bluetooth hci 命令分析
    Android 查看蓝牙hci日志
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/9045675.html
Copyright © 2020-2023  润新知