注:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于云环境的那些值。
使用数据库链接在 Oracle Base Database Service 中的数据库系统之间远程克隆可插入数据库
简介
您可以在数据库系统的同一数据库(容器数据库)中创建可插入数据库 (Pluggable Databases,PDB) 的克隆。此操作称为本地克隆。这可以使用控制台轻松实现。还可以将 PDB 克隆到其他数据库系统的不同数据库(容器数据库)。此操作称为远程克隆。
远程克隆需要两个数据库系统,因为每个数据库系统仅支持一个数据库(容器数据库)。控制台中尚未提供 PDB 远程克隆。您可以使用 RemoteclonePluggabledatabase API、数据库链接以及基于 API 的工具(包括 OCI CLI、SDK 和 Terraform)创建远程克隆。
本教程将指导您使用 Oracle Base Database Service 上的数据库链接远程克隆 PDB 的步骤。
目标
使用数据库链接将 PDB 远程联机克隆到 Oracle Base Database Service 中的其他数据库系统。
先决条件
- 了解 Oracle Base Database Service 。
- 两个 Oracle 基本数据库服务位于同一 VCN 或不同的 VCN 中。
- 这些数据库系统位于不同 VCN VCN 对等连接上的 VCN 对等连接。
- 下面是本教程中使用的环境名称,以便于理解。
- 源数据库系统名称:SOURCE
- 目标数据库系统名称:TARGET
- 源 PDB 名称:SOURCE_PDB1
- 克隆 PDB 名称:CLONE_PDB1
任务 1:准备源环境
-
使用以下命令在源 CDB 上创建用于克隆的用户。
CREATE USER c##clone IDENTIFIED BY <PASSWORD> CONTAINER=ALL; GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##clone CONTAINER=ALL; -
检查源 PDB 上的对象内容:在此示例中,我们考虑使用
TEST.PERSONS表进行引用。-
模式名称:TEST
-
表名:人

-
任务 2:准备目标环境
-
确保在目标 CDB 上将
local_undo_enabled设置为 true。 -
确保目标 CDB 处于
archivelog模式。注:目标 CDB 处于 ARCHIVELOG 模式和 LOCAL UNDO 模式时,可以在读/写模式下打开源 PDB,并在克隆过程中运行。此技术称为热克隆。

-
更新
tnsnames.ora文件中位于目标数据库系统节点上的$ORACLE_HOME/network/admin/目录中的源 CDB 服务名称的地址。<addressname> = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = <hostname>)(Port = <port>)) ) (CONNECT_DATA = (SERVICE_NAME = <service_name>) ) )下面是一个完整的示例:
SOURCE_CDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = source.**************.*****.oraclevcn.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = SOURCE_iad1zr.**************.*****.oraclevcn.com) ) ) -
在指向源 CDB 的目标 CDB 上创建数据库链接。
CREATE PUBLIC DATABASE LINK clone_pdb_dblink CONNECT TO c##clone identified by <PASSWORD> using '<ADDRESSNAME>'; CREATE PUBLIC DATABASE LINK clone_pdb_dblink CONNECT TO c##clone identified by ************** using 'SOURCE_CDB'; -
检查通过数据库链接的连接在目标 CDB 上是否正常工作。由于我们未使用与其连接到的数据库同名的数据库链接,因此还需要将
global_names parameter设置为 false。否则,您将遇到 ORA-02085 错误。alter session set global_names=false; select * from dual@clone_pdb_dblink;
任务 3:克隆远程 PDB
-
是时候通过登录到目标 CDB 将源 PDB 克隆到目标 CDB 中了。提供目标环境的
TDE_WALLET_PASSWORD。alter session set global_names=false; create pluggable database <CLONE_PDB_NAME> from <SOURCE_PDB_NAME>@<DB_LINK_NAME> keystore identified by <TDE_WALLET_PASSWORD>; create pluggable database CLONE_PDB1 from SOURCE_PDB1@clone_pdb_dblink keystore identified by <TDE_WALLET_PASSWORD>;
-
在读/写模式下打开克隆的 PDB。创建 PDB 后,该 PDB 处于已装载模式。必须在读/写模式下打开新克隆的 PDB,Oracle Database 才能完成新 PDB 与目标 CDB 的集成。
alter pluggable database CLONE_PDB1 open read write; -
验证克隆 PDB 上是否克隆了所有对象数据:

我们可以看到数据已成功从源 PDB 复制到目标数据库系统上的克隆 PDB。
相关链接
确认
- 作者 - 高级云工程师 Leona Dsouza
更多学习资源
探索 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 频道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Clone a Pluggable Database online remotely between DB Systems in Oracle Base Database Service using database link
F87175-01
September 2023
Copyright © 2023, Oracle and/or its affiliates.