使用 Oracle 数据泵将本地 Oracle 数据库迁移到亚马逊 RDS For Oracle - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Oracle 数据泵将本地 Oracle 数据库迁移到亚马逊 RDS For Oracle

由 Mohan Annam (AWS) 和 Brian motzer () 创作 AWS

环境:PoC 或试点

源:数据库:关系

目标:Amazon f RDS or Oracle

R 类型:更换平台

工作负载:Oracle

技术:迁移;数据库

AWS服务:亚马逊 RDS

Summary

此模式描述了如何使用 Oracle 数据泵将 Oracle 数据库从本地数据中心迁移到适用于 Oracle 数据库实例的亚马逊关系数据库服务 (AmazonRDS)。 

该模式包括从源数据库创建数据转储文件,将该文件存储在亚马逊简单存储服务 (Amazon S3) Simple Storage S3 存储桶中,然后将数据还原到RDS亚马逊版 Oracle 数据库实例。在使用 Dat AWS abase Migration Service (AWSDMS) 进行迁移时遇到限制时,此模式非常有用。

先决条件和限制

先决条件

  • 一个活跃的AWS账户

  • 在 Identity and Access Managem AWS ent (IAM) 中创建角色以及 Amazon S3 分段上传所需的权限

  • 从源数据库导出数据所需权限

  • AWS已安装配置命令行接口 (AWSCLI)

产品版本

  • Oracle 数据泵仅适用于 Oracle 数据库 10g 发行版 1 (10.1) 及更高版本。

架构

源技术堆栈

  • 本地 Oracle 数据库

目标技术堆栈

  • RDS适用于甲骨文的亚马逊

  • SQL客户端(甲骨文SQL开发人员)

  • 一个 S3 存储桶

源架构和目标架构

使用 Oracle 数据泵将 Amazon S3 从本地 Oracle 数据库分段上传到亚马逊RDS。

工具

AWS服务

其他工具

  • Oracle 数据泵可帮助您将数据和元数据从一个数据库高速移动至另一个数据库。在这种模式中,Oracle Data Pump 用于将数据转储 (.dmp) 文件导出到 Oracle 服务器,然后将其导入到 Ama RDS zon for Oracle 中。有关更多信息,请参阅亚马逊RDS文档RDS中的将数据导入亚马逊上的 Oracle

  • Oracle SQL 开发人员是一个集成的开发环境,可简化传统部署和基于云的部署中 Oracle 数据库的开发和管理。它与本地 Oracle 数据库和 Amazon RDS for Oracle 交互,运行导出和导入数据所需的SQL命令。

操作说明

任务描述所需技能

创建存储桶。

要创建 S3 存储桶,请按照AWS文档中的说明进行操作。

AWS系统管理员
任务描述所需技能

配置IAM权限。

要配置权限,请按照AWS文档中的说明进行操作。

AWS系统管理员
任务描述所需技能

创建目标 Amazon fo RDS r Oracle 数据库实例。

要创建 Amazon RDS for Oracle 实例,请按照AWS文档中的说明进行操作。

AWS系统管理员

将该角色与数据库实例关联。

要将角色与实例关联,请按照AWS文档中的说明进行操作。

DBA
任务描述所需技能

创建 用户。

从 Oracle Dev RDS eloper 或 SQL *Plus 连接到目标 Amazon for O SQL racle 数据库,然后运行以下SQL命令创建要导入架构的用户。

create user SAMPLE_SCHEMA identified by <PASSWORD>; grant create session, resource to <USER NAME>; alter user <USER NAME> quota 100M on users;
DBA
任务描述所需技能

创建数据转储文件。

要在 DATA_PUMP_DIR 目录中创建名为 sample.dmp 的转储文件(用于导出 SAMPLE_SCHEMA 用户),请使用以下脚本。

DECLARE hdnl NUMBER; BEGIN hdnl := dbms_datapump.open(operation => 'EXPORT', job_mode => 'SCHEMA', job_name => NULL); dbms_datapump.add_file( handle => hdnl, filename => 'sample.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); dbms_datapump.add_file(handle => hdnl, filename => 'export.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); dbms_datapump.metadata_filter(hdnl, 'SCHEMA_EXPR', 'IN (''SAMPLE_SCHEMA'')'); dbms_datapump.start_job(hdnl); END; /

通过查看本地 DATA_PUMP_DIR 目录中的 export.log 文件来查看导出详细信息。

DBA
任务描述所需技能

将数据转储文件从源上传到 S3 存储桶。

使用 AWSCLI,运行以下命令。

aws s3 cp sample.dmp s3://<bucket_created_epic_1>/
DBA
任务描述所需技能

将数据转储文件下载到 Amazon RDS

要将转储文件sample.dmp从 S3 存储桶复制到 Amazon f RDS or Oracle 数据库,请运行以下SQL命令。在此示例中,sample.dmp 文件从 S3 存储桶 my-s3-integration1 下载到 Oracle 目录 DATA_PUMP_DIR。确保为RDS实例分配了足够的磁盘空间,以容纳数据库和导出文件。

-- If you want to download all the files in the S3 bucket remove the p_s3_prefix line. SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'my-s3-integration', p_s3_prefix => 'sample.dmp', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

前述命令输出一个任务 ID。要通过查看任务 ID 中的数据来查看下载状态,请运行以下命令。

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-<task_id>.log'));

要查看 DATA_PUMP_DIR 目录中的文件,请运行以下命令。

SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
AWS系统管理员
任务描述所需技能

将架构和数据恢复到 Amazon RDS。

要将转储文件导入sample_schema数据库架构,请从 SQL Developer 或 SQL *Plus 中运行以下SQL命令。

DECLARE hdnl NUMBER; BEGIN hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null); DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'sample.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'import.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''SAMPLE_SCHEMA'')'); DBMS_DATAPUMP.START_JOB(hdnl); END; /

要查看导入后的日志文件,请运行以下命令。

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR','import.log'));
DBA
任务描述所需技能

列出并清理导出文件。

列出并删除 DATA_PUMP_DIR 目录中的导出文件,运行以下命令。

-- List the files SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
-- Remove the files EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample.dmp'); EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','import.log');
AWS系统管理员

相关资源