暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle多租户管理员指南-体系结构介绍01

IT小Chen 2021-04-14
682

Oracle® Multitenant 

Administrator’s Guide

Part I Multitenant Architecture

1 Introduction to the Multitenant Architecture

2 Overview of the Multitenant Architecture

Part I 多租户体系结构

多租户体系结构使Oracle数据库能够充当多租户容器数据库(CDB)。

1 介绍多租户体系结构

熟悉Oracle Multitenant选项。

1.1 Oracle Database Release 20cOracle Multitenant Administrator 's Guide中的变化,以下是该版本的新特性。

•采用非CDB作为PDB,使用重放升级

Oracle数据库20cdb中采用以前版本的非CDB作为PDB时,PDB正常打开时会自动升级。重播升级功能自动捕获必要的CREATEREPLACE语句,仅重播已更改对象的语句,并转换数据字典。重播机制与应用程序同步中使用的机制相同。

请参阅《Oracle数据库升级指南》,了解如何使用重播升级将非CDB用作PDB

PDB打开时重播升级

PDBCDB根之间发生版本不匹配时,打开PDB会自动升级它。PDB Open optimization上的重播升级是默认的,它通过重新执行存储在捕获表中的语句来避免手动的错误纠正。该机制与应用程序同步中使用的机制相同。Oracle数据库20c在以下场景中使用PDB Open上的重播升级:

-在以前的版本中,你插入了一个从CDB中拔出来的PDB。当PDB打开时,数据库自动执行重播升级。

-以前版本的CDB升级到Oracle数据库20c,但是CDB中的PDB没有升级。如果您在没有打开升级选项的情况下打开PDB,那么CDB将自动执行PDB的重播升级。

•与Oracle数据库的命名空间集成

DbNestpdb提供操作系统资源隔离和管理、文件系统隔离和安全计算。当启用DbNest时,数据库实例的设置发生在一个嵌套中,该嵌套是一种独立的分层容器。数据库实例系统资源与其他实例隔离。文件和目录只能由配置它们的CDBPDB访问。

Oracle Cloud中透明的应用程序连续性

在计划的维护期间,数据库可能会决定会话不太可能在“排出”窗口中排出。在这种情况下,数据库调用应用程序连续性并自动故障转移会话。

cpu_min_count初始化参数增强

CPU_MIN_COUNT表示PDBCDB所需的最小CPU线程数。CPU资源管理器使用PDB级的CPU_MIN_COUNT值来设置资源计划中的PDB共享。对于每个PDB, CPU资源管理器确保对CPU的公平访问,保证最小的CPU,并强制执行最大的CPU

job_queue_processes初始化参数增强

所有容器的JOB_QUEUE_PROCESSES的默认值已经从4000更改为一个自动值,该值取决于会话和CPU线程的数量。

max_idle_blocker_time初始化参数增强

MAX_IDLE_BLOCKER_TIME设置持有所需资源的会话在候选终止之前空闲的分钟数。

•应用程序同步的扩展语法

ALTER PLUGGABLE DATABASE APPLICATION ... SYNC语句接受多个应用程序名称。例如,在应用程序PDB中发布的单个语句可以同步apexappordsapp,或者同步ordsapp之外的所有应用程序。

当应用程序彼此依赖时,为了保证函数的正确性,需要在一条语句中对它们进行同步。假设您将apexapp1.0升级到2.0,将ordsapp1.0升级到2.0,然后将apexapp升级到3.0。语句改变可插入的数据库应用程序apexapp, ordsapp同步按顺序回放升级,将apexapp升级到2.0,ordsapp升级到2.0,然后apexapp升级到3.0。在单独的语句中同步apexappordsapp并不保留升级顺序。

1.2数据库与实例

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

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

•数据库

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

•数据库实例

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

1.2.1多租户体系结构

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

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

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

1.2.1.1 CDB

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

在物理层,CDB是一组文件:控制文件、联机重做日志文件和数据文件。数据库实例管理构成CDB的文件。

