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. Linux下tomcat6.0与jdk安装

    Linux下tomcat6.0与jdk安装 步骤如下: 1. 上传apache-tomcat-6.0.37.tar.gz和jdk-6u13-linux-i586.bin至/usr/local 给这两个 ...

  2. 20145127《java程序设计》第五周学习总结

    教材学习内容总结 第八章 异常处理 1.try catch java中所有错误会被打包成对象,可以进行尝试捕捉代表错误的对象进行处理. Import java.until.Scanner; Publi ...

  3. c/c++ 动态申请数组(转载)

    转载:http://blog.csdn.net/hondely/article/details/6779887 转载:http://bbs.csdn.net/topics/390721031 转载:h ...

  4. C++ vector 删除一个指定元素 和 find 一个指定元素以及遍历删除、 map遍历删除元素和删除find到的元素

    vector: 1.delete element 转载:http://www.cnblogs.com/xudong-bupt/p/3522457.html #include <vector> ...

  5. JAVA I/O(六)多路复用IO

    在前边介绍Socket和ServerSocket连接交互的过程中,读写都是阻塞的.套接字写数据时,数据先写入操作系统的缓存中,形成TCP或UDP的负载,作为套接字传输到目标端,当缓存大小不足时,线程会 ...

  6. Python3基础 json.loads 解析json格式的数据,得到一个字典

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  7. C#学习笔记(二):变量、数据类型和运算符

    变量.数据类型       给变量赋值,如果想指定float,在数字后面加上F/f:如果想指定decimal,在数字后面加上m.   0-9:48-57 A-Z:65-90 a-z:97-122   ...

  8. 04_Flume多节点load_balance实践

    1.负载均衡场景 1)初始:上游Agent通过round_robin selector, 将event轮流发送给下游Collecotor1, Collector2 2)故障: 关闭Collector1 ...

  9. UVa 1610 聚会游戏

    https://vjudge.net/problem/UVA-1610 题意:输入一个n个字符串的集合D,找一个长度最短的字符串S,使得D中恰好有一半串小于等于S,另一半串大于S. 思路:先拍序,然后 ...

  10. Python简单做二维统计图

    先上一张效果图: 以上图是一段时间内黄金价格的波动图. 代码如下: import datetime as DT from matplotlib import pyplot as plt from ma ...