Oracle 12c新特性:多租户中使用 CONTAINERS 语句跨越PDB查询

张乐奕

云和恩墨副总经理,Oracle ACE总监,ACOUG 联合创始人

在最新版本的 Oracle Database 12.1.0.2 中,新特性提供了 PDB Containers 子句,用以从 CDB$ROOT 层面直接聚合查询多个 PDB 中同一张表的数据。在新特性文档中该段如下描述:

但是实现起来并非看上去如此简单。

现有测试环境如下:当前 CDB 中有 2 个 PDB,分别是 PDB1 和 PDB2;每个 PDB 中都有一个相同名字的 Local User,为 KAMUS;每个 KAMUS 用户下都有一个 TT 表,表结构相同,数据不同。

首先按照想象,在 CDB$ROOT 中直接使用 SYS 用户查询,会报 ORA-00942 错误。

这要求我们首先创建一个 Common User。并赋予其足够的权限。赋予 select any table 权限是为了方便测试,在真实环境中你可能需要更精细地规划权限。

其次要求用 Common User 分别连接所有需要聚合查询的 PDB,在其中创建一个与表名字相同的视图。

然后还需要在 Common User 中创建一个相同名字的空表,否则查询仍然会报 ORA-00942 错误。

只需要创建一个名字相同的表,已经可以聚合查询 count(*)了。但是如果在 SQL 语句中涉及到特定列仍会有问题。从报错中透露的 P000 进程,可知 Oracle 在实现此过程中使用了并行查询,不同的并行子进程在不同的 PDB 中查询相关表,最后在 CDB 级别中的汇总显示。

因此可以将所有期望聚合查询的列都加入到 C##KAMUS 用户的TT表中,此处增加了 OBJECT_NAME 字段,可以看到特意在测试中增加了 number 类型的 OBJECT_NAME 字段,而 PDB 中的 OBJECT_NAME 字段均为 varchar2 类型,因此可见只需列名称相同即可,无需类型相同。

从以上已经看出,如果更简单,那么在 C##KAMUS 中创建一个与 PDB 中 KAMUS.TT 表完全相同结构的空表即可。这里用 impdp 来实现。

查看执行计划,在执行计划中已经完全没有显示最终表的名称,而是出现 X$CDBVW$ 这样的 FIXED TABLE 名称,在 CDB 中的执行计划将很难判断真实的执行路径。

结论:操作起来稍显复杂,功能正常。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-05-04

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏后端云

POWER架构服务器作为计算节点

在power机器上安装计算组件,将power机器作为计算节点,并测试Openstack的基本功能。

561
来自专栏小樱的经验随笔

Kali Linux 下安装中文版输入法

1.更新软件源: 修改sources.list文件: vim /etc/apt/sources.list 或者 leafpad /etc/apt/sources...

2675
来自专栏晓晨的专栏

Docker实用技巧之更改软件包源提升构建速度

地球,中国,成都市,某小区的阳台上,一青年负手而立,闭目沉思,阵阵的凉风吹得他衣衫呼呼的飘。忽然,他抬起头,刹那间,睁开了双眼,好似一到精光射向星空,只见这夜空...

1042
来自专栏VMCloud

【腾讯云的1001种玩法】在腾讯云上创建您的SQL Server 故障转移集群 (1)

在国内公有云厂商上搭建一套SQL Cluster的难度相信做Windows的童鞋都会很清楚,并非它的搭建有多少难度,只是很多细节需要注意。所以,今天我就来讲讲如...

5.1K2

如何安装农场管理系统FarmOS

FarmOS是一个特别的Web应用程序,帮助农户管理和跟踪其农场的各个方面。FarmOS构建在Drupal的基础之上,并遵循GPL V.3协议,是一个优秀的自由...

1153
来自专栏liuchengxu

如何使用 Vim 的 help

实际上,无论是 Vim 的基础知识还是进阶知识,大都可以从 help 中找到指引。但是我想很多人并没有意识到这一点,或者并没有重视这一点。RTFM (read ...

552
来自专栏喵了个咪的博客空间

[Golang软件推荐] Frp内网穿透

在一个IP紧缺的时代,连电信也不分配固定IP给到你用,一条专网专用线路贵的不行,那么作为软件开发人员常常要使用到外网,比如和微信调试程序,给到不在同一网段的朋友...

4014
来自专栏静晴轩

Npm vs Yarn 之备忘大全

有则笑话,如此讲到:“老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成。我嘴一抽,来了句:...

2459
来自专栏张戈的专栏

CentOS 7.0.1406正式版发布,附更新记录及CentOS7 iso镜像文件下载地址

上次张戈博客刚公布了RHEL7 的最新资讯及下载地址,并且在文章结尾也猜测 centos7 也会即将发布,于是一直持续关注着 Centos 7 的最新动态,前些...

3446
来自专栏EAWorld

Flannel+K8s容器网络通信实践

? 亲爱的各位朋友,大家好! 今天很高兴可以和大家分享我们普元云平台SEM使用kubernetes时,关于pod、service网络通讯的实践与大家分享。 以...

3608

扫码关注云+社区