Autonomous DatabaseへのAmazon Redshiftの移行

SQL Developer 18.3以上のバージョンで使用できるSQL Developer Amazon Redshift移行アシスタントには、スキーマ単位でAmazon Redshift環境を簡単に移行できるフレームワークがあります。

この項では、Amazon Redshiftのオンライン移行と、後から実行するスケジュールされた手動移行のためのスクリプト生成について、そのステップおよびワークフローを説明します。

Autonomous DatabaseのRedshift移行の概要

SQL Developerを使用して、Amazon RedshiftからAutonomous Databaseにデータベース・ファイルを移行できます。

  • 取得:ソース・データベースからメタデータ・スキーマおよび表を取得して、移行リポジトリに格納します。

  • 変換: Redshiftデータ型がOracleデータ型にマップされます。Redshiftオブジェクト名は、Oracleネーミング規則に基づいてOracle名に変換されます。Redshift関数を使用する列のデフォルトは、Oracleの同等機能で置換されます。

  • 生成:変換されたメタデータに基づいてスキーマとDDLを生成します。

  • デプロイ:生成したスキーマとDDLをデプロイします。

  • データのコピー: Redshift表からAmazon Storage S3にデータをアンロードし、次にAmazon Storageから以前にデプロイした(スキーマ内) Autonomous Database表にデータをコピーします。

Amazon Redshiftへの接続

SQL Developerを使用して、Amazon RedshiftからAutonomous Databaseにデータベース・スキーマおよび表を移行できます。移行用にAmazon Redshiftからメタデータおよびデータを抽出するには、SQL DeveloperでAmazon Redshiftに接続する必要があります。

Amazon Redshift JDBCドライバのダウンロードとサード・パーティ・ドライバの追加

  1. Amazon RedshiftにアクセスするためにAmazon Redshift JDBCドライバをダウンロードします。最新のJDBCドライバの場所については、Amazon Redshiftのドキュメントを参照してください。詳細は、「Configure a JDBC Connection」を参照してください。

    ノート

    Amazon Redshift JDBCドライバJDBC 4.2互換ドライバを使用します。
  2. Amazon Redshift JDBCドライバを、SQL DeveloperがAmazon Redshift JDBCドライバにアクセスできるローカル・ディレクトリに格納します。

  3. 接続する前に、サード・パーティのAmazon Redshift JDBCドライバをSQL Developerに追加します。SQL Developer内で、「ツール」→「プリファレンス」→「データベース」→「サード・パーティJDBCドライバ」(Macの場合、「Oracle SQL Developer」→プリファレンス・データベース→「サード・パーティJDBCドライバ」)に移動します。

  4. 「エントリの追加」をクリックし、ダウンロードしたAmazon Redshift JDBCドライバへのパスを選択します。


    dwcs_aws_migration_jdbc_add1.pngの説明が続きます
    図dwcs_aws_migration_jdbc_add1.pngの説明
  5. 「OK」をクリックし、ダウンロードしたAmazon Redshift JDBCドライバを追加します。


dwcs_aws_migration_jdbc_add2.pngの説明が続きます
図dwcs_aws_migration_jdbc_add2.pngの説明

Amazon Redshiftデータベースに対する接続の追加

Amazon Redshiftデータベースに接続します。

  1. 「接続」パネルで「接続」を右クリックし、「新規接続...」を選択します。

  2. 「Amazon Redshift」タブを選択して、Amazon Redshiftの接続情報を入力します。

    複数のスキーマを移行する予定の場合、Amazon Redshiftシステムのマスター・ユーザー名で接続することをお薦めします。


    adw_migrate_aws_connect1.pngの説明が続きます
    図adw_migrate_aws_connect1.pngの説明

接続をテストしてから保存します。

Autonomous Databaseへの接続

SQL Developerを使用して、Autonomous Databaseへの接続を作成します

クライアント資格証明ウォレットのzipファイルを取得します。詳細は、「クライアント資格証明(ウォレット)のダウンロード」を参照してください。
  1. 「接続」パネルで「接続」を右クリックし、「新規接続...」を選択します。
  2. 「Oracle」タブを選択し、Autonomous Databaseの接続情報を入力します。
  3. AWS Redshift移行の接続用で、データベースに対する_low接続を選択します。

    詳細は、Autonomous Databaseのデータベース・サービス名を参照してください。

  4. Autonomous Databaseに接続を追加します。


    adb_connect_sqldev_17.4.pngの説明が続きます
    図adb_connect_sqldev_17.4.pngの説明

    詳細は、「Oracle SQL DeveloperとWallet (mTLS)の接続」を参照してください。

    接続をテストしてから保存します。