下图显示了CDB和关联的数据库实例。

1.2.1.2 PDB系统

PDB是模式、模式对象和非模式对象的可移植集合,在应用程序中显示为单独的数据库。

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

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

下图显示名为MYCDBCDB


从物理上讲,MYCDB是一个Oracle数据库,即一组与实例关联的数据文件。MYCDB有一个数据库实例,尽管在Oracle Real Application Clusters集群中可能有多个实例,还有一组数据库文件。

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

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

1.2.1.3应用程序容器

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

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

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

例如,SaaS部署可以使用多个应用程序pdb,每个pdb用于一个单独的客户,该客户共享应用程序元数据和数据。例如,在下面的图中,sales_app是应用程序根目录中的应用程序模型。名为cust1_pdb的应用程序只包含客户1的销售数据,而名为cust2_pdb的应用程序只包含客户2的销售数据。

对于单个客户PDBs,可以进行插拔、解插、克隆和其他pdb级操作。


1.2.2 Sharding架构

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

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

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

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

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

1.3关于多租户架构

多租户体系结构允许Oracle数据库充当多租户容器数据库(CDB)

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

CDB包括零个、一个或多个客户创建的可插拔数据库(PDBs)和应用程序容器。PDB是模式、模式对象和非模式对象的可移植集合,在Oracle Net client中作为单独的数据库出现。

1.3.1关于CDB中的容器

container是多租户体系结构中数据或元数据的逻辑集合。

下图表示CDB中可能的容器。


每个CDB都有以下容器:

•只有一个CDB root容器(也称为root

CDB root容器是所有pdb所属的模式、模式对象和非模式对象的集合(请参阅“CDB中容器的概述”)。Root存储Oracle提供的元数据和公共用户。元数据的一个例子是Oracle提供的PL/SQL包的源代码(请参阅“CDB中的数据字典体系结构”)。公共用户是每个容器中已知的数据库用户(请参阅“CDB中的公共用户”)。根容器名为CDB$ROOT

•一个系统容器

系统容器包括root CDBCDB中的所有pdb。因此,系统容器是CDB本身的逻辑容器。

•零个或多个应用程序容器

应用程序容器正好由一个应用程序root和插入到此rootpdb组成。系统容器包含CDB rootCDB中的所有pdb,而应用程序容器仅包含插入到应用程序根中的pdb。应用程序根属于CDB root,而不是其他容器。

•零个或多个用户创建的PDB

PDB包含特定功能集所需的数据和代码(请参见“PDB”)。例如,PDB可以支持特定的应用程序,例如人力资源或销售应用程序。创建CDB时不存在PDB。您可以根据业务需求添加pdb

PDB完全属于零个或一个应用程序容器。如果PDB属于应用程序容器,则它是应用程序PDB。例如,cust1_pdbcust2_pdb应用程序pdb可能属于saas_sales_ac应用程序容器,在这种情况下,它们不属于其他应用程序容器。应用程序seed是一个可选的应用程序PDB,它充当用户创建的PDB模板,使您能够快速创建新的应用程序PDB

•一个种子PDB

seed PDB是系统提供的模板,CDB可以使用它来创建新的PDB。种子PDB命名为PDB$seed。不能在PDB$SEED中添加或修改对象。

示例1-1没有应用程序容器的CDB

这个例子展示了一个包含五个容器的简单CDB:系统容器(整个CDB)、CDB rootPDB seedPDB$seed)和两个PDB。每个PDB都有自己的专用应用程序。不同的PDB管理员管理每个PDBCDB中存在一个具有单个标识的公共用户。在本例中,公共用户SYS可以管理root和每个PDB。在物理级别,这个CDB由一个或多个数据库实例管理,并且包含一组用于每个PDBCDB本身的数据文件。


1-2 cdb和一个应用程序容器

