传输表空间 - Amazon Relational Database Service

传输表空间

使用 Amazon RDS 包 rdsadmin.rdsadmin_transport_util 将一组表空间从本地 Oracle 数据库复制到 RDS for Oracle 数据库实例。在物理层,可传输的表空间功能以递增方式将源数据文件和元数据文件复制到您的目标实例。您可以使用 Amazon EFS 或 Amazon S3 传输文件。有关更多信息,请参阅使用 Oracle 可传输表空间进行迁移

将传输的表空间导入到您的数据库实例

使用过程 rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces 还原您之前从源数据库实例导出的表空间。在传输阶段中,您将备份只读表空间,导出 Data Pump 元数据,将这些文件传输到目标数据库实例,然后导入表空间。有关更多信息,请参阅阶段 4:传输表空间

语法

FUNCTION import_xtts_tablespaces( p_tablespace_list IN CLOB, p_directory_name IN VARCHAR2, p_platform_id IN NUMBER DEFAULT 13, p_parallel IN INTEGER DEFAULT 0) RETURN VARCHAR2;

参数

参数名称 数据类型 默认值 必需 描述

p_tablespace_list

CLOB

支持

要导入的表空间列表。

p_directory_name

VARCHAR2

支持

包含表空间备份的目录。

p_platform_id

NUMBER

13

不支持

提供与在备份阶段中指定的平台 ID 相匹配的平台 ID。要查找平台的列表,请查询 V$TRANSPORTABLE_PLATFORM。原定设置平台是 Linux x86 64 位,以 little endian 格式表示。

p_parallel

INTEGER

0

不支持

并行度。原定设置情况下,并行度处于禁用状态。

示例

以下示例从 DATA_PUMP_DIR 目录中导入表空间 TBS1TBS2TBS3。源平台是基于 AIX 的系统(64 位),其平台 ID 为 6。您可以通过查询 V$TRANSPORTABLE_PLATFORM 查找平台 ID。

VAR task_id CLOB BEGIN :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces( 'TBS1,TBS2,TBS3', 'DATA_PUMP_DIR', p_platform_id => 6); END; / PRINT task_id

将可传输的表空间元数据导入到数据库实例中

使用过程 rdsadmin.rdsadmin_transport_util.import_xtts_metadata 将可传输的表空间元数据导入您的 RDS for Oracle 数据库实例。在操作期间,元数据导入的状态显示在表 rdsadmin.rds_xtts_operation_info 中。有关更多信息,请参阅步骤 5:在目标数据库实例上导入表空间元数据

语法

PROCEDURE import_xtts_metadata( p_datapump_metadata_file IN SYS.DBA_DATA_FILES.FILE_NAME%TYPE, p_directory_name IN VARCHAR2, p_exclude_stats IN BOOLEAN DEFAULT FALSE, p_remap_tablespace_list IN CLOB DEFAULT NULL, p_remap_user_list IN CLOB DEFAULT NULL);

参数

参数名称 数据类型 默认值 必需 描述

p_datapump_metadata_file

SYS.DBA_DATA_FILES.FILE_NAME%TYPE

支持

包含可传输表空间的元数据的 Oracle Data Pump 文件的名称。

p_directory_name

VARCHAR2

支持

包含 Data Pump 文件的目录。

p_exclude_stats

BOOLEAN

FALSE

不支持

指示是否排除统计数据的标志。

p_remap_tablespace_list

CLOB

NULL

不支持

要在元数据导入期间重新映射的表空间列表。采用格式 from_tbs:to_tbs。例如,指定 users:user_data

p_remap_user_list

CLOB

NULL

不支持

要在元数据导入期间重新映射的用户架构列表。采用格式 from_schema_name:to_schema_name。例如,指定 hr:human_resources

示例

该示例从文件 xttdump.dmp 导入表空间元数据,该文件位于目录 DATA_PUMP_DIR 中。

BEGIN rdsadmin.rdsadmin_transport_util.import_xtts_metadata('xttdump.dmp','DATA_PUMP_DIR'); END; /

列出表空间导入后的孤立文件

使用 rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files 过程列出表空间导入后孤立的数据文件。确定数据文件后,可以通过调用 rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import 将其删除。

语法

FUNCTION list_xtts_orphan_files RETURN xtts_orphan_files_list_t PIPELINED;

示例

以下示例运行过程 rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files。输出显示了两个孤立的数据文件。

SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files); FILENAME FILESIZE -------------- --------- datafile_7.dbf 104865792 datafile_8.dbf 104865792

表空间导入后的孤立数据文件

使用 rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files 过程删除表空间导入后孤立的数据文件。运行此命令会在 BDUMP 目录中生成一个使用名称格式 rds-xtts-delete_xtts_orphaned_files-YYYY-MM-DD.HH24-MI-SS.FF.log 的日志文件。使用过程 rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import 找出孤立的文件。您可以通过调用过程 rdsadmin.rds_file_util.read_text_file 来读取日志文件。有关更多信息,请参阅第 6 阶段:清理剩余文件

语法

PROCEDURE cleanup_incomplete_xtts_import( p_directory_name IN VARCHAR2);

参数

参数名称 数据类型 默认值 必需 描述

p_directory_name

VARCHAR2

支持

包含孤立数据文件的目录。

示例

以下示例删除了 DATA_PUMP_DIR 中的孤立数据文件。

BEGIN rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import('DATA_PUMP_DIR'); END; /

以下示例读取了由上一个命令生成的日志文件。

SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file( p_directory => 'BDUMP', p_filename => 'rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log')); TEXT -------------------------------------------------------------------------------- orphan transported datafile datafile_7.dbf deleted. orphan transported datafile datafile_8.dbf deleted.