OTN文章 - Aggregate Data Across Many PDBs by CONTAINERS Clause

2023-10-11 02:50

本文主要是介绍OTN文章 - Aggregate Data Across Many PDBs by CONTAINERS Clause,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[Oracle Database 12c New Feature] Aggregate Data Across Many PDBs by CONTAINERS Clause

作者:张乐奕

2014 年 12 月发布

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

376379e7cb86617692fe0cb671b15130.png

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

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

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

308af3b84d15fce55034f207faabb603.png

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

d850d63ca8457437b4d1470f8e52c28d.png

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

9d0fd28686ef9f6aecd28d28c145c6f3.png

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

53eaf9f3530bb4e4272e57c42f66b3bd.png

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

8e8ba499d83c4cda7af72581490208cf.png

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

5d8674b86039dcbfd0aeaf42e9961998.png

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

9c8c2ff06739c5e6f16f4faee192fe17.png

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

903765c027a3cec15914692052e7d5b5.png

b28bd6ce3c811fe10056e8053d6a6cff.png

b16e0fb13e2082e069793bb5975414db.png

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

7718f3099ac7024c10a7d03322ff9c9a.png

点击【阅读原文】了解详情。

这篇关于OTN文章 - Aggregate Data Across Many PDBs by CONTAINERS Clause的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/184983

相关文章

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

15 组件的切换和对组件的data的使用

划重点 a 标签的使用事件修饰符组件的定义组件的切换:登录 / 注册 泡椒鱼头 :微辣 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

java.sql.SQLException: No data found

Java代码如下: package com.accord.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import