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 JDBCドライバをダウンロードして、Amazon Redshiftにアクセスします。最新のJDBCドライバの場所については、Amazon Redshiftのドキュメントを参照してください。詳細は、JDBC接続の構成を参照してください。

    ノート

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

  3. 接続する前に、サード・パーティとしてAmazon Redshift JDBCドライバをSQL Developerに追加します。Within SQL Developer, go to Tools > Preferences > Database > Third Party JDBC Drivers (for Mac, this is Oracle SQL Developer > Preferences Database > Third Party JDBC Drivers).

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


    dwcs_aws_migration_jdbc_add1.pngの説明が続きます

  5. 「OK」をクリックして、ダウンロードしたAmazon Redshift JDBCドライバを追加します。


dwcs_aws_migration_jdbc_add2.pngの説明が続きます

Amazon Redshiftデータベースへの接続の追加

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

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

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

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


    adw_migrate_aws_connect1.pngの説明が続きます

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

Autonomous Databaseへの接続

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

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

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

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


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

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

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

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

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

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


adw_migrate_redshift_start.pngの説明が続きます

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

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

  • ターゲットAutonomous Databaseを指定します。

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

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

Amazon Redshiftデータベースの指定

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

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


    adw_migrate_redshift_step1of3.pngの説明が続きます

  • 接続: Redshiftデータベース接続の名前。

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

  • Selected Schemas: Click the Add icon to select the schemas you want to migrate from Available Schemas.

  • データを含める: 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移行アシスタントを使用すると、すぐにオンライン移行を実行すること、移行に必要なすべてのスクリプトを生成すること、またはその両方を行うことができます。ローカル・ディレクトリにスクリプトを保存することを選択した場合、そのローカル・ディレクトリを指定する必要があります(このディレクトリは、ユーザーが書込み可能である必要があります)。


adw_migrate_redshift_step2of3.pngの説明が続きます

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

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

  • 移行成功時にリポジトリを削除:移行の完了後にリポジトリを削除するには、このオプションを選択します。移行後は、リポジトリは必要ありません。

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

    ノート

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

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

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

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

拡張設定(オプション)

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


adw_migrate_redshift_prefs.pngの説明が続きます

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

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

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

移行実行の選択:

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

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

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

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

Amazon Redshift移行の確認と終了

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

情報を変更するには、必要に応じて[Back]を押します。


adw_migrate_aws_summary.pngの説明が続きます

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

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

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


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のスキーマと同じ名前を持っています。パスワードは、スクリプトで、またはスクリプトの実行後に、指定したユーザーの有効なパスワードに変更する必要があります。スキーマ名を変更する場合、スキーマ名およびその名前に対するすべての参照を変更します。

Oracle Autonomous DatabaseへのAmazon Redshiftデータのロード

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

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

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

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

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

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

ADWC 'admin'接続→「スケジューラ」→「ジョブ」に、<schema_name>_<table_name>という名前で、AWS 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として、移行に使用される特権ユーザー・スキーマに暗号化されて格納されます。Oracleでは、他の目的に必要でないかぎり、移行の成功後にこの資格証明を削除することをお薦めします。詳細は、DROP_CREDENTIALプロシージャを参照してください。

  5. Autonomous Databaseのアカウントのセキュリティ強化

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