クラウド移行ウィザードの起動

SQL Developerの「ツール」メニューからクラウド移行ウィザードを起動して、Autonomous DatabaseへのAmazon Redshift移行を開始します。

「クラウド移行」ウィザードは、「ツール」メニューの「移行」から「クラウド移行」をクリックすると起動します。クラウド移行ウィザードによって、Amazon RedshiftデータベースからAutonomous Databaseにスキーマ、オブジェクト(表)およびデータを移行できます。

クラウド移行ウィザードでは、一連のステップを簡単に実行できます。クラウド移行ウィザードのステップは次のとおりです。

  • 移行するAmazon Redshiftデータベースのスキーマを指定します。

  • ターゲットのAutonomous Databaseを識別します。

  • メタデータ(DDL)を移行するか、データを移行するか(あるいはその両方を行うか)を定義します。

  • システムをオンラインで移行するか、スクリプトを生成するか(あるいはその両方を行うか)を選択します。

Amazon Redshiftデータベースの指定

移行するAmazon Redshiftデータベースのスキーマを指定します。スキーマ内のすべてのオブジェクト(主に表)が移行されます。Autonomous Databaseへの移行は、スキーマ単位で行われます。スキーマ名を移行の一環として変更することはできません。

  1. AWS Redshift移行で、「接続」を指定します。


    adw_migrate_redshift_step1of3.pngの説明が続きます
    図adw_migrate_redshift_step1of3.pngの説明
  • 接続: Redshiftデータベース接続の名前。

  • 使用可能なスキーマ:特定の接続に使用できるスキーマ。

  • 選択したスキーマ:「追加」アイコンをクリックして、「使用可能なスキーマ」から移行するスキーマを選択します。

  • データを含める:「DDLとDATA」により、選択したスキーマとデータが移行されます。

データを移行する場合は、AWSアクセス・キー、AWS秘密アクセス・キー、およびRedshiftデータをアンロードおよびステージングする既存のS3バケットURIを指定する必要があります。セキュリティ資格証明では、S3にデータを格納するために特定の権限が必要です。移行用に、新しい個別のアクセス・キーを作成することをお薦めします。同じアクセス・キーが後で使用されて、セキュアなRESTリクエストによってAutonomous Databaseにデータをロードします。

Amazon S3バケットのURI形式

Amazon S3に存在するソース・ファイルについて、ファイルにアクセスするためのURI形式の説明は、「Accessing a Bucket」を参照してください。たとえば、次の例では、us-west-2リージョンのadwcバケットの'folder_name'というファイル・フォルダを参照しています。

https://s3-us-west-2.amazonaws.com/adwc/folder_name

S3バケット構成の例1

次のS3バケットのURIを指定した場合:

https://s3-us-west-2.amazonaws.com/my_bucket

ウィザードによってmy_bucketを含むパス全体が検証されます。テスト・ファイルの書込みが試行され、アクセスできない場合はプロンプトが表示されます。my_bucketが存在しない場合、次のエラーがレポートされます。

Validation Failed

次に、コード生成によってDBMS_CLOUD.COPY_DATAファンクション用に次のパスが作成されます。

file_uri_list => "https://s3-us-west-2.amazonaws.com/my_bucket/oracle_schema_name/oracle_table_name/*.gz"

移行アシスタントによって、バケットmy_bucket内にoracle_schema_name/oracle_table_nameというフォルダが作成されます。

S3バケットの例2

次のS3バケットのURIを指定した場合:

https://s3-us-west-2.amazonaws.com/my_bucket/another_folder

ウィザードによってmy_bucketを含むパス全体が検証されます。テスト・ファイルの書込みが試行され、アクセスできない場合はプロンプトが表示されます。my_bucketが存在しない場合、次のエラーがレポートされます。

Validation Failed

この場合、another_folderは存在する必要はありません。移行によって、my_bucket内にanother_folderバケットが作成されます。

