1.通过名称和ID来识别容器

一个集成的CDB中,可以包含多个容器,他们可以通过名称和数字,也就是con_id来进行识别.在12c版本中,所有用来显示一个实例中包含哪些对象的v$视图,都添加了一列,用来显示CON_ID,以便标记对象属于哪个PDB.

CDB本身是一个容器,其容器CON_ID为0,被标记为CON_ID=0的对象,都是 CDB级别的对象,并且不会关联到其它的容器.

在任意CDB环境中,第一个容器都是根容器,名为CDB$ROOT,并且CON_ID=1,其它所有的容器都是PDB

在任意CDB中的第一个PDB容器,都是种子容器,名为PDB$SEED,因为他的CDB中的第二个容器,所以CON_ID=2

在CON_ID>2的容器就是用户PDB

在PDB中查询dba_pdbs中,CON_UID和DBID一致,表示当前PDB的唯一ID

而在V$DATABASE中查询的DBID是CDB$ROOT的唯一ID,和以前的概念一致.

2.容器列表

视图DBA_PDBS列出了所有的PDB及其状态:

    PDB_ID PDB_NAME           STATUS       DBID     CON_ID
---------- ------------------------------ ---------- ---------- ----------
     2 PDB$SEED           NORMAL     3575060827      2

对于PDB而言,当刚创建时,其状态为NEW,并且在第一次将其以读/写方式打开时,其状态调整为NORMAL,因为在第一次打开PDB的时候,需要进行一些相关操作.状态为UNUSABLE表明该PDB创建失败,并且唯一允许的操作是将其删除.

状态为UNPLUGGED,表明该PDB将会被传输到其它的CDB,而在源CDB上,唯一能做的操作就是将该PDB删除.

SQL> l
  1* select con_id,name,open_mode,open_time from v$pdbs
SQL> /
    CON_ID NAME               OPEN_MODE  OPEN_TIME
---------- ------------------------------ ---------- ---------------------------------------------------------------------------
     2 PDB$SEED           READ ONLY  21-JUN-19 10.31.47.849 AM +08:00

在非PDB中,MOUNTED状态表明当前的控制文件已经被读取,但是数据文件还没有被实例打开.可以使用show pdbs来查看当前的PDB状态,如果正处于根容器中,还可以显示所有的PDB:

SQL> show pdbs
    CON_ID CON_NAME           OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
     2 PDB$SEED           READ ONLY  NO

3.通过CON_ID和DBID来识别容器

CON_ID来标识容器,但是当PDB移动的时候,CON_ID就会变化,因此使用CON_UID来唯一标识PDB.

4.连接到容器

使用show con_id和show con_name来查看当前连接的pdb

SQL> show con_id
CON_ID
------------------------------
1
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT

可以使用alter session命令来切换容器,例如:

SQL> alter session set container=brent;
Session altered.

PDB的隔离性:

在pdb中只能访问到当前PDB的数据.不同PDB之间的操作是相互独立的.你可以使用alter session set container=XX;来在PDB之间进行切换.

但是注意当在一个PDB上进行事务的时候,如果没有提交或者回滚,在不能在另一个PDB上开启事务.

如果你想使用PDB,CDB的特性,则需要使用12c的客户端,否则在执行切换PDB的时候会产生错误.

注意:

不同的PDB可以使用自己的system,sysaux,undo,temp,users表空间(推荐这么做),但是使用共有的redo日志,控制文件和参数文件.

如果想在切换不同的pdb的时候执行不同的参数,可以在PDB中创建BEFORE SET CONTAINER或者AFTER SET CONTAINER触发器.

5.容器中的字典

当你处在PDB中时候,pdb中包含了所有你想从数据库中看到的内容.当你在一个PDB中进行数据字典查询的时候,与你在其它非CDB环境中的一样.DBA_和V$视图都是当前PDB下的.

当你处在CDB的时候,就可以看CDB_视图,这些视图是所有容器DBA_视图的union all结果.这是一个CDB管理员使用的方法,从而查看所有对象.

对于CDB$ROOT用户,v$视图将会显示所有的容器内的信息.例如v$session中con_id标识了此会话当前属于哪个PDB.

6.参数文件

对于所有的容器,spfile是公用的,spfile持有的该实例的相关参数,并为整个CDB进行属性设置.

有些参数可以在PDB级别进行单独配置.具体哪些参数,可以参考v$parameter中的ISPDB_MODIFIABLE为TRUE的列.

如果手工指定了某pdb的参数,那么此pdb的参数将覆盖cdb的参数.不再参考cdb的参数值.而且此pdb的参数是存放在CDB的数据字典PDB_SPFILE$中.

可以通过查看数据字典pdb_spfile$来查看pdb指定的参数:

SQL> select a.name,a.dbid,b.pdb_uid,b.name,b.value$ from v$pdbs a ,pdb_spfile$ b where a.dbid=b.pdb_uid and a.name='PDB2'
SQL> /
NAME                     DBID    PDB_UID NAME                                         VALUE$
------------------------------ ---------- ---------- -------------------------------------------------------------------------------- ------------------------------
PDB2                   2158045800 2158045800 db_securefile                                    'PREFERRED'
PDB2                   2158045800 2158045800 open_cursors                                     1000

注意一个DB_FILES参数,默认为200,当你有很多PDB的时候,可能很快就会超过,因此注意在创建CDB的时候就修改其大小.

7.控制文件

控制文件也是CDB级别的.控制文件是唯一真正存储数据文件名称的地方.例如你在CDB中查询dba_data_files只显示当前CDB的数据文件,并不会列出所有的数据文件,

但是你查询v$datafile会列出所有的数据文件,因为v$datafile查询的是控制文件.

