Oracle 12c R2版本 Application Containers 特性(二)
在上一篇Oracle 12c R2版本 Application Containers 特性(一)中讲解了Application Root/PDBs的创建以及“Application”的维护,本篇将介绍“Application Common Objects”,即公共对象。
公共对象是用户在Application Container特性下创建的共享对象,且只能创建在Application Root中,共享给Application PDB,其有三种类型可共选择,分别为:METADATA-LINKED、DATA-LINKED、EXTENDED DATA-LINKED.
- METADATA-LINKED:共享公共对象的元数据给Application PDB,不可以查看公共对象在Application root内存储的数据,在Appliation PDB内可插入本地数据。
- DATA-LINKED:共享公共对象的元数据和数据给Application PDB,在Appliation PDB中仅可查询公共对象在Application root内存储的数据,无法对其进行DML操作,也不可进行本地数据插入。
- EXTENDED DATA-LINKED:共享公共对象的元数据和数据给Application PDB,在Application PDB内可以查询公共对象在Application root内存储的数据,对Application root内存储的数据不能进行DML操作,但在Application PDB内可插入本地数据,EXTENDED DATA-LIKED更像是METADATA-LIKED和DATA LIKED的结合。
如下是不同类型公共对象的元数据和数据的存储位置对照表:
指定共享属性时有两种方式,第一种使用系统参数default_sharing,另一种是在CREATE语句中指定SHARING的类型子句(该子句覆盖default_sharing参数)。
下面是共享属性的选择:
- METADATA
- DATA
- EXTENDED DATA
- NONE
以下数据库中的对象可以被创建为公共对象:
Analytic views
Attribute dimensions
Directories
External procedure libraries
Hierarchies
Java classes, Java resources, Java sources
Packages
Object tables
Object types
Object views
Sequences
Stored functions
Stored procedures
Synonyms
Tables (including temporary tables)
Triggers
Views
对于上面列出的对象,均可以在创建时指定METADATA或NONE选项,而DATA/EXTENDED DATA只能被如下对象创建时所指定:
- Table(不包括对象类型表):METADATA, DATA, EXTENDED DATA
- Views (不包括对象视图):METADATA, DATA, EXTENDED DATA
- Sequences:METADATA, DATA, NONE
如下测试将通过表来展示不同共享方式的差别
在qdatacon1中安装Application:qd_reg1:
DATA-LINKED类型
创建sharing=data的表t_data,并且结束qd_reg1的安装:
在qdcpdb1中同步qd_reg1:
在qdatacon1中向t_data插入数据:
在qdcpdb1内查询t_data:
查看在qdcpdb1中查询t_data的执行计划信息:
以上执行计划走的是DATA LINK FULL方式。
在qdcpdb1中对表进行delete/insert:
data liked类型的对象数据存储在Application root内,在Application PDB内无法对其进行DML操作。
在qdcpdb1内查询数据的rowid信息:
METADATA LIKED类型
创建sharing=metadata类型的表t_meta:
在qdcpdb1内同步qd_reg1:
在qdatacon1中插入数据:
在qdcpdb1内查询:
metadata liked类型仅共享元数据给Application PDB,在Application PDB内无法查询共享对象在Application Root内存储的数据。
在qdcpdb1中向t_meta插入数据:
在qdcpdb1内查询t_meta数据的rowid信息:
数据在本地存储,可以获得ROWID。
查看执行计划:
以上执行计划走的TABLE ACCESS FULL。
在qdcpdb1中删除数据:
EXTENDED DATA类型
创建sharing=extended data类型的表t_exte:
在qdcpdb1内同步:
在qdatacon1中插入数据:
在qdcpdb1中查询并删除数据:
qdcpdb1中可以访问公共对象在Application root内存储的数据,但是不能对其进行DML操作。
在qdcpdb1中插入数据:
0 QBackup存储在 Application root内,1 QMonitor 存储在本地。
在qdcpdb1内查询数据的rowid信息:
在qdcpdb1内将表t_exte truncate掉:
这里仅将本地数据truncate掉了。
查看执行计划:
以上执行计划走的EXTENDED DATA LINK。
这里只做了TABLE的演示,关于其他对象的共享方式与之相近,不在演示。
- Tensorflow新手通过PlayGround可视化初识神经网络
- [大数据之Spark]——快速入门
- [大数据之Spark]——Actions算子操作入门实例
- [大数据之Spark]——Transformations转换入门经典实例
- 字符串的排列
- 斐波那契额数列及青蛙跳台阶问题
- 在Mac OS X上配置Apache2
- 合并两个排序的链表
- 还有5天,你的比特币最重要的孩子UB-UBTC 可能就永远不属于你了
- Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)
- Webpack多入口文件、热更新等体验
- 从hello world 解析程序运行机制
- 万达大量员工“被”辞职?曲德君回应:万达网科没有倒
- iOS Programming – 触摸事件处理(2)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Oracle数据误删恢复
- 用斗地主的实例学会使用java Collections工具类
- Command PhaseScriptExecution failed with a nonzero exit code问题解决
- Effective Java中构建器Builder的理解
- Java的位运算符详解实例。
- 用一个测试类简化排序算法时间复杂度的研究
- R语言之可视化(33)绘制差异基因分析统计图
- Java transient不被持久化的原因
- 举一个有趣的例子,让你轻松搞懂JVM内存管理
- gulp的使用
- SpringBoot中 使用[info]日志级别打印mybatis sql语句
- Spring Boot 使用策略模式指定Service实现类
- 55. Vue webpack的基本使用
- ajax无刷新页面切换,历史记录后退前进解决方案
- 一起来学演化计算-SBX模拟二进制交叉算子和DE差分进化算子