Oracle Data Pump を使用してオンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Oracle Data Pump を使用してオンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する

作成者: Mohan Annam (AWS) と Brian motzer (AWS)

環境:PoC またはパイロット

ソース:データベース:リレーショナル

ターゲット: Amazon RDS for Oracle

R タイプ: リプラットフォーム

ワークロード: ‬Oracle

テクノロジー: 移行、データベース

AWS サービス: Amazon RDS

[概要]

このパターンでは、Oracle Data Pump を使用して、Oracle データベースをオンプレミスデータセンターから Amazon Relational Database Service (Amazon RDS) for Oracle DB インスタンスに移行する方法について説明します。 

このパターンでは、ソースデータベースからデータダンプファイルを作成し、そのファイルを Amazon Simple Storage Service (Amazon S3) バケットに保存してから、Amazon RDS for Oracle DB インスタンスにデータを復元します。このパターンは、移行に AWS Database Migration Service (AWS DMS) を使用する制限が発生した場合に役立ちます。

前提条件と制限

前提条件

  • アクティブなAWSアカウント

  • AWS Identity and Access Management (IAM) および Amazon S3 マルチパートアップロードでロールを作成するために必要なアクセス許可

  • ソースデータベースからデータをエクスポートするのに必要な権限

  • AWS コマンドラインインターフェイス (AWS CLI) がインストールされ設定されている

製品バージョン

  • Oracle Data Pump は、Oracle Database 10g リリース 1 (10.1) 以降のバージョンでのみ使用できます。

アーキテクチャ

ソーステクノロジースタック

  • オンプレミスの Oracle データベース

ターゲットテクノロジースタック

  • Amazon RDS for Oracle

  • SQL クライアント (Oracle SQL デベロッパー)

  • S3 バケット

ソースアーキテクチャとターゲットアーキテクチャ

Oracle Data Pump RDSを使用して、オンプレミスの Oracle DB から Amazon に Amazon S3 マルチパートアップロードします。

ツール

AWS サービス

  • AWS Identity and Access Management (IAM) は、誰が認証され、誰に使用を許可されているかを制御することで、AWSリソースへのアクセスを安全に管理します。このパターンでは、 IAM を使用して、Amazon S3 から Amazon RDS for Oracle へのデータの移行に必要なロールとポリシーを作成します。

  • Amazon Relational Database Service (Amazon RDS) for Oracle は、AWSクラウドで Oracle リレーショナルデータベースをセットアップ、運用、スケーリングするのに役立ちます。

  • Amazon Simple Storage Service (Amazon S3) は、どのようなデータ量であっても、データを保存、保護、取得することを支援するクラウドベースのオブジェクトストレージサービスです。

その他のツール

  • Oracle Data Pump を使用すると、あるデータベースから別のデータベースにデータやメタデータを高速に移動できます。このパターンでは、Oracle Data Pump を使用してデータダンプ (.dmp) ファイルを Oracle サーバーにエクスポートし、Amazon RDS for Oracle にインポートします。詳細については、Amazon RDSドキュメントの「Amazon での Oracle へのデータのインポートRDS」を参照してください。

  • Oracle SQL Developer は、従来のデプロイとクラウドベースのデプロイの両方で Oracle データベースの開発と管理を簡素化する統合開発環境です。オンプレミスの Oracle データベースと Amazon RDS for Oracle の両方とやり取りして、データのエクスポートとインポートに必要なSQLコマンドを実行します。

エピック

タスク説明必要なスキル

バケットを作成します。

S3 バケットを作成するには、 AWS ドキュメントの手順に従ってください。

AWS システム管理者
タスク説明必要なスキル

IAM アクセス許可を設定します。

アクセス許可を設定するには、 AWSドキュメントの手順に従ってください。

AWS システム管理者
タスク説明必要なスキル

ターゲット Amazon RDS for Oracle DB インスタンスを作成します。

Amazon RDS for Oracle インスタンスを作成するには、 AWS ドキュメントの手順に従ってください。

AWS システム管理者

ロールを DB インスタンスに関連付けます。

ロールをインスタンスに関連付けるには、 AWSドキュメントの手順に従ってください。

DBA
タスク説明必要なスキル

ユーザーを作成します。

Oracle SQL Developer または SQL*Plus からターゲット Amazon RDS for Oracle データベースに接続し、次の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

ダンプファイルを S3 バケットsample.dmpから Amazon RDS for 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データベーススキーマにインポートするには、SQLDeveloper または 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 システム管理者

関連リソース