传输表空间
使用 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;
参数
参数名称 | 数据类型 | 默认值 | 必需 | 描述 |
---|---|---|---|---|
|
|
— |
支持 |
要导入的表空间列表。 |
|
|
— |
支持 |
包含表空间备份的目录。 |
|
|
|
不支持 |
提供与在备份阶段中指定的平台 ID 相匹配的平台 ID。要查找平台的列表,请查询 |
|
|
|
不支持 |
并行度。原定设置情况下,并行度处于禁用状态。 |
示例
以下示例从 DATA_PUMP_DIR
目录中导入表空间 TBS1
、TBS2
和 TBS3
。源平台是基于 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);
参数
参数名称 | 数据类型 | 默认值 | 必需 | 描述 |
---|---|---|---|---|
|
|
— |
支持 |
包含可传输表空间的元数据的 Oracle Data Pump 文件的名称。 |
|
|
— |
支持 |
包含 Data Pump 文件的目录。 |
|
|
|
不支持 |
指示是否排除统计数据的标志。 |
|
|
NULL |
不支持 |
要在元数据导入期间重新映射的表空间列表。采用格式 |
|
|
NULL |
不支持 |
要在元数据导入期间重新映射的用户架构列表。采用格式 |
示例
该示例从文件 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
.logrdsadmin.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);
参数
参数名称 | 数据类型 | 默认值 | 必需 | 描述 |
---|---|---|---|---|
|
|
— |
支持 |
包含孤立数据文件的目录。 |
示例
以下示例删除了 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.