Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23953
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 102
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-12 17:08
文章分类

全部博文(9)

文章存档

2016年(9)

我的朋友

分类: Oracle

2016-11-09 16:22:34

最近工作中用到了Oracle 12c,特此整理了一些相关笔记,如下
Oracle 多租户是 Oracle Database 12c 中的新选项。使用多租户体系结构,Oracle DB 可以包含一组可移植的方案、对象和相关结构,面向应用程序作为一个逻辑上的单独数据库出现。
使用 Oracle 多租户选项,DBA 可以将大量小的部门数据库应用程序合并为单个较大的RDBMS 安装。
在 Oracle Database 11 中,每个数据库实例与一个且仅一个数据库相关联。在 RAC 环境中,多个实例可以与一个数据库关联。
在 Oracle Database 12c 中,一个实例将与整个 CDB 关联。
如果同一个服务器上有多个数据库,则每个非 CDB 或 CDB 具有单独的相异实例。
实例不能在非 CDB 和 CDB 之间共享。
在 Oracle Database 12c 中,有三个可能的配置选项:
1、多租户配置:通常每个 CDB 有多个 PDB,但是任何时候可以一次存放零个、一个
或许多 PDB,从而利用新体系结构的全部功能,这需要授权的 Oracle 多租户选项
2、单租户配置:新体系结构的特殊案例,这不需要授权的选项
3、非 CDB :旧的 Oracle Database 11 体系结构
容器
在 Oracle 12c 中,引入了容器的概念来将 Oracle 提供的对象和用户数据(包括元数据)分离到不同容器中。
可将其视为水平分区。在存放数据字典的每个容器中有一个 SYSTEM 表空间。
在仅 Oracle 元数据容器(其包含 Oracle 提供的对象的元数据)中有一个字典。
在存放用户元数据的用户容器中有一个字典。


Oracle 提供的对象位于称为根容器(名为 CDB$ROOT)的容器中。用户容器称为可插入
数据库 (PDB),其名称是在创建该容器或者将其插入 CDB 时为其提供的名称。
使用存放多个 PDB 的多租户体系结构,这些曾经分离的非 CDB 现在可以位于单个实例
中,共享内存、磁盘和 CPU 资源,但维护应用程序分离。这些数据库通过使用数据库链接(快速CDB内db链接)共享数据。
数据库链接仍起作用,但是现在因为“链接”通信不离开实例,所以该链接非常快。

Oracle 12c的V$CONTAINERS 中有两种类型的容器:
1、根容器:
– 在创建 CDB 时创建的第一个容器
– 必需
– Oracle 系统提供的公用对象和元数据
– Oracle 系统提供的公用用户和角色
2、可插入数据库容器 (PDB):
– 应用程序的容器:
— 表空间(永久和临时)
— 方案/对象/权限
— 已创建/已克隆/已移走/已插入
– 特定种子 PDB:
— PDB$SEED 提供新 PDB 的快速预配
– 限制一个 CDB 中只能有 253 个 PDB(包括种子)
– 限制一个 CDB 中只能有 1024 个服务

使用多租户体系结构,Oracle DB 可以包含方案、方案对象和非方案对象的可移植集合,
面向 Oracle Net 客户机作为一个单独数据库出现。为了 PDB 存在和运行,CDB 要求在
创建 CDB 时生成特定类型的容器,即根容器。根是存储公用用户的系统提供的容器,这
些容器可以连接到多个容器以及系统提供的元数据和数据。例如,系统提供的 PL/SQL 程
序包的源代码存储在根中。存在根容器时,您可以创建其他类型的容器,即 PDB。
CDB 中仅有一个种子 PDB。种子 PDB 是用于创建新 PDB 的系统提供的模板。
CDB 最多可以包含 253 个 PDB,包括种子。因此,可以创建 252 个用户定义的 PDB。
V$CONTAINERS 视图显示包括根在内的所有容器。

PDB与根
下列组件位于某个PDB中而不在根中,也不在另一PDB中,分别是:
应用程序表空间、本地临时表空间、本地用户和本地角色、本地用户连接到其所在的 PDB、
非共享的本地元数据、不与其他 PDB 共享的应用程序数据、PDB 资源管理器计划。
下列组件在PDB中而不在根中,分别是:
应用程序表空间、
本地临时表空间、
本地用户和本地角色、
非共享的本地元数据、
PDB 资源管理器计划,允许在 PDB 内进行资源管理。

公用用户和本地用户
本地用户
非 CDB 中的用户映射到非 PDB 中的本地用户。
在 PDB 自己的数据字典中定义本地用户,所以在该 PDB 之外不知道该用户。
本地用户仅可连接到在其中定义该用户的 PDB。
本地用户特定于特定 PDB,在该 PDB 中拥有方案。
根据授予的权限,用户可以处理 PDB 内的应用程序数据或者使用数据库链接处理
其他 PDB 的应用程序。而且,不能在根中定义任何本地用户。
公用用户
公用用户在 root 的数据字典中定义。
仅可以在根中定义公用用户:通过创建公用用户,CDB 管理员可以一次创建将在
每个 PDB 中复制的用户。
公用用户不仅在根中其定义的位置而且在属于 CDB 的每个 PDB 中为已知。
公用用户可以执行特定于根或 PDB 的管理任务,例如插入和移走 PDB、启动 CDB
或在授予正确权限时打开 PDB。

共享和非共享对象
在非 CDB 中,所有对象都是本地对象。12c 中引入了公用对象,以避免在 CDB 中存储
数据和元数据的冗余表示,并简化 CDB 的升级过程。共享对象仅存在于 Oracle 提供的
方案中。
共享对象可能是与元数据链接的或者与对象链接的。
1、与元数据链接的对象仅在根中存储有关字典对象的元数据。每个 PDB 具有对象的专
用数据副本,指向根中存储的元数据链接。
2、与对象链接的对象及其数据仅位于根中,由所有 PDB 共享。
阅读(978) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~