次に、コード生成によってDBMS_CLOUD.COPY_DATAファンクション用に次のパスが作成されます。

file_uri_list => ‘https://s3-us-west-2.amazonaws.com/my_bucket/another_folder/oracle_schema_name/oracle_table_name/*.gz

ステップ2/3: Autonomous Data Warehouse Cloud

最初にターゲットのAutonomous Databaseへの接続を作成します。「Autonomous Databaseへの接続」を参照してください。この接続のためのユーザーは、管理権限を持っている必要があります(この接続は、スキーマとオブジェクトを作成するために移行全体を通じて使用されるため)。

ノート

ADMINユーザーまたは管理ロールのあるユーザーを使用します。

Amazon Redshift移行アシスタントにより、オンラインですぐに移行を実行するか、移行に必要なすべてのスクリプトを生成するか、またはその両方を行うことができます。ローカル・ディレクトリにスクリプトを格納する場合、そのローカル・ディレクトリを指定する必要があります(ユーザーは、このディレクトリに書込み可能である必要があります)。

  • 接続:この接続は、Autonomous Data Warehouse Cloud接続の名前。必要に応じて、Autonomous Databaseの接続を作成します。この接続は移行中、スキーマおよびオブジェクトの作成に使用されるため、ユーザーは管理権限を持っている必要があります。 

  • 移行リポジトリ・パスワード:スキーマ移行の一環としてAutonomous Databaseにインストールされる移行リポジトリのパスワード。あらかじめ入力されたパスワードを使用するか、新しいパスワードを入力します。

  • 移行成功時にリポジトリを削除:このオプションは、移行の完了後にリポジトリを削除する場合に選択します。移行後にリポジトリは不要です。

  • 今すぐ移行:オンライン移行をすぐに実行するには、このオプションを選択します。

    ノート

    • ステップ1の「データを含める」「今すぐ移行」を両方とも選択しない場合、手動移行のために必要なすべてのSQLスクリプトの生成のみを選択しています。

    • ステップ1の「データを含める」を選択せず、「今すぐ移行」を選択した場合、選択したすべてのスキーマとその表がAutonomous Databaseにデプロイされますが、データは表にロードされません。

    • ステップ1の「データを含める」「今すぐ移行」を両方とも選択した場合、選択したすべてのスキーマとその表がAutonomous Databaseにデプロイされ、データが表にロードされます。

  • ディレクトリ:移行に必要な生成済みスクリプトを格納するためのディレクトリを指定します。これにより、スクリプトはローカル・ディレクトリに保存されます。

拡張設定(オプション)

S3ストレージへのアンロード時またはS3ストレージからAutonomous Databaseへのコピー時にフォーマット・オプションを制御しないかぎり、デフォルト設定で機能する必要があります。フォーマット・オプションの詳細は、「DBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。拡張オプションを使用するには、「拡張設定」をクリックします。

出力ディレクトリ:パスを入力するか、「ディレクトリの選択」をクリックして移行用のディレクトリまたはフォルダを選択します。

スレッドの最大数: Autonomous Databaseの表にデータをロードするときに有効化するパラレル・スレッドの数を入力します。

スケジューラの使用:このオプションを選択して、移行用のスケジューラを有効にします。AWS S3バケットからAutonomous Databaseへのデータ・ロード移行操作のジョブはスケジュールできます。スケジュール済ジョブをすぐに実行するか、将来の日時で実行できます。データ・ロード・スケジュール済ジョブをモニターするには、「接続」ナビゲータで「スケジューラ」ノードを使用します。

移行実行の選択:

  • 即時では、Redshift移行がトリガーされるとすぐにスケジューラが実行されます。

  • 「1回」では、将来の日付でスケジューラが実行されます。「開始日」および「タイム・ゾーン」を指定します。デフォルトでは、「開始日」には、ローカル・システムの現在の日時が表示されます。開始日を変更するには、カレンダ・アイコンで日付をダブルクリックして選択するか、スピナーで日付を強調表示してからフィールドをクリックして設定します。

Redshiftアンローディング・オプション: 上書きの許可: このオプションを有効にすると、アンロード・プロセスにより、マニフェスト・ファイル(アンロード・プロセスで作成されるデータ・ファイルがリストされる)を含む既存のファイルは上書きされます。デフォルトでは、上書き可能なファイルが存在すると、アンロードは失敗します。

