使用 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 数。
exclude 和 data_options 参数可确保不会导出自治 AI 数据库中不可用的对象类型,并将表分区组合在一起,以便更快地将它们导入自治 AI 数据库。
注:Oracle 建议您在执行 expdp 命令之前收集最新统计信息。dbms_stats 软件包提供了多个用于收集最新统计信息的过程。统计信息将自动添加到导出转储文件中,它们有助于确定对象大小并优化导入期间的并行性。有关详细信息,请参阅 Oracle Database 19c PL/SQL Packages and Types Reference 和 Oracle 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
有关数据泵参数的说明:
-
如果在使用
expdp进行导出期间使用encryption_pwd_prompt=yes参数,则还应在导入时使用encryption_pwd_prompt=yes,并在impdp提示符下输入相同的密码来解密转储文件(请记住在导出期间提供的密码)。加密密码的最大长度为 128 字节。 -
除了传统
%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参数。
可以根据您的要求使用其他数据泵导出参数,例如 compression。有关详细信息,请参阅 Oracle Database 19c Utilities 或 Oracle Database 26ai Utilities 中的 Oracle Data Pump Export 。
将导出文件上载到云对象存储
在导入从源 Oracle Database 导出的数据之前,需要将导出文件上载到云对象存储。
您可以将导出文件上载到 Oracle Cloud Infrastructure Object Storage 中的现有存储桶,或者上载到 Oracle Cloud Infrastructure Object Storage Classic 中的现有存储容器。或者,使用以下过程创建新的存储桶并将导出文件上载到该存储桶。
-
请通过 cloud.oracle.com 登录到您的 Oracle Cloud 账户。
-
从 Oracle Cloud Infrastructure 左侧导航列表中,选择“Object Storage(对象存储)”,然后从子列表中选择“Object Storage(对象存储)”。
-
选取要在其中创建存储桶的区间。
-
单击创建存储桶。
-
在“创建存储桶”对话框中,为存储桶指定名称,然后单击创建存储桶。
-
创建存储桶后,单击存储桶列表中的名称以显示其“存储桶详细信息”页。
-
在“对象”框中,单击上载对象。
-
在 "Upload Objects"(上载对象)对话框中,单击 "Choose Files From Your Computer"(从计算机选择文件)框中的 select files (选择文件)链接。
-
在文件浏览器中,导航至并选择导出文件。然后,单击打开。
-
在“上载对象”对话框中,单击上载对象以开始上载选定的文件。
-
上载完成后,关闭“上载对象”对话框。
使用 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 。
-
使用
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 。
-
如果您使用的是 Oracle Data Pump 版本 12.2.0.1 或更早版本,则必须将身份证明设置为自治 AI 数据库的默认身份证明,并将其设置为 ADMIN 用户。例如:
alter database property set default_credential = 'ADMIN.DEF_CRED_NAME' -
运行数据泵导入,并将
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 Utilities 或 Oracle 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 。