使用 Oracle Data Pump 加载数据

Oracle Data Pump 可在 Oracle 数据库与基于专用 Exadata 基础结构的 Autonomous AI Database 之间快速批量移动数据和元数据。

通过数据泵导入,您可以从位于 Oracle Cloud Infrastructure Object Storage 和 Oracle Cloud Infrastructure Object Storage Classic 上的 Data Pump 文件导入数据。您可以将数据保存到云对象存储,并使用 Oracle Data Pump 将数据加载到自治 AI 数据库。

注:对于阅读以下主题的“试用”替代方案,您可以浏览 Oracle Autonomous AI Database Dedicated for Fleet Administrators Workshop 中的 Lab 9:Migrate with Data Pump

从现有 Oracle Database 导出数据

首先,使用 Oracle Data Pump Export 导出现有的 Oracle Database 方案。然后,使用 Oracle Data Pump Import 将它们迁移到 Autonomous AI Database。

Oracle 建议使用以下数据泵导出参数,以便更快、更轻松地迁移到自治 AI 数据库:

exclude=cluster, db_link
parallel=n
schemas=schema name
dumpfile=export%l.dmp

Oracle Data Pump Export 提供了多种导出模式,Oracle 建议使用模式模式来迁移到自治 AI 数据库。可以使用 schemas 参数列出要导出的方案。

为了加快迁移速度,请将方案导出到多个数据泵文件并使用并行操作。可以指定要与 dumpfile 参数一起使用的转储文件名格式。将 parallel 参数至少设置为自治 AI 数据库中的 CPU 数。

excludedata_options 参数可确保不会导出自治 AI 数据库中不可用的对象类型,并将表分区组合在一起,以便更快地将它们导入自治 AI 数据库。

注:Oracle 建议您在执行 expdp 命令之前收集最新统计信息。dbms_stats 软件包提供了多个用于收集最新统计信息的过程。统计信息将自动添加到导出转储文件中,它们有助于确定对象大小并优化导入期间的并行性。有关详细信息,请参阅 Oracle Database 19c PL/SQL Packages and Types ReferenceOracle Database 26ai PL/SQL Packages and Types References 中的 DBMS_STATS Operational Notes

以下示例将 SH 方案从源 Oracle Database 导出以迁移到具有 16 个 CPU 的自治 AI 数据库:

expdp sh/sh@orcl \
exclude=cluster, db_link \
parallel=16 \
schemas=sh \
dumpfile=export%l.dmp \
encryption_pwd_prompt=yes

有关数据泵参数的说明:

可以根据您的要求使用其他数据泵导出参数,例如 compression。有关详细信息,请参阅 Oracle Database 19c UtilitiesOracle Database 26ai Utilities 中的 Oracle Data Pump Export

将导出文件上载到云对象存储

在导入从源 Oracle Database 导出的数据之前,需要将导出文件上载到云对象存储。

您可以将导出文件上载到 Oracle Cloud Infrastructure Object Storage 中的现有存储桶,或者上载到 Oracle Cloud Infrastructure Object Storage Classic 中的现有存储容器。或者,使用以下过程创建新的存储桶并将导出文件上载到该存储桶。

  1. 请通过 cloud.oracle.com 登录到您的 Oracle Cloud 账户。

  2. 从 Oracle Cloud Infrastructure 左侧导航列表中,选择“Object Storage(对象存储)”,然后从子列表中选择“Object Storage(对象存储)”。

  3. 选取要在其中创建存储桶的区间。

  4. 单击创建存储桶

  5. 在“创建存储桶”对话框中,为存储桶指定名称,然后单击创建存储桶

  6. 创建存储桶后,单击存储桶列表中的名称以显示其“存储桶详细信息”页。

  7. 在“对象”框中,单击上载对象

  8. 在 "Upload Objects"(上载对象)对话框中,单击 "Choose Files From Your Computer"(从计算机选择文件)框中的 select files (选择文件)链接。

  9. 在文件浏览器中,导航至并选择导出文件。然后,单击打开

  10. 在“上载对象”对话框中,单击上载对象以开始上载选定的文件。

  11. 上载完成后,关闭“上载对象”对话框。

使用 Oracle Data Pump 导入信息

Oracle 建议使用最新的 Oracle Data Pump 版本将数据从数据泵文件导入自治 AI 数据库,因为它包含增强功能和修复,以获得更好的体验。

Oracle Instant Client 下载下载适用于您平台的 Oracle Instant Client 基本程序包和工具程序包(包括 Oracle Data Pump)的最新版本。有关下载 Oracle Instant Client 之后所需的安装步骤,请参见平台安装下载页面上的安装说明。

在 Oracle Data Pump 版本 18.3 及更高版本中,credential 参数将向源文件使用的云对象存储服务验证数据泵。dumpfile 参数是数据泵文件的 URL 的逗号分隔列表。

数据泵导入版本 12.2.0.1 和更早版本没有 credential 参数。如果您使用的是旧版本的数据泵导入,则需要为自治 AI 数据库定义默认身份证明属性,并在 dumpfile 参数中使用 default_credential 关键字。