ADWCフォーマット・オプション: 拒否の制限: Autonomous Databaseの表にデータをロードする際に、拒否する行数を入力します。指定した数の行が拒否された後、移行操作を終了します。デフォルトは0です。

Amazon Redshift移行の確認と終了

「サマリー」に、指定した情報のサマリーが表示されます。

いずれかの情報を変更するには、必要に応じて「戻る」を押します。


adw_migrate_aws_summary.pngの説明が続きます
図adw_migrate_aws_summary.pngの説明

即時移行を選択した場合、移行ウィザードのダイアログは、移行が終了するまで開かれたままです。スクリプトの生成を選択した場合、移行プロセスによって、指定したローカル・ディレクトリに必要なスクリプトが生成され、スクリプトは実行されません。

移行を実行するには、「終了」をクリックします

AWS Redshiftで選択したスキーマ名がすでにAutonomous Databaseに存在する場合、移行プロセスでは、それらの選択したスキーマのデプロイが除外され、次のダイアログが表示されます。


adw_migrate_aws_schema_exists.pngの説明が続きます
図adw_migrate_aws_schema_exists.pngの説明

サマリー: 移行アシスタントが作成するもの

  • Redshiftのschema_nameを使用して新しいAutonomous Databaseユーザーを作成します。

  • スキーマ名に基づいてS3に新しいバケットを作成します。

  • 表ごとにS3にサブフォルダを作成します。

生成したAmazon Redshift移行スクリプトの使用

移行スクリプトを生成するように選択した場合、移行ウィザードで指定したローカル・ディレクトリに新しいサブディレクトリが作成されます。これらのスクリプトは、リアルタイムで実行するか、プログラム的な処理に使用できます。

ディレクトリには次のスクリプトが含まれます。

  • redshift_s3unload.sql

  • adwc_ddl.sql

  • adwc_dataload.sql

  • adwc_dataload_scheduler.sql

これらのスクリプトには、Amazon RedshiftシステムをAutonomous Databaseに移行するために必要なすべてのコマンドが含まれています。これらのスクリプトは、リアルタイムで実行するか、プログラム的な処理に使用できます。

S3へのAmazon Redshiftデータのアンロード

正常な移行の最初のステップでは、ステージング領域として機能するAmazon S3にAmazon Redshiftデータをアンロードします。redshift_s3unload.sqlスクリプトには、アクセス資格証明および移行ウィザード・ワークフローで指定したS3バケットを使用して、データをアンローディングするためのすべてのAmazon Redshiftアンローディング・コマンドが含まれています。

Amazon Redshift環境に接続してこのスクリプトを実行します。

データ・ウェアハウス・オブジェクトの作成

Autonomous Databaseを準備するため、データのロード前に空のデータ・ウェアハウス・スキーマを作成します。Amazon Redshift移行アシスタントによって、スクリプトadwc_ddl.sqlですべてのAmazon Redshiftスキーマ構造はOracle構造に変換されます。

スクリプトは、ADMINなどの特権ユーザーとしてAutonomous Databaseに接続しているときに実行する必要があります。

デフォルトでは、移行用に作成されたスキーマは、Amazon Redshiftのスキーマと同じ名前を持ちます。パスワードは、スクリプトで、またはスクリプトの実行後に、指定したユーザーの有効なパスワードに変更する必要があります。スキーマ名を変更する場合、スキーマ名と、その名前に対するすべての参照を変更します。

Amazon RedshiftデータをOracle Autonomous Databaseにロードする

adwc_dataload.sqlスクリプトには、アンロードしたAmazon RedshiftデータをS3から直接Autonomous Databaseにロードするために必要なすべてのロード・コマンドが含まれています。

ADMINなどの特権ユーザーとしてAutonomous Databaseに接続しながらスクリプトを実行します。

データ・ウェアハウス・オブジェクトの作成時にターゲット・スキーマ名を変更する場合、その変更に応じてこのスクリプトでターゲット・スキーマ名を調整する必要があります。

ジョブ・スケジューラの使用

SQL Developerには、Oracle Schedulerオブジェクトと連携動作するDBMS_SCHEDULER PL/SQLパッケージを使用するためのグラフィカル・インタフェースが用意されています。SQL Developerのスケジュール機能を使用するには、『SQL Developerユーザーズ・ガイド』および『Oracle Database管理者ガイド』のSQL Developerを使用したジョブのスケジュールに関する項を参照してください。ジョブ・スケジュールの概念および基本タスクを理解してください。

