Oracle 12c多租户特性详解:PDB 的出与入 InAndOut

简介:

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权)

编辑手记:这一节我们将介绍多租户中PDB的Plug-Out 与 Plug-In与备份恢复,这篇文章来自<深入解析Oracle>一书的摘录。


将 Non-PDB 插入 CDB

 

在12c中,可以将一个非 CDB(也即NON-CDB)插入到 CDB 中,这个过程需要在只读模式下进行。

 

以下测试首先启动一个常规的 Non-CDB 数据库:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


这个数据库中已经预先建立了一个数据库用户,并且有一个测试表:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


在12c中,新增加的包 DBMS_PDB 可以用于进行迁移:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


在 OPEN 模式下执行 DESCRIBE 操作会出现错误,提示该操作只能在只读模式下进行:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下启动数据库到只读模式:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

执行 DBMS _PDB.DESCRIBE 过程,然后关闭数据库:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

这个步骤在 $ORACLE_HOME/dbs 目录下生成了一个 XML 文件,用于描述需要迁移的数据文件,其主要内容如下:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


在 CDB 中执行 PLUG,就可以将这个 NON-CDB 插入到 CDB 中,指定 COPY 参数,将文件复制到 CDB 的相应目录下,如果已经复制到特定目录,则可以指定 NOCOPY 选项,就无需再复制一次。这也是对以前版本中传输表空间技术的增强:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


以下列表中可以看到,新的 PDB 数据库已经被插入到 CDB 中:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


插入成功之后可以连接到数据库进行数据验证:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


UNPLUG 数据库


通过 UNPLUG 命令可以拔出一个 PDB:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以上命令生成一个 XML 文件,缺省存储于 $ORACLE_HOME/dbs目录下:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


也可以在以上命令中指定目录,这样 XML 文件就可以存储于特定位置:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


XML 文件包含了数据文件的描述信息,用于转移数据库。UNPLUG 后 PDB 的状态被变更为MOUNTED,数据库被关闭:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


已经 UNPLUG 的数据库不能在当前数据库中直接打开:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


通过如下命令在当前数据库中删除一个已经 UNPLUG 的数据库:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

如果要集联删除所有的数据文件,则可以将 keep datafiles 指令换成 including datafiles.


CDB 的视图与原理

 

随着 CDB、PDB 的引入一系列的视图对应引入 ,用于数据库信息的查询和展现。

 

如在 CDB 层面的用户信息查询,可以通过新的视图 CDB_USERS 进行,通过这个视图可以直观的看到一个用户在哪些容器中存在:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

查询临时文件可以通过视图 CDB_TEMP_FILES 进行:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


对于常规的 DBA 类视图,在 CDB 中都具有对应的视图。下表列出了与常用数据库视图相对应的一些 CDB 视图:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


在数据库的创建脚本中,还可以找到最核心的底层表 container$ 的创建语句,该底层表用于记录各容器的信息,通过该表与其他对象的关联,CDB 的内容可以被隔离和识别出来:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

通过数据库创建的核心脚本 - cdcore.sql ,可以找到部分视图的创建方式,如以下脚本记录了 DBA_PDBS 视图的创建方式,正是通过 container$ 和 obj$ 的关联过滤出容器对象的:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

对于 PDB 的常规视图创建,另外一个核心脚本是 -catcdbviews.sql,在这个脚本中创建了一个 PackageCDBView,通过这个程序包,根据现有的 DBA 视图批量创建 CDB 所需要的内部视图、同义词并进行授权:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

接下来的包体中定义了详细的操作步骤,其中最核心的是根据数据字典视图批量的创建 CDB 所需要的视图:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

最终执行转换成类似如下的一个系列 SQL:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


了解了这些内部过程,我们就可以对 CDB 的各类视图结构有各大致的了解。


PDB 为云计算而生


在 Oracle 数据库中,PDB 新特性的引入,被称为是为云计算而生的新技术,在云数据库平台上,需要将不同用户的对象、权限等信息彻底分割开来,原有的 Schema 方式并不适合,而 PDB 完全满足隔离与迁移的需要,彻底简化了云数据库平台的管理和维护。

 