在这个变体中,CDB包含一个名为saas_sales_ac的应用程序容器。在应用程序容器中,应用程序PDB cust1_pdb为一个客户支持一个应用程序,而应用程序PDB cust2_pdb为另一个客户支持一个应用程序。CDB还包含一个名为hrpdbPDB,它支持HR应用程序,但不属于应用程序容器。


在本例中,多个dba管理CDB环境:

•由CDB管理员管理CDB本身。

•应用程序容器管理员管理saas_sales_ac容器,包括应用程序安装和升级。

•应用程序PDB管理员管理saas_sales_ac容器中的两个PDB: cust1_pdbcust2_pdb

PDB管理员管理hrpdb

1.3.2关于多租户体系结构的用户接口

您可以对cdbpdb和应用程序容器使用相同的管理工具集。

1.4多租户体系结构的好处

在单个CDB中创建单独的PDB为可管理性和性能提供了好处。

1.4.1将数据整合到单个CDB的好处

数据库整合是将来自不同主机上的多个数据库的数据整合到一台主机上的一个CDB的过程。多租户体系结构使您能够在不改变现有模式或应用程序的情况下整合数据和代码。

将数据合并到一个CDB有以下好处:

•降低成本

通过将硬件和数据库基础设施合并为一组单一的后台进程,并有效地共享计算资源和内存资源,您可以降低硬件和维护的成本。例如,在单个主机上的单个CDB中的100pdb可以共享一个数据库实例。

•更容易、更快速地移动数据和代码

按照设计,您可以快速地将PDB插入到CDB中,从CDB中拔出PDB,然后将这个PDB插入到另一个CDB中。您还可以在pdb仍然可用时克隆它们。您可以使用任何字符集插入PDB并在不进行字符集转换的情况下访问它。如果CDB的字符集是AL32UTF8,那么在同一个CDB中可以存在具有不同数据库字符集的pdb

•简化物理数据库的管理和监控

CDB管理员可以通过为所有托管租户和CDB root用户执行单个操作(例如打补丁或执行RMAN备份)来将环境作为一个集合进行管理。简化了备份策略和灾难恢复。

•数据和代码分离

尽管合并到单个物理CDB中,但PDB在应用程序中似乎是独立的数据库。例如,如果用户错误丢失了单个PDB中的关键数据,那么PDB管理员可以使用Oracle闪回或时间点恢复来检索丢失的数据,而不会影响其他PDB

•确保行政职责的分离

公共用户帐户可以连接到具有足够权限的任何容器,而本地用户帐户只能连接到特定的PDB。管理员可以将职责划分如下:

管理员使用公共用户帐户来管理CDB或应用程序容器。

- PDB管理员使用一个本地用户帐户来管理一个单独的PDB。由于特权包含在授予它的容器中,所以一个PDB上的本地用户在同一CDB内的其他PDB上没有特权。

•易于性能调优

在一台主机上收集单个CDB的性能指标要比在多台主机上收集多个数据库的性能指标更容易。例如,调整一个SGA比调整100SGA更容易。

•更少的数据库补丁和升级

对一个CDB应用补丁比升级100个数据库更容易,升级一个CDB比升级100个数据库更容易。

1.4.2多租户体系结构对可管理性的好处

多租户体系结构通过将特定于PDB的数据和元数据存储在PDB本身中来提高可管理性。

通过存储自己的字典元数据,PDB作为一个单元变得更易于管理。即使一个CDB中只有一个PDB,也会有此好处。将pdb分组到单独管理的应用程序容器中可以进一步提高可管理性。

CDB中,数据字典元数据在CDB rootpdb之间进行拆分。数据字典分离的好处包括:

•更容易升级数据和代码

例如,您可以快速地从现有的CDB中拔出PDB,然后将其从更高版本插入新创建的CDB,而不是将CDB从一个数据库版本升级到另一个数据库版本。

•更容易在服务器之间迁移

要执行负载均衡或满足SLAs,可以将应用程序数据库从本地数据中心迁移到Oracle Cloud,或在同一环境中的两台服务器之间迁移。