接続の「スケジューラ」ノードが「接続」ナビゲータおよび「DBA」ナビゲータに表示されます。ADWC 'admin'ユーザーを使用して、データ・ロード・ジョブのステータスをモニターする'admin'が所有するスケジューラ・オブジェクトをナビゲートします。

ADWC 'admin'接続→「スケジューラ」→「ジョブ」に、<schema_name>_<table_name>という名前で、ADWC RedshiftからADWCへのデータ・ロード・ジョブが作成されています。 

各データ・ロードの完了ステータスを表示するには、各スケジュール済ジョブを展開し、ステータスを確認してください。

また、データ・ロード操作の詳細は、表の列の情報を格納しているSQLDEV_MIGREPOSスキーマの表MD_REPORTを参照してください。

 OPERATION_ID, LOGFILE_TABLE, BADFILE_TABLE, SOURCE_SCHEMA_NAME, TARGET_SCHEMA_NAME, SOURCE_TABLE_NAME, 

および

 TARGET_TABLE_NAME, SOURCE_TABLE_ROWS, TARGET_TABLE_ROWS_LOADED, ERROR MESSAGE, 

および

STATUS (COMPLETED or FAILED)

Redshift移行ログとレポート・ファイル

Redshift移行の後、次の3つのファイルが生成されます。

  • MigrationResults.log: Redshift移行のログ・ファイル

  • readme.txt: 生成されたAmazon Redshift移行スクリプトの使用方法を説明したファイル。

  • redshift_migration_reportxxx.txt: 移行の情報が含まれます。サンプルは次のとおりです。

    ______________________________________________________________
    OPERATION ID : 8566
    LOGFILE TABLE : COPY$8566_LOG
    BADFILE TABLE : COPY$8566_BAD
    SOURCE SCHEMA : sample
    TARGET SCHEMA : SAMPLE
    SOURCE TABLE : listing
    TARGET TABLE : LISTING
    SOURCE TABLE ROWS : 192497
    TABLE ROWS LOADED : 192497
    ERROR MESSAGE : null
    STATUS : COMPLETED
    START TIME : 2018-09-27 17:25:18.662075
    END TIME : 2018-09-27 17:25:25.012695
    ______________________________________________________________

移行後タスクの実行

Redshift環境の移行に成功したら、次の移行後タスクについて検討する必要があります。

  • SQLDEV_MIGREPOSスキーマの削除

  • ステージングに使用されたAmazon S3バケットの削除

  • S3へのアクセスに使用されたAmazonアカウントのセキュリティ強化

  • S3からのデータ・ロードに使用されたデータベース資格証明の削除

  • Autonomous Databaseのアカウントを強化する

  1. SQLDEV_MIGREPOSスキーマの削除

    スキーマの移行の一環として、移行アシスタントは、ターゲットのAutonomous Databaseに最小限の移行リポジトリをインストールします。移行後、このアカウントは不要になるため、削除またはロックすることができます。

  2. ステージングに使用されたAmazon S3バケットの削除

    アンロードしたRedshiftデータを使用する場合を除き、アンロードしたデータを含むバケットを削除できます。

  3. S3へのアクセスに使用されたAmazonアカウントのセキュリティ強化

    他の目的で必要としないかぎり、S3アクセスに使用されたセキュリティ・アクセス・キーを非アクティブ化する必要があります。

  4. S3からのデータ・ロードに使用されたデータベース資格証明の削除

    S3にアクセスするためのAmazonセキュリティ資格証明は、Autonomous Databaseでデータベース資格証明REDSHIFT_DWCS_CREDSとして、移行に使用された特権ユーザー・スキーマに暗号化して格納されます。この資格証明は、他の目的で必要としないかぎり、移行の成功後に削除することをお薦めします。詳細は、「DROP_CREDENTIALプロシージャ」を参照してください。

  5. Autonomous Databaseでアカウントを強化する

    移行アシスタントによる移行の一環として作成された新しいスキーマについては、それらのアカウントをデータ格納のためにのみ使用する場合、必ずそのパスワードを変更するか、ロックして期限切れにしてください。