ITPub博客

首页 > 数据库 > Oracle > Oracle 20C 多租户_1.2 数据库与实例介绍

Oracle 20C 多租户_1.2 数据库与实例介绍

翻译 Oracle 作者:orastar 时间:2020-04-21 17:20:20 0 删除 编辑

1.2  数据库和实例

Oracle 数据库服务器由一个数据库和至少一个数据库实例组成,通常简称为一个实例。

因为一个实例和一个数据库是如此紧密地联系在一起,所以 Oracle 数据库这个术语有时同时指实例和数据库。 最严格地说,这些术语有下列含义 :

l   数据库

数据库是一组位于磁盘上的文件,用于存储用户数据。 这些数据文件可以独立于数据库实例而存在。 Oracle 数据库 20c 开始, 数据库 特指多租户容器数据库 (CDB) 、可插拔数据库 (PDB) 或应用程序容器的数据文件。

l   实例

实例是一组命名的内存结构,用于管理数据库文件。 数据库实例由共享内存区域 ( 称为系统全局区域 (SGA)) 和一组后台进程组成。 实例可以独立于数据库文件而存在。

 

1.2.1  多租户架构

多租户体系结构使 Oracle 数据库成为 CDB

每个 Oracle 数据库必须包含或能够包含另一个数据库。 例如, CDB 包含 pdb ,而应用程序容器包含应用程序 pdb PDB CDB 或应用程序容器包含,而应用程序容器由 CDB 包含。

Oracle Database 20c 开始,多租户容器数据库是唯一受支持的体系结构。 在以前的版本中, Oracle 支持非容器数据库 (non-container databases, non-CDBs)

 

1.2.1.1  CDBs

一个 CDB 包含一个或多个用户创建的 pdb 和应用程序容器。

在物理级别上, CDB 是一组文件 : 控制文件、在线重做日志文件和数据文件。 由数据库实例管理以上文件称为 CDB

下图显示了一个 CDB 和一个相关的数据库实例。

·          1-1 数据库实例与 CDB

 

 

 

 

 

1.2.1.2  PDBs

PDB schemas schema 对象和 nonschema 对象的可移动集合,在应用程序中作为单独的数据库出现。

在物理级别,每个 PDB 都有自己的一组数据文件,用于存储 PDB 的数据。 CDB 包括所有 pdb 数据文件,以及一组存储 CDB 本身元数据的系统数据文件。

要移动或存档 PDB ,可以拔掉它。 unplugged PDB PDB 数据文件和元数据文件组成。 unplugged PDB 在插入到 CDB 之前是不可用的。

下图显示了一个名为 MYCDB CDB

·          1-2 CDB 中的 PDBs

 

在物理上, MYCDB 是一个 Oracle 数据库,即与一个实例关联的一组数据文件。 尽管在 Oracle Real 应用程序集群中可以有多个实例,但 MYCDB 只有一个数据库实例和一组数据库文件。

MYCDB 包含两个 pdb: hrpdb salespdb 如图 1-2 所示,这些 pdb 在各自的应用程序中显示为单独的、独立的数据库。 应用程序不知道它是连接到 CDB 还是 PDB

要管理 CDB 本身或其中的任何 PDB ,您可以连接到 CDB root root 是所有 pdb 和应用程序容器所属的模式、模式对象和非模式对象的集合。

 

·          1.2.1.3 应用程序容器

应用程序容器是 CDB 中一个可选的、用户创建的容器,用于存储一个或多个应用程序的数据和元数据。

application( 也称为主应用程序定义 ) 是存储在 application root  中的一组已命名的、版本化的公共数据和元数据。 例如, application 可能包括表、视图、用户帐户和 PL/SQL 包的定义,这些定义对于一组 pdb 是通用的。

 

在某些方面,应用程序容器充当 CDB 中的特定于应用程序的 CDB CDB 本身一样,一个应用程序容器可以包含多个应用程序 pdb ,并允许这些 pdb 共享元数据和数据。 在物理级别上,应用程序容器 PDB 一样 , 有自己的一组数据文件。

例如, SaaS 部署可以使用多个应用程序 pdb ,每个 pdb 用于一个单独的客户,该客户共享应用程序元数据和数据。 例如,在下面的图中, sales_app 是应用程序根目录中的应用程序模型。 名为 cust1_pdb 的应用程序只包含客户 1 的销售数据,而名为 cust2_pdb 的应用程序只包含客户 2 的销售数据。 对于单个客户 PDBs ,可以进行插入、拨出、克隆和其他 pdb 级操作。

·          1-3 SaaS 用例

 

·          1.2.2 Sharding 架构

Oracle Sharding 是一种基于跨多个 pdb 的数据水平分区的数据库扩展技术。 应用程序将 PDBs 池视为单个逻辑数据库。

sharding 对于 OLTP 应用程序的主要好处包括线性可伸缩性、故障包容和地理数据分布。 sharding 非常适合在 Oracle 云中部署。 与实现 sharding NoSQL 数据存储不同, Oracle sharding 提供了 sharding 的优点,同时又不牺牲企业 RDBMS 的功能。

sharding 架构中,每个 CDB 都托管在一个专用服务器上,服务器上有自己的本地资源 :CPU 、内存、 flash 或磁盘。 可以将 PDB 指定为 shard 来自不同 cdb PDB  shard 组成一个逻辑数据库,称为 sharded   数据库。 同一个 CDB 中的两个 shard 不能是同一个 sharded 数据库的成员。 但是,在同一个 CDB 中,一个 PDB 可以在一个 sharded 数据库中,另一个 PDB 可以在一个单独的 sharded 数据库中。

水平分区将一个数据库表拆分,每个分片包含具有相同列但不同行的子集。 以这种方式分割的表也称为 sharded table 下图显示了一个经过水平分割的 sharded table ,它横跨三个 shards ,每个 shard 都是单独 CDB 中的 PDB

 

1-4 水平分区的 sharded table

以下示例是跨多个 CDBs 存储客户帐户数据。 例如, ID 28459361 的客户可以查询他的记录。 下图显示了一种可能的结构。 客户请求通过连接池路由,其中分片控制器 ( 网络监听器 ) 将请求定向到适当的 PDB 分片,该分片包含所有客户行。

 

Figure 1-5 Oracle Sharding Architecture

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31442014/viewspace-2687445/,如需转载,请注明出处,否则将追究法律责任。

全部评论
作者简介:惠星星,现就职于北京海天起点,持有OCP 10g、OCP 11g、OCM 11g证书,并有长达8年电力行业业务维护、数据库维护服务经验,擅长Oracle数据库性能优化、故障处理及Oracle internal研究。

注册时间:2017-03-08

  • 博文量
    91
  • 访问量
    93912