当一个PDB被拔出或者插入的时候,所有与该PDB相关的数据文件信息,也会被控制文件中导出,然后存储到一个XML文件中.

8.UNDO文件

在12.1中UNDO是CDB级别的.

但是在12.2中UNDO可以是PDB级别的,当LOCAL_UNDO被设置为on的时候,每个PDB都拥有自身的UNDO表空间

建议将UNDO本地管理,即每个PDB都拥有其独立的undo,这样可以做到PDB隔离,而且在PDB闪回的时候也更方便.

9.临时表空间

临时表空间可以是PDB或者CDB级别创建,建议每个PDB拥有其独立的临时表空间

如果某个会话在执行的过程中没有指定临时表空间,而且该PDB也没有默认的临时表空间,则使用CDB的临时表空间.

10.redo日志

redo日志是CDB级别的,所有的PDB公用相同的redo日志

CDB环境下的redo日志与以前的类似,但是需要在每一条redo中记录额外的信息用来标记来至哪个容器.

使用统一的redo线程来处理所有的PDB,因此对于DBA管理CDB而言就变得轻松.所有的备份,rac配置,dg配置都是在CDB级别进行配置,PDB会随着CDB自动进行备份,配置,DG等.

12C中CDB和PDB的一些概念相关推荐

  1. oracle pdb还原为no-cdb,oracle 12c中CDB和PDB的备份还原实验

    本文档分为两部分: 1.单个pdb备份还原 2.只cdb备份还原 1.rman只备份pdb SQL> show pdbs CON_ID CON_NAME                      ...

  2. 【12c新特性】12c中如何自动启动PDB Pluggable Database

    PDB Pluggable Database是12c中扛鼎的一个新特性, 但是对于CDB中的PDB,默认启动CDB时不会将所有的PDB带起来,这样我们就需要手动alter pluggable data ...

  3. Oracle - 5.0 - 【学习笔记】for ocp 12c、多租户(CDB、PDB)

    文章目录 多租户构型 多租户概念 数据字典视图 多租户的驱动程序 CDB和根容器 # 会话切换 PDB:可插入容器 设置可插拔数据库 在多租户容器数据库中进行交互 创建容器数据库 使用DBCA创建CD ...

  4. oracle12c官方文档中文版_三分钟让你真正读懂oracle12c 中cdb pdb概念及原理

    Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库( ...

  5. oracle中pdb,Oracle 12C新特性-CDB和PDB 详解

    最近看到好多人都在尝试Oracle中的12C新特性-容器数据库,今年3月Orcle推出了Release2版本,可以算是一个稳定版本了.下午着手尝试了一下,还是蛮不错得 1.前言 CDB与PDB是Ora ...

  6. Oracle 12c 多租户 CDB 与 PDB之 shared undo 与 Local undo 切换

    undo 在12C R1版本中只支持Global Shared Undo模式, 所有container共享一个UNDO表空间, 目前保留这种模式只是为了升级过渡, 在12C R2引入了PDB Loca ...

  7. oracle12c racpdb,Oracle 12C R2的CDB与PDB简单管理操作

    Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库( ...

  8. oracle pdb 表空间,Oracle 12c CDB 和 PDB 表空间管理和配置 说明

    注:本文谢绝转载. 1  管理CDB中的表空间 CDB表空间的管理和non-CDB 表空间的管理一样,CDB 也有一个实例,在安装的时候指定. --查看表空间: SQL> select inst ...

  9. oracle的cbd和pdb区别,Oracle 12C CDB、PDB常用管理命令

    Oracle 12C CDB.PDB常用管理命令 --查看PDB信息(在CDB模式下) show pdbs --查看所有pdbselect name,open_mode from v$pdbs; -- ...

  10. Oracle 12C CDB、PDB常用管理命令

    --查看PDB信息(在CDB模式下) show pdbs --查看所有pdb select name,open_mode from v$pdbs; --v$pdbs为PDB信息视图 select co ...

最新文章

  1. java中的几种对象(PO,VO,DAO,BO,POJO)
  2. C 语言中的 feof()函数
  3. 按15分钟取数据_步行15分钟能获得什么?这组数据能告诉你……
  4. hystrix熔断和降级的区别_Ribbon+Hystrix断路器实现微服务的降级和熔断
  5. ArrayList实现
  6. linux下利用nohup后台运行jar文件包程序
  7. django render_(django/flask/bottle)多框架python-restful接口包api-shop
  8. DeepMind作弊?被质疑干翻星际2顶尖高手全靠手速
  9. Maven 项目管理 —— 安装与配置
  10. APP测试常用测试点
  11. 用友T1-商贸宝库存商品明细账
  12. 国家2000坐标系的理解
  13. CC2430基础——定时器1试验
  14. Linux课程设计每日小结
  15. 在电脑上微信无法语音聊天,微信听不到语音声音
  16. 容联云通讯发送短信java实现
  17. 一个保护眼睛的小技巧
  18. k8s使用 ceph rbd 模式 踩坑
  19. Vue form表单input框 手动赋值 提交时 表单input值没有生效 验证仍然是空
  20. MCU控制的电池管理是成功的物联网实现的关键

热门文章

  1. 操作系统的功能、作用、分类
  2. 【记录】读《你在天堂里遇见的五个人》有感
  3. 幼儿园大班下学期幼小衔接工作计划
  4. 数据类型——字符串(str)
  5. 高德 android 百度转高德,记一次百度和高德经纬度互转(不是你想的那样)
  6. 计算机缺少什么无法正常启动,电脑无法正常启动
  7. 去哪儿笔试:身份证分组
  8. Matlab中矩阵的平方和矩阵中每个元素的平方介绍
  9. c语言闰月的计算方法,2017 清宫图闰月的计算方法
  10. 基于Android的简易的二手物品交易app