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

Oracle12c中多宿主环境(CDB&PDB)的数据库触发器(Database Trigger)的更多相关文章

  1. Oracle12c中多宿主容器数据库(CDBs)和可插拔数据库(PDBs)新特性之运行脚本

    对开发者和DBA们来说,对shell脚本批量任务的影响成了多宿主选项带来的最大改变之一.因为多宿主环境通过服务来连接到可插拔数据库,因此,依靠CRON和OS认证成了换成多宿主环境后的一个最大问题.本文 ...

  2. 转 12C 连接CDB和PDB

    来源:David Dai -- Focus on Oracle 连接到CDB 和普通实例一样的连接. 指定ORACLE_SID 以后可以使用OS认证,也可以使用密码进行连接. [oracle@Ora1 ...

  3. 微信小程序开发8-小程序的宿主环境(1)

    1.小程序的运行环境分成渲染层和逻辑层,第2章提到过 WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层.小程序的渲染层和逻辑层分离是经过很多考虑得出来的模型 2. 1.渲染层和数据 ...

  4. 12c debug 转 12C 连接CDB和PDB

    来源:David Dai -- Focus on Oracle 连接到CDB 12c debug 和普通实例一样的连接. 指定ORACLE_SID 以后可以使用OS认证,也可以使用密码进行连接. [o ...

  5. Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

    Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例 ...

  6. Oracle12c多租户CDB 与 PDB 参数文件位置探讨、查询 CDB 与 PDB 不同值的参数

    一. Oracle12c多租户CDB 与 PDB 参数文件位置CDB的参数文件依然使用12c以前的SPIFLE,pdb的参数文件不会出现在SPFILE中,而是直接从CDB中继承,如果PDB中有priv ...

  7. 浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系

    名词介绍: 数据库:数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生 于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以 后,数据管理不再仅仅是存储和管理 ...

  8. ASP.NET Web API WebHost宿主环境中管道、路由

    ASP.NET Web API WebHost宿主环境中管道.路由 前言 上篇中说到ASP.NET Web API框架在SelfHost环境中管道.路由的一个形态,本篇就来说明一下在WebHost环境 ...

  9. ASP.NET Web API Selfhost宿主环境中管道、路由

    ASP.NET Web API Selfhost宿主环境中管道.路由 前言 前面的几个篇幅对Web API中的路由和管道进行了简单的介绍并没有详细的去说明一些什么,然而ASP.NET Web API这 ...

随机推荐

  1. 简单的HTML5 canvas游戏工作原理

    HTML5已经不是一个新名词.它看上去很cool,有很多feature,大多数人普遍看好它的发展.对于我来说,最感兴趣的是它的canvas标签,可以结合Javascript来绘制游戏画面. 我们可以在 ...

  2. Thinkphp5 引入第三方类库的方法

    原文链接:http://www.zhaisui.com/article/42.html

  3. Duilib 实现右下角弹出像QQ新闻窗口,3秒后窗口透明度渐变最后关闭,若在渐变过程中鼠标放到窗口上,窗口恢复最初状态(二)

    效果: 1.定义两个个定时器ID #define ID_TIMER_DISPLAY_DELAY 30 #define ID_TIMER_DISPLAY_CLOSE 40 2.添加一个成员函数和成员变量 ...

  4. JSON类库Jackson与JSON-lib性能对比[转]

    Jackson:http://jackson.codehaus.org/ JSON-lib:http://json-lib.sourceforge.net/ Gson:http://code.goog ...

  5. 51nod 1103 N的倍数

    1103 N的倍数   一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8, ...

  6. orm框架综合

    一, 目前ORM框架的产品非常之多,除了个大公司.组织的产品外,其他一些小团队也在推出自己的ORM框架.目前流行的ORM框架有如下这些产品: (1)Enitiy EJB:Enitiy EJB实际上也是 ...

  7. spoj TBATTLE 质因数分解+二分

    题目链接:点击传送 TBATTLE - Thor vs Frost Giants #number-theory #sliding-window-1 Thor is caught up in a fie ...

  8. shell 注释

    以 # 开头的行就是注释,会被解释器忽略. 通过每一行加一个 # 号设置多行注释,像这样: #-------------------------------------------- # 这是一个注释 ...

  9. 【转】总结C++中取成员函数地址的几种方法

    转自:“http://www.cnblogs.com/nbsofer/p/get_member_function_address_cpp.html” 这里, 我整理了4种C++中取成员函数地址的方法, ...

  10. Hashtable、HashMap、TreeMap心得

    三者均实现了Map接口,存储的内容是基于key-value的键值对映射,一个映射不能有重复的键,一个键最多只能映射一个值. (1) 元素特性 HashTable中的key.value都不能为null; ...