•防止PDB中的数据损坏

您可以将PDB闪存到指定SCNPDB特定的还原点,而不影响其他PDB

•能够在一个地方安装、管理和升级特定于应用程序的数据和元数据

可以将一组特定于应用程序的pdb定义为单个组件,称为应用程序容器。然后可以在此容器中定义一个或多个应用程序。每个应用程序定义都是在此应用程序容器共享的公共元数据和数据的命名版本集。

例如,SaaS供应商的每个客户都可以拥有自己的应用程序PDB。每个应用程序PDB可能都有相同定义的名为sales_mlt的表,每个PDB中有不同的数据。PDB可以共享一个名为countries_olt的数据链接公共对象,该对象在每个PDB中具有相同的数据。作为应用程序管理员,您可以管理主应用程序定义,以便每个新客户都获得具有相同对象的PDB,并且对现有架构的每个更改(例如,添加新表或更改表定义)都适用于共享应用程序定义的所有PDB

•与Oracle数据库资源管理器集成

在多租户环境中,pdb争夺共享资源。要解决资源争用、使用和监视问题,请使用Oracle Database Resource Manager

1.5 CDBPDB创建概述

您可以使用create DATABASE创建一个CDB,然后使用create PLUGGABLE DATABASE创建pdb和应用程序容器。

1.5.1建立CDB

CREATE DATABASE语句创建一个新的CDB

当您创建一个CDB时,Oracle数据库会自动创建一个根容器(CDB$root)和一个种子PDB (PDB$seed)。下图显示了新创建的CDB:

1.5.2 PDB的创建

CREATE PLUGGABLE DATABASE SQL语句创建一个PDB

创建的PDB自动包括一个完整的数据字典,其中包括元数据和到CDB root中系统提供的对象的内部链接。您必须从单个root定义每个PDB: CDB root或应用程序root

每个PDB都有一个全局惟一标识符(GUID)PDB GUID主要用于为存储PDB文件的目录生成名称,包括Oracle托管文件目录和非Oracle托管文件目录。

1.5.2.1通过克隆创建PDB

创建PDB的一种技术称为克隆。

您可以从PDB$SEEDapplication seed或远程或本地PDB克隆一个PDB

1.5.2.1.1Seed中创建PDB

您可以使用CREATE PLUGGABLE DATABASE语句从一个seed创建一个PDB

一个seed是一个PDB,用作创建另一个PDB的模板。从seed中创建PDB复制PDB的部分或全部内容,然后分配一个新的惟一标识符。

Seed PDB是以下任意一种:

PDB种子(PDB$ seed),这是一个系统提供的用于创建PDBs的模板,每个CDB只有一个PDB$ seed,不能修改或删除它。

•应用程序种子,它是用户为指定的应用程序根创建的PDB

在应用程序容器中,可以使用create PLUGGABLE DATABASE AS seed语句创建应用程序种子,然后可以使用该语句加速新应用程序PDBs的创建。


例子1-3PDB$SEED创建一个PDB

下面的SQL语句使用Oracle托管文件从PDB$SEED创建一个名为hrpdbPDB:

CREATE PLUGGABLE DATABASE hrpdb ADMIN USER dba1 IDENTIFIED BY password;

1.5.2.1.2通过克隆产生PDB

要从另一个PDB克隆PDB,请使用CREATE PLUGGABLE DATABASE语句和from子句。

在这种技术中,源是本地或远程CDB中的PDB。目标是从源复制的PDB。克隆操作将与源关联的文件复制到新位置,然后分配新的GUID以创建PDB

此技术对于快速创建用于测试和开发的pdb非常有用。例如,在将应用程序部署到生产PDB中之前,可以在克隆的PDB上测试新的或修改过的应用程序。如果PDB处于local undo模式,则可以在操作期间以读/写模式打开源PDB,称为热克隆。

