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

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

将 Non-PDB 插入 CDB

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

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

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

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

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

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

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

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


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

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

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

UNPLUG 数据库

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

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

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

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

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

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

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

CDB 的视图与原理

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

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

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

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

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

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

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

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


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

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

PDB 为云计算而生

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

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

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

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

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

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

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

  1. Oracle 18c新特性详解-多租户专题

    Oracle 18c,传说中全球第一款自动驾驶数据库,正式到来.18c不仅仅是数据库,更是一种云服务,包括着Oracle数据库18c,Oracle云基础架构和Oracle云工具,机器学习,能够实现自治 ...

  2. oracle dataguard详解,Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向

    Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向 在前面的文章<Oracle 19c 十大新特性一览>中,我们曾经提到 Oracle 19c的一个重要增强, ...

  3. abort oracle,Oracle 12c 多租户:PDB 支持 abort 关闭么?

    Oracle 12c 多租户:PDB 支持 abort 关闭么? 在Oracle 12c的考试中,有这样一道题目: When executing shutdown abort in a pluggab ...

  4. Oracle 12.2 新特性:在线PDB数据库克隆(Pluggable Hot Clone)

    Oracle 12.2 新特性:在线PDB数据库克隆(Pluggable Hot Clone) 在Oracle 12c的多租户(Multitenant)特性中,可以通过灵活的克隆复制来创建PDB(Pl ...

  5. 还在用JDK6的同学,来看看JDK13新特性详解吧

    点击上方"搜云库技术团队"关注,选择"设为星标" 回复"面试题"或"1024"获取 4T 学习资料 在 JDK 版本的世 ...

  6. java11 新特性 详解

    为什么80%的码农都做不了架构师?>>>    引言: 点击-->java10 新特性 详解 点击-->java9 新特性 详解 点击-->java8 新特性 详解 ...

  7. 4.6 W 字总结!Java 11—Java 17特性详解

    作者 | 民工哥技术之路 来源 | https://mp.weixin.qq.com/s/SVleHYFQeePNT7q67UoL4Q Java 11 特性详解 基于嵌套的访问控制 与 Java 语言 ...

  8. oracle数据库中索值,Oracle数据库中的索引详解

    Oracle数据库中的索引详解以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一 ROWID的概念 存储了row在数据文 ...

  9. Mybatis的特性详解——动态SQL

    Mybatis的特性详解--动态SQL 前言 一.动态sql的元素 1.MyBatis if标签:条件判断 2.MyBatis choose.when和otherwise标签 3.MyBatis wh ...

  10. Java EE 8的五大新特性详解

    Java EE 8的五大新特性详解 2018.4.3 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. Java EE 8带来了很多新特性,其中最好的新特性有下面五个. 备受期待的Ja ...

最新文章

  1. 不通过AppStore,在iOS设备上直接安装应用程序的原理
  2. 三代测序之微生物基因组 de novo 测序
  3. 图文解说nginx中server的匹配顺序
  4. python写错了怎么更改-Python中修改字符串的四种方法
  5. 我的世界minecraft-Python3.9编程(1)-开发环境配置(1)
  6. javascript基础教程_JavaScript基础教程(九)对象、类的定义与使用
  7. mysql时间排序_mysql – 按日期和时间降序排序?
  8. 最近的日子,很惬意!
  9. 理论基础 —— 线性表 —— 顺序表
  10. java 字符串contain_如何使用java.lang.String.contains()方法
  11. AWS re:Invent大会回顾
  12. 再议动态二维数组,通过一句表达式完成矩阵的转置
  13. jquery在选择元素的时候,可以写成var div=$(div)
  14. 分子动力学软件LAMMPS学习--常见错误运行
  15. 接待员如何向客人upsell_酒店前厅部概述-.ppt
  16. 『解疑』vue修改html图标,tilte左边的图标(以图片格式作为图标)
  17. Linux-CentOS上的服务搭建
  18. 离散数学常用符号TeX输入
  19. Redis常用数据结构及其场景归纳
  20. cheat sheet 打包打印版大全python R machine learning

热门文章

  1. 为 DEV-C++ 生成 libmysql.a 的过程 及 windows下 devc++ c语言访问mysql数据库 环境配置...
  2. imagej软件测量鼠脑切片的梗塞区域面积
  3. TED如何掌控你的时间(第一天)
  4. 智能优化算法应用:基于GWO优化的对称交叉熵图像多阈值分割 - 附代码
  5. python 绘制堆积柱状图
  6. JS学习总结(14)——Events事件
  7. Java并发编程实战读书笔记之死锁
  8. Flutter之跨组件状态共享Provider框架剖析(2)
  9. 大学心理学课本_2019年北京师范大学765真题分析
  10. Android Multimedia框架总结(二十)MediaCodec状态周期及Codec与输入/输出Buffer过程(附实例)