在 Oracle Data Pump 中,如果源文件位于 Oracle Cloud Infrastructure Object Storage 中,则可以使用 Oracle Cloud Infrastructure 本机 URI 或 Swift URI。有关这些 URI 格式的详细信息,请参见 Cloud Object Storage URI Formats

  1. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 过程存储云对象存储身份证明。

    数据泵导入支持基于 Oracle Cloud Infrastructure 验证令牌的身份证明和基于 Oracle Cloud Infrastructure 签名密钥的身份证明。

    示例 1 :要创建 Oracle Cloud Infrastructure 验证令牌身份证明,请执行以下操作:

     BEGIN
     DBMS_CLOUD.CREATE_CREDENTIAL(
       credential_name => 'DEF_CRED_NAME',
       username => 'adb_user@oracle.com',
       password => '*password*'
       );
     END;
     /
    

    示例 2 :要创建基于 Oracle Cloud Infrastructure 签名密钥的身份证明,请执行以下操作:

     BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL (
         credential_name => 'DEF_CRED_NAME',
         user_ocid       => 'ocid1.user.oc1..unique_ID',
         tenancy_ocid    => 'ocid1.tenancy.oc1..unique_ID',
         private_key     => 'MIIEogIBAAKCAQEAtUnxbmre.....wtnNpESQQQ0QLGPD8NM//JEBg=',
         fingerprint     => 'fingerprint value'
       );
     END;
     /
    

    有关 Oracle Cloud Infrastructure Cloud 对象存储的身份证明类型的更多信息,请参见 CREATE_CREDENTIAL Procedure

  2. 如果您使用的是 Oracle Data Pump 版本 12.2.0.1 或更早版本,则必须将身份证明设置为自治 AI 数据库的默认身份证明,并将其设置为 ADMIN 用户。例如:

     alter database property set default_credential = 'ADMIN.DEF_CRED_NAME'
    
  3. 运行数据泵导入,并将 dumpfile 参数设置为云对象存储上的文件 URL 列表。

    • Oracle Data Pump 版本 18.3 或更高版本:credential 参数设置为在步骤 1 中创建的身份证明的名称。例如:

      impdp admin/password@ATPC1_high \
        credential=def_cred_name \
        dumpfile= https://namespace-string.objectstorage.us-ashburn-1.oci.customer-oci.com/n/namespace-string/b/bucketname/o/export%l.dmp \ 
        parallel=16 \
        transform=segment_attributes:n \
        exclude=cluster, db_link
      

      在此示例中,dumpfile 是 Oracle Cloud Infrastructure Swift URI,用于指定名称与 us-phoenix-1 区域中 mybucket 存储桶中的 export<number>.dmp 匹配的所有文件。(idthydc0kinr 是存储桶所在的对象存储名称空间。)

    • Oracle Data Pump 版本 12.2.0.1 或更早版本:使用 default_credential 关键字和冒号启动 dumpfile 参数的值。例如:

      impdp admin/password@ATPC1_high \
        dumpfile=default_credential:https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/export%l.dmp \
        parallel=16 \      
        transform=segment_attributes:n \      
        exclude=cluster, db_link
      

    数据泵导入附注

    • 如果在使用 expdp 导出期间使用 encryption_pwd_prompt=yes 参数,则使用 encryption_pwd_prompt=yes,并在导出期间指定的 impdp 提示符下输入相同的密码。

    • 除了传统 %U%u 通配符外,dumpfile 参数还支持 %L%l 通配符。例如,dumpfile=export%L.dmp

      使用 %L%l 通配符从 Oracle Database 发行版 12.2 及更高版本导出。此通配符将转储文件文件名扩展为 3 位到 10 位的可变宽度递增整数,从 100 开始,到 2147483646 结束。

      在 12.2 版之前,使用旧版 %U%u 通配符从 Oracle Database 导出。如果使用此选项并且需要 99 个以上的转储文件,则必须指定多个转储文件名称,每个转储文件名称都带有 %U%u 参数。

    • 为了获得最佳导入性能,请使用 high 数据库服务进行导入连接,并将 parallel 参数设置为数据库拥有的 CPU 数。

    • 有关不同云对象存储服务的转储文件 URL 格式,请参见 Cloud Object Storage URI Formats

    • 要执行完全导入或导入其他用户拥有的对象,需要具有 DATAPUMP_CLOUD_IMP 角色。

    有关自治 AI 数据库中不允许的对象的信息,请参见 Limitations on the Use of SQL Commands

    有关导入参数的详细信息,请参阅 Oracle Database 19c UtilitiesOracle Database 26ai Utilities 中的 Oracle Data Pump Import

访问用于数据泵导入的日志文件

数据泵导入操作的日志文件存储在您使用数据泵 impdp directory 参数指定的目录中。

要访问日志文件,需要使用过程 DBMS_CLOUD.PUT_OBJECT 将日志文件移至云对象存储。例如,以下 PL/SQL 块将文件 import.log 移至云对象存储:

BEGIN
  DBMS_CLOUD.PUT_OBJECT(
    credential_name => 'DEF_CRED_NAME',
    object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/*namespace-string*/b/*bucketname*/o/import.log',
    directory_name  => 'DATA_PUMP_DIR',
    file_name => 'import.log');
END;
/

在此示例中,*namespace-string* 是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname 是存储桶名称。有关详细信息,请参阅了解对象存储名称空间

有关更多信息,请参见 DBMS_CLOUD for Objects and Files

相关内容