如果在应用程序根目录中运行CREATE PLUGGABLE DATABASE语句,则在应用程序容器中创建克隆的PDB。在这种情况下,源PDB的应用程序名和版本必须与应用程序容器的应用程序名和版本兼容。

下图演示了当源和目标位于同一个CDB中时克隆PDB


Oracle数据库19c开始,可以使用DBCA克隆远程PDB

示例1-4克隆PDB

以下SQL语句从名为hrpdb的插入式PDB克隆名为salespdbPDB

CREATE PLUGGABLE DATABASE salespdb FROM hrpdb;

1.5.2.1.2.1PDB快照克隆

通过指定Create PLUGGABLE DATABASE命令的USING snapshot子句,从PDB快照创建克隆。

使用SNAPSHOT子句创建PDB快照

PDB快照是PDB的时间点副本。创建快照时,源PDB可以是只读的或读/写的。源PDB打开时拍摄的PDB快照称为热克隆。您可以从PDB快照创建克隆。这些克隆pdb在开发和测试中非常有用。

可以使用create PLUGGABLE DATABASE(或ALTER PLUGGABLE DATABASE)的SNAPSHOT子句手动创建快照,也可以使用EVERY interval子句自动创建快照。以下语句创建名为pdb1_wed_4_1201PDB快照:

ALTER PLUGGABLE DATABASE SNAPSHOT pdb1_wed_4_1201;

如果存储系统支持稀疏克隆,那么前面的命令将创建一个稀疏副本。否则,该命令将创建一个完整的副本。

每个PDB快照都与快照名称和快照创建时的SCN和时间戳相关联。

使用USING SNAPSHOT子句创建PDB克隆

PDB快照中的克隆是完整的独立PDB。与基于存储管理快照的快照副本PDB不同,您不需要具体化从PDB快照创建的克隆。

要从PDB快照创建克隆,请指定create PLUGGABLE DATABASE语句的USING snapshot子句。例如,以下语句从名为pdb1_wed_4_1201PDB级快照克隆名为pdb1_PDB副本:

CREATE PLUGGABLE DATABASE pdb1_copy FROM pdb1 USING SNAPSHOT pdb1_wed_4_1201;

1.5.2.1.2.2快照复制PDB

快照副本PDB基于底层存储系统的副本。快照拷贝PDB减少了测试所需的存储量,并显著缩短了创建时间。

如果文件系统支持存储快照,则CREATE PLUGGABLE DATABASE ... FROM ... SNAPSHOT COPY复制从源PDB复制PDB,该PDB可以在操作期间读/写。快照拷贝PDB文件使用写时拷贝技术。只有修改后的块需要在磁盘上额外存储。如果文件系统不支持存储快照或使用Oracle Exadata稀疏文件,则CLONEDB初始化参数必须为true,并且只要快照副本PDB存在,源PDB就必须为只读。

由于快照副本PDB依赖于存储管理的快照,因此无法从CDB根或应用程序根拔出快照副本PDB。不能删除快照副本PDB所基于的存储快照。

您可以将使用稀疏文件的快照副本PDB转换为完整的PDB。此过程称为具体化快照副本PDB。因为具体化的PDB不依赖于源PDB,所以可以删除它。通过运行ALTER PLUGGABLE DATABASE materiale命令实现PDB

注:

使用USING SNAPSHOT子句创建的PDB和使用SNAPSHOT COPY子句创建的PDB具有不同的属性。不能在单个CREATE PLUGGABLE数据库命令中同时指定这两个子句。CREATE PLUGGABLE DATABASEFROMUSING SNAPSHOT子句创建不需要具体化的完整、独立的PDBCREATE PLUGGABLE DATABASEFROMSNAPSHOT COPY子句创建一个sparse PDB,如果要删除它所基于的存储级快照,则必须具体化该PDB

1.5.2.1.2.3 Refreshable pdb分子克隆

一个可刷新的克隆PDB是一个只读克隆,它可以周期性地与它的源PDB同步。

