注:

使用数据库链接在 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 中的其他数据库系统。

先决条件

  1. 了解 Oracle Base Database Service
  2. 两个 Oracle 基本数据库服务位于同一 VCN 或不同的 VCN 中。
  3. 这些数据库系统位于不同 VCN VCN 对等连接上的 VCN 对等连接。
  4. 下面是本教程中使用的环境名称,以便于理解。
    • 源数据库系统名称:SOURCE
    • 目标数据库系统名称:TARGET
    • 源 PDB 名称:SOURCE_PDB1
    • 克隆 PDB 名称:CLONE_PDB1

任务 1:准备源环境

  1. 使用以下命令在源 CDB 上创建用于克隆的用户。

    CREATE USER c##clone IDENTIFIED BY <PASSWORD> CONTAINER=ALL;
    GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##clone CONTAINER=ALL;
    
  2. 检查源 PDB 上的对象内容:在此示例中,我们考虑使用 TEST.PERSONS 表进行引用。

    • 模式名称:TEST

    • 表名:人

      源 PDB 对象详细信息

任务 2:准备目标环境

  1. 确保在目标 CDB 上将 local_undo_enabled 设置为 true。

  2. 确保目标 CDB 处于 archivelog 模式。

    :目标 CDB 处于 ARCHIVELOG 模式和 LOCAL UNDO 模式时,可以在读/写模式下打开源 PDB,并在克隆过程中运行。此技术称为热克隆。

    检查目标 CDB 本地还原和归档日志详细信息

  3. 更新 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)
        )
      )
    
  4. 在指向源 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';
    
  5. 检查通过数据库链接的连接在目标 CDB 上是否正常工作。由于我们未使用与其连接到的数据库同名的数据库链接,因此还需要将 global_names parameter 设置为 false。否则,您将遇到 ORA-02085 错误。

    alter session set global_names=false;
    
    select * from dual@clone_pdb_dblink;
    

    通过 dblink 查询

任务 3:克隆远程 PDB

  1. 是时候通过登录到目标 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>;
    

    在目标 CDB 上创建 PDB 克隆

  2. 在读/写模式下打开克隆的 PDB。创建 PDB 后,该 PDB 处于已装载模式。必须在读/写模式下打开新克隆的 PDB,Oracle Database 才能完成新 PDB 与目标 CDB 的集成。

    alter pluggable database CLONE_PDB1 open read write;
    
  3. 验证克隆 PDB 上是否克隆了所有对象数据:

    验证克隆的 PDB

我们可以看到数据已成功从源 PDB 复制到目标数据库系统上的克隆 PDB。

确认

更多学习资源

探索 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 频道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心