Oracle 20C 多租户_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.1CDBs一个CDB包含一个或多个用户创建的pdb和应用程序容器。
在物理级别上,CDB是一组文件:控制文件、在线重做日志文件和数据文件。由数据库实例管理以上文件称为CDB。
下图显示了一个CDB和一个相关的数据库实例。
· 图1-1数据库实例与CDB
1.2.1.2PDBsPDB是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的PDBshard组成一个逻辑数据库,称为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
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。