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的演示,关于其他对象的共享方式与之相近,不在演示。

原文发布于微信公众号 - 沃趣科技(woqutech)

原文发表时间:2017-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

配置sqlnet.ora限制IP访问Oracle

--========================== -- 配置sqlnet.ora 限制IP访问Oracle --===================...

1104
来自专栏Linyb极客之路

Java面试中常问的数据库方面问题

B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的

1253
来自专栏跟着阿笨一起玩NET

plsql developer的一些使用

1072
来自专栏令仔很忙

存储过程--机房收费系统

存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。

1131
来自专栏岑玉海

Hive Tunning(二)优化存储

接着上一章我们讲的hive的连接策略,现在我们讲一下hive的数据存储。 下面是hive支持的数据存储格式,有我们常见的文本,JSON,XML,这里我们主要...

4174
来自专栏*坤的Blog

注入学习1:SQL注入语句大全

之前做了xss预防,以及些许的注入预防了,但是不够全面,如果还是搜集了下一些常用的注入手段,以此用来进行更好的预防.

4972
来自专栏c#开发者

General Database Adapter for Biztalk Server 2006 介绍

General Database Adapter for Biztalk Server 2006 介绍 目前该adapter分单向的Receive Adapte...

33611
来自专栏大内老A

创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]

在《基于T4的代码生成方式》中,我对T4模板的组成结构、语法,以及T4引擎的工作原理进行了大体的介绍,并且编写了一个T4模板实现了如何将一个XML转变成C#代码...

9028
来自专栏.NET开发者社区

一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](八)

前言 Hi, 大家好,还是星期五,还是Rector,又在图享网准时和大家见面了。 今天给大家带来系列教程《一步一步创建ASP.NET MVC5程序[Reposi...

5066
来自专栏乐沙弥的世界

RMAN 提示符下执行SQL语句

       在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐。实际上RMAN为我们提供了命令行下...

1183

扫码关注云+社区

领取腾讯云代金券