我们先来看一看在 Oracle 11g 版本之上的 Oracle 云数据库平台,下图包含了销售方式,Oracle 公司通过存储空间不同来进行收费区分,销售单位只能为1个 Schema,这是 Oracle Database 11g 版本的特性决定的,如果一个企业能否随意创建 Schema,则数据库会变得异常混乱,而 PDB 模式通过隔离可以彻底解决这一问题。


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


目前开放的云数据平台,可以通请获用的账户。在得了数据库账户之后,可以通过 Oracle Application Express 行在线用开布,后台的数据对象可以通过 APEX 内嵌的管理功能进行维护


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

在 Oracle SQL Developer 工具中,已集成了“Cloud Connection”模用于云端的数据管理:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


然目前 Oracle 的云数据看起来相当简单,但是不如何,云数据代已慢慢走来。


文章转自数据和云公众号,原文链接

相关文章
|
7月前
|
Oracle 关系型数据库 数据库
百度搜索:蓝易云【docker部署并配置oracle12c的cdb和pdb教程!】
以上是使用Docker部署和配置Oracle 12c CDB和PDB的简要教程。请注意,这只是一个概述,并且可能需要根据你的实际情况进行适当的调整和配置。建议参考Oracle官方文档和相关资源,以获得更详细和全面的指导。
105 2
|
23天前
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。
|
23天前
|
存储 Oracle 关系型数据库
Oracle 12c的多重索引:数据的“多维导航仪”
【4月更文挑战第19天】Oracle 12c的多重索引提升数据查询效率,如同多维导航仪。在同一表上创建针对不同列的多个索引,加速检索过程。虽然过多索引会增加存储和维护成本,但合理选择和使用索引策略,结合位图、函数索引等高级特性,能优化查询,应对复杂场景。数据管理员应善用这些工具,根据需求进行索引管理,支持企业数据分析。
|
23天前
|
存储 Oracle 数据管理
Oracle 12c的自动数据优化(ADO)与热图:数据管理的“瘦身”与“透视”艺术
【4月更文挑战第19天】Oracle 12c的ADO和热图技术革新数据管理。ADO智能清理无用数据,优化存储,提升查询速度,实现数据&quot;瘦身&quot;;热图则以直观的视觉表示展示数据分布和状态,助力识别性能瓶颈,犹如数据的&quot;透视&quot;工具。这两项技术结合,强化数据管理,为企业业务发展保驾护航。
|
23天前
|
Oracle 安全 数据管理
Oracle 12c多租户架构:数据管理的“摩天大楼”
【4月更文挑战第19天】Oracle 12c的多租户架构允许多个独立数据库环境在同一实例中共享资源,提高效率,降低成本。该架构保证了数据隔离和安全性,同时提供灵活性和可扩展性,简化管理任务。通过理解其原理和管理方法,我们可以充分利用这一架构,为企业数据管理和业务发展提供强大支持。
|
2月前
|
Oracle 关系型数据库 数据库
|
8月前
|
Oracle 关系型数据库
Oracle 11g和12c的主要区别
Oracle 11g和12c的主要区别
|
9月前
|
SQL Oracle 关系型数据库
Oracle 19c 启动和关闭实例保存PDB状态
十年以上 MySQL Oracle DBA从业者,MySQL 5.7 OCP, 微信号: jinjushuke
209 0
|
Oracle 关系型数据库 数据库
Oracle 12c PDB浅析(二)
之前写了第一篇Oracle 12c PDB浅析 http://blog.itpub.net/23718752/viewspace-1823792/?          在上次的基础上继续来学习学习。
943 0
|
SQL Oracle 关系型数据库
Oracle 12c PDB浅析
不管怎么样,12c出来这么久,总是因为各种各样的原因没有开始学习,现在似乎还是有些晚了。总是耳闻PDB在12c是一种全新的架构模式,在各种技术聊天也大概知道是一种可插拨的新型架构模式,但是似乎SQLServer中也有类似的架构,不管怎么样Oracle圈内还是很火,而且听说12c r2可以支持4096个pdb,这个也太大了,docker装一下试试:) 自己也在本地尝试了一下,其实中间了花了些时间,中途总是被各种事情打断,所以留下的都是一些零碎的知识片段,自己索引把环境重新删了再做几次。
1577 0

推荐镜像

更多