Oracle 12c系列(一)|多租户容器数据库

本文是Oracle 12c系列的第一篇,主要介绍Oracle的多租户容器数据库(CDB)特性,包括CDB的构成如Root容器、种子数据库和可插入数据库(PDB),以及CDB中的用户类型、重做日志、归档、回滚模式、临时文件、参数文件、控制文件、告警日志、时区、字符集等关键概念。此外,还探讨了CDB环境中的数据字典视图和动态性能视图,以及如何创建和管理CDB。
摘要由CSDN通过智能技术生成


作者   杨禹航

出品   沃趣技术

Oracle 12.1发布至今已有多年,但国内Oracle 12C的用户并不多,随着12.2在去年的发布,选择安装Oracle 12c的客户量明显增加,在接下来的几年中,Oracle 12c将逐步得到普及。

目前关于12C新特性的文章很多,但大多都不成体系,本次的文章是一个非常完整、连贯的系列,将带你全面的从基础到深入全方位的理解Oracle 12C。

本篇为Oracle 12c系列的开篇文章《Oracle 12c系列(1)Multitenant Container》。

可插入数据库的概念

Oracle Multitenant Container Database(CDB),即多租户容器数据库,是Oracle 12C引入的特性,指的是可以容纳一个或者多个可插拔数据库的数据库,这个特性允许在CDB容器数据库中创建并且维护多个数据库,在CDB中创建的数据库被称为PDB,每个PDB在CDB中是相互独立存在的,在单独使用PDB时,与普通数据库无任何区别。

CDB根容器数据库的主要作用就是容纳所有相关的PDB的元数据,以及在CDB中对所有的PDB进行管理。

多租户环境的组成

  • ROOT
    Root容器数据库,是CDB环境中的根数据库,在根数据库中含有主数据字典视图,其中包含了与Root容器有关的元数据和CDB中所包含的所有的PDB信息。在CDB环境中被标识为CDB$ROOT,每个CDB环境中只能有一个Root容器数据库。

  • CDB seed
    CDB seed为PDB的种子,其中提供了数据文件,在CDB环境中被标识为PDB$SEED,是创建新的 PDB的模板,你可以连接PDB$SEED,但是不能执行任何事物,因为PDB$SEED是只读的,不可进行修改。

  • PDBs
    PDB数据库,在CDB环境中每个PDB都是独立存在的,与传统的Oracle数据库基本无差别,每个PDB拥有自己的数据文件和objects,唯一的区别在于PDB可以插入到CDB中,以及在CDB中拔出,并且在任何一个时间点之上PDB必须拔出或者插入到一个CDB中,当用户链接PDB时不会感觉到根容器和其他PDB的存在。

CDBwith PDBs

 

sys. ora12c>show pdbs
CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
    2 PDB$SEED                       READ ONLY  NO
    3 ORA12CPDB                      READ WRITE NO
    4 PDB2                           MOUNTED
    5 PDB1                           MOUNTED
    6 PDB3                           READ WRITE NO
sys. ora12c>

PDB$SEED为CDB seed,ORA12CPDB/PDB1/PDB2/PDB3为PDB数据库。

Application Containers

在12cR2版本中,Oracle对多租户功能进行了增强,在CDB root容器中可以创建一个叫做Application root的容器,可在其内创建多个依赖于Application root的Application PDBs,架构图如下:

ApplicationContainers in a CDB

Application

更多的关于Application Containers相关内容请参考之前的ApplicationContainers系列:

《Oracle12cR2版本Application Containers特性(1)》

《Oracle12cR2版本Application Containers特性(2)》

《Oracle12cR2版本Application Containers特性(3)》


CDB环境中的用户

CDB环境中包含两类用户,公用用户和本地用户。

公用用户

公用用户是在root数据库中和所有的PDB数据库中都存在的用户,公用用户必须在根容器中创建,然后此用户会在所有的现存的PDB中自动创建,公用用户标识必须以c##或者C##开头,sys和system用户是Oracle在CDB环境中自动创建的公用用户。

 

create user c##yyh identified by yyh;

创建完成公用用户,需要为公用用户赋予所有可插拔数据库的权限,公用用户才可以访问其他PDB,如果在连接根容器时仅仅为公用用户赋予了相关权限,那么该权限不会被传递到所有的可插拔数据库中,必须为公用用户赋予能够传递到PDB中的权限,可以创建公用角色然后赋予公用用户,或者在为公共用户付权时指定子句container=ALL;
例如:

 

   或者
grant dba to c##yyh container=all;
create role c##dbaprivs container=all;
grant dba to c##dbaprivs container=all;
grant c##dbaprivs to c##yyh container=all;
或者
grant dba to c##yyh container=all;

本地用户

本地用户指的是在PDB中创建的普通用户,只有在创建它的PDB中才会存在该用户,并且PDB中只能创建本地用户。

CDB中你需要再次了解的基础知识


    丨 SYSTEM/SYSAUX

在CDB的数据库环境中,SYSTEM/SYSAUX表空间并不是公用,CDB$ROOT以及每个PDB都拥有自己的SYSTEM和SYSAUX表空间。

REDO文件

在CDB环境中所有的PDB共用CDB$ROOT中的REDO文件,REDO中的条目标识REDO来自那个PDB。

在PDB中无法执行ALTERSYSTEM SWITCH LOGFILE命令,只有公用用户在ROOT容器中才可以执行该命令。

另外ALTER SYSTEM CHECKPOINT命令是可以在PDB中执行的。

归 档

在CDB环境中所有的PDB共用CDB的归档模式,以及归档文件,不可以单独为PDB设置自己的归档模式,只有特权用户连接根容器之后才可以启动归档模式。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值