ORACLE 12C新特性——CDB与PDB

  Oracle
12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant
Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container
Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE
12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对
多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。

 

其实大家如果对SQL
SERVER比较熟悉的话,这种CDB与PDB是不是感觉和SQL
SERVER的单实例多数据库架构是一回事呢。像PDB$SEED可以看成是master、msdb等系统数据库,PDBS可以看成用户创建的数据库。而
可插拔的概念与SQL SERVER中的用户数据库的分离、附加其实就是那么一回事。看来ORACLE也“抄袭”了一把SQL
SERVER的概念,只是改头换面的包装了一番。

 

 

CDB组件(Components of a CDB)

 

一个CDB数据库容器包含了下面一些组件:

ROOT组件

ROOT又叫CDB$ROOT, 存储着ORACLE提供的元数据和Common User,元数据的一个例子是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的用户。

SEED组件

  Seed又叫PDB$SEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改一个对象。一个CDB中有且只能有一个Seed. 这个感念,个人感觉非常类似SQL SERVER中的model数据库。

PDBS

    CDB中可以有一个或多个PDBS,PDBS向后兼容,可以像以前在数据库中那样操作PDBS,这里指大多数常规操作。

这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个PDB是一个容器。每个容器在CDB中都有一个独一无二的的ID和名称。

 

1)连接到CDB数据库

连接到CDB数据库容器非常简单,跟以前连接数据库是一样的

[oracle@get-orasvr02 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sun Oct 20 23:41:36 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL>

[oracle@get-orasvr02 ~]$ sqlplus sys/password   as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sun Oct 20 23:43:17 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL>

 

2)查看数据库是否为CDB


SQL> select name, decode(cdb, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option" , open_mode, con_id from v$database;

NAME      Multitenant Option                   OPEN_MODE                CON_ID

--------- -----------------------------   --------------------         ----------

EPPS      Multitenant Option enabled            READ WRITE                  0

 

YES表示该数据库是CDB,如果是NO表示是NO-CDB(普通数据库)

 

3)查看当前容器(Container)

3.1

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL>

3.2

SQL> select sys_context('userenv', 'con_name') "Container DB" from dual;

Container DB

----------------------------------------------------

CDB$ROOT

SQL>

 

4)查看CDB容器中的PDBS信息

查看CDB中有多少个pluggable database

SQL>  select con_id, dbid, guid, name , open_mode from v$pdbs;

    CON_ID       DBID GUID                             NAME                           OPEN_MODE

---------- ---------- -------------------------------- ------------------------------ ----------
4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED                       READ ONLY
1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS                        MOUNTED

SQL>

 

5)启动PDB数据库

方式1:


SQL> alter pluggable database PDBEPPS open;

Pluggable database altered.

SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;

    CON_ID       DBID GUID                             NAME                           OPEN_MODE

---------- ---------- -------------------------------- ------------------------------ ----------
4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED                       READ ONLY
1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS                         READ WRITE

 

方式2:

SQL> alter session set container=PDBEPPS;

Session altered.

SQL> startup

Pluggable Database opened.

SQL>

 

6)关闭PDB数据库

SQL> alter pluggable database PDBEPPS close;

Pluggable database altered.

SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;

    CON_ID       DBID GUID                             NAME                           OPEN_MODE

---------- ---------- -------------------------------- ------------------------------ ----------

         2 4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED                       READ ONLY

         3 1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS                        MOUNTED

SQL>

 

 

7)在容器间切换

SQL> alter session set container=PDBEPPS;

Session altered.

SQL> show con_name;

CON_NAME

------------------------------

PDBEPPS

SQL>

SQL> alter session set container=CDB$ROOT;

Session altered.

SQL> show con_name;

CON_NAME

------------------------------

CDB$ROOT

SQL>

 

 

时间: 2024-11-17 12:00:33

ORACLE 12C新特性——CDB与PDB的相关文章

《Oracle数据库管理与维护实战》——1.3 Oracle 12c新特性

1.3 Oracle 12c新特性 Oracle数据库管理与维护实战 纵观甲骨文全球大会和甲骨文公司的各种资讯,我们可以发现云计算和大数据是两个重要的主题,Oracle 12c则融合了这两大主题.与以往的Oracle数据库相比,Oracle 12c在16个方面进行了更新.本节将详细介绍Oracle 12c数据库中的16个新特性. 1.3.1 支持多线程模式 在Oracle 12c中,Oracle引入了多线程模式,允许在Windows平台之外的UNIX.Linux等系统使用多线程模式.结合多进程与

软件大会分享PPT:面向开发和DBA的Oracle 12c新特性

在2016年12月10日的『中国软件大会上』,我分享了一个主题:<面向开发人员和DBA的Oracle 12c新特性>,从安全的主题开始,以在线变更为主线,分享了Oracle 12c的一些新特性,尤其是12.2的部分新特性. 在这个主题中,12.2 的 lockdown profile 成为我的出发点,通过这一新的安全机制,Oracle 12c 的PDB权限得以被限制,可以防范PDB的高权限操作对全局产生影响. 而在12.2中PDB的Clone,可以在线进行,这是较12.1的又一大进步: Ora

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:每个 K

[20130915]12c新特性 varchar2支持32K长度.txt

[20130915]12c新特性 varchar2支持32K长度.txt oracle 12c以前如果字符串长度超过4000,必须使用blob或者clob类型.12c开始支持超过4000的字符串长度,提高一些应用的灵活性,达到32K,避免一些字段定义为clob,blob类型,提高处理能力. 但是12c默认的方式不支持大于4000的字符串长度,必须经过一些步骤升级完成,自己测试如下: SYS@test> @ver BANNER                                    

[20140218]12c 新特性heat map.txt

[20140218]12c 新特性heat map.txt 12c 新特性,可以记录那些对象经常使用. 它可以在session或者system打开,不过我的测试好像在cdb数据库无效. SCOTT@ztest> @ver BANNER                                                                               CON_ID -----------------------------------------------

12c新特性:Last Successful login time

[20150920]12c新特性:Last Successful login time.txt --12c有一个新特性,就是使用sqlplus登录时,会提示最后成功的登录时间.Last Successful login time. --起始这个不算什么特性,我个人想了解这个时间是从那里得来的. sqlplus scott/xxxxxx@test01p SQL*Plus: Release 12.1.0.1.0 Production on Sun Sep 20 17:54:37 2015 Copyr

[20130808]12c新特性Temporary undo.txt

[20130808]12c新特性Temporary undo.txt 12C提供特性临时表执行dml时生成的undo保存在临时表空间,这个特性叫Temporary Undo,由数据库参数temp_undo_enabled控制,有两个优点:     1.很明显减少redo在临时表做dml操作时.    2.允许在physical standby database上对临时表执行dml操作.(没有环境无法测试) 测试: SQL> @ver BANNER                         

[20131121]12c新特性Session sequences.txt

[20131121]12c新特性Session sequences.txt http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_6016.htm SESSION Specify SESSION to create a session sequence, which is a special type of sequence that is specifically designedto be used with glo

[20140108]12c新特性_Statistics Feedback.txt

[20140108]12c新特性_Statistics Feedback.txt 摘自:Apress.Pro.Oracle.SQL.2nd.Edition.Nov.2013.pdf Statistics feedback, known as cardinality feedback prior to Oracle 12c, is a mechanism used by the optimizer to improve automatically plans' repeated query exe