根据REFRESH MODE子句中指定的值,同步将自动或手动进行。例如,如果hrpdb_re_clonehrpdb的一个克隆,那么每个月您都可以使用来自hrpdb的更改手动刷新hrpdb_re_clone

或者,您可以配置hrpdb,使更改每24小时自动传播到hrpdb_re_clone

您可以切换源PDB及其可刷新克隆的角色。当源PDB发生故障时,这种切换对于CDBs之间的负载平衡非常有用。

1.5.2.2通过插入unpluggedPDB来创建PDB

unpluggedPDB是一组自包含的数据文件,以及一个指定PDB文件位置的XML元数据文件。要插入unpluggedPDB,请将CREATE PLUGGABLE数据库语句与USING子句一起使用。

插入unpluggedPDB时,您有以下选项:

•指定描述PDBXML元数据文件和与PDB相关的文件。

•指定一个PDB存档文件,它是一个压缩文件,包含XML文件和PDB数据文件。可以通过指定存档文件来创建PDB,从而避免分别复制XML文件和数据文件。

下图说明了如何使用XML文件插入拔出的PDB


示例1-5插入PDB

以下SQL语句基于存储在命名XML文件中的元数据插入名为salespdbPDB,并指定NOCOPY,因为unpluggedPDB的文件不需要移动到新位置:

CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml' NOCOPY;

1.5.2.3通过重新定位(Relocating)创建PDB

要将PDB从一个CDB迁移到另一个CDB,可以使用CREATE PLUGGABLE DATABASE ... RELOCATE语句或DBCA

该技术具有以下优点:

•以最小的停机时间进行迁移

•该技术在迁移过程中保持PDB处于读/写模式,然后在新的位置上使PDB在线。

您必须在目标CDB上创建一个数据库链接,该CDB将包含重新定位的PDB。另外,源PDB必须使用local undo数据。

下图描述了一个PDB relocation


Oracle数据库19c开始,您可以在静默模式下使用DBCA重新定位远程PDB

示例1-6 PDB重新定位

在目标CDB发出的以下语句将hrpdb从源CDB重新定位到目标CDB

CREATE PLUGGABLE DATABASE hrpdb FROM hrpdb@lnk_to_source RELOCATE;

1.5.2.4创建PDB作为代理PDB

代理PDB提供对远程CDB中不同PDB(称为引用PDB)的访问。

代理PDB使您能够聚合来自多个源的数据。提交以在代理PDB中执行的SQL语句在引用的PDB中执行。

典型的用例是引用应用程序根副本的代理PDB。如果多个cdb具有相同的应用程序定义(例如,相同的表和PL/SQL包),则可以在主应用程序根的应用程序容器中创建代理PDB。代理PDB的引用PDB是另一个CDB中的应用程序根。通过在主根目录中运行安装脚本,其他CDB中的应用程序根目录将成为主应用程序根目录的副本。

若要创建代理PDB,请将create PLUGGABLE DATABASE语句与FROM子句一起使用,FROM子句必须指定指向远程CDB中引用的PDB的数据库链接,以及AS proxy子句。

注:

如果将代理PDB直接插入CDB$ROOT,则必须在CDB$ROOT中创建了代理。应用程序PDB的代理必须同时插入到应用程序根目录。

下图显示了引用远程CDB中的PDB的代理PDB的创建。

示例1-7创建代理PDB

本例创建一个名为pdb1的代理PDB。引用的PDB是使用数据库链接指定的。

CREATE PLUGGABLE DATABASE pdb1 AS PROXY FROM pdb1@pdb1_link;

1.6多租户环境文档路线图

本主题列出了理解和使用CDB的最重要主题,并包括对相应文档的交叉引用。

1-2多租户架构文档的路线图

更多数据库相关学习资料,可以查看我的ITPUB博客,网名chenoracle

http://blog.itpub.net/29785807/

文章转载自IT小Chen,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论