Insight Technology

2021.05.13 (最終更新日:2021.05.19)

Insight Database Testing と AWS SCT を連携して移行アセスメントをさらに省力化 ( パート 1 準備編 )

このエントリーをはてなブックマークに追加

こんにちは。インサイトテクノロジーの松尾です!

Insight Database Testing では、移行元と移行先のそれぞれに対して、Oracle Database、SQL Server、PostgreSQL、MySQL を選ぶことができますが、移行先が AWS 上のデータベースの場合には、AWS ( Amazon Web Services, 以下 AWS ) が提供するツールである AWS SCT ( AWS Schema Conversion Toolとは? ) と連携し、より便利に使うことが可能です。

本ブログでは、Insight Database Testing と AWS SCT を組み合わせて、移行アセスメント、および SQL の修正確認を行う手順を紹介します。

なお、本ブログでは製品自体の詳細な説明などは行っておりません。Insight Database Testing については 製品ページ:Insight Database Testingとは? 等を参照してください。画面の詳細な説明については、Insight Database Testing マニュアル を参照してください。

少し長くなってしまいましたので、2 回に分けてご紹介します。( パート 1 準備編 ) では、SQL アセスメントを実施するための準備をするところまで行います。実際のアセスメントの実行は、パート 2 アセスメント編 を参照してください。

本ブログでの説明の前提条件

本ブログでの説明は以下を前提としています。前提が異なる場合などは、適宜自分の環境へ読み替えて考えてください。

  • Oracle Database → Amazon RDS for PostgreSQL への移行を前提とします。
    • Amazon Aurora PostgreSQL などへも同様の手順で行うことができます。
  • ソース DB からの SQL 収集については本ブログでは扱いません。
    • Oracle Database で実行された SQL は既に収集されて IDT Manager 上に蓄積されていることとします。
    • そのため、下図における Oracle Database から IDT Manager への接続は、本ブログの中では発生しません。
    • SQL 収集も、Insight Database Testing の特徴のひとつです。SQL の 収集については、SQL Capture:本番環境のSQLを自動的にキャプチャー を参考にしてください。
  • 移行先データベース ( Amazon RDS for PostgreSQL ) は事前に起動しておいてください。
  • Insight Database Testing は AWS Marketplace から起動した Ver 2.2.0.0 を使用します。
  • AWS SCT は Ver 1.0.649 を使用して確認しています。

また、Oracle Database では以下のような SQL 文が既に実行済で、IDT Manager 上へ蓄積されていることを前提に説明を記載します。前者は PostgreSQL でも有効な SQL 文、後者は PostgreSQL で実行するにあたって変換が必要な SQL 文です。

select * from emp;
select /* TEST SQL 2 */ d.deptno,d.dname,e.empno,nvl(e.ename,'(no employee)') ename
  from dept d,emp e
  where d.deptno=e.deptno(+)
  order by deptno,empno;

接続イメージ

本ブログで説明する手順

本ブログで説明する手順は、以下の流れに従います ( 順序が前後しても問題ない場合もあります ) 。

  • 移行先データベースの準備
    • ( AWS SCT ) AWS SCT のインストール
    • ( AWS SCT ) AWS SCT の接続
    • ( AWS SCT ) 移行先データベース ( Amazon RDS for PostgreSQL ) にテーブルを作成
  • SQL アセスメントの実行
    • ( Insight Database Testing ) 評価 SQL セットの作成
    • ( Insight Database Testing ) ターゲット DB の登録 ( ↓ここから先は、パート 2 にて実施 )
    • ( Insight Database Testing ) アセスメントの実行
  • AWS SCT での SQL 修正と再アセスメント
    • ( Insight Database Testing ) 失敗 SQL のダウンロード
    • ( AWS SCT ) 失敗 SQL の取り込み
    • ( AWS SCT ) SQL の変換と保存
    • ( Insight Database Testing ) 保存した SQL を評価 SQL セットへ反映
    • ( Insight Database Testing ) 再度アセスメントを実行

なお、( パート 1 準備編 ) では、評価 SQL セットの作成まで行います。

移行先データベースの準備

まず最初に移行先のデータベースを準備します。

2021年5月現在、Insight Database Testing には、移行先へデータベースへテーブルを用意する機能はありません。 AWS SCT や DBeaver などのツールや、自前の SQL スクリプトなどを用いて事前にテーブルを用意します。

本ブログでは AWS SCT を使用した手順を説明します。 AWS SCT は AWS が提供する無償ツールで、既存のデータベースを AWS へ移行する際のスキーマ変換や SQL の修正を行う機能があります。

なお、移行先のテーブルに既にスキーマを移行している場合 ( 移行先データベースを準備済みの場合 ) には、AWS SCT によるスキーマ移行は不要です。AWS SCT によるスキーマ移行自体は不要ですが、後の SQL の修正に AWS SCT を使用しますので、データベースへの接続は行っておいてください。

( AWS SCT での操作 ) AWS SCT のインストール

AWS SCT と接続に必要な JDBC ドライバーを作業 PC にインストールします。

  • AWS SCT をダウンロードしてインストールします

    1. AWS SCT のインストール のページから、自身の作業 PC の OS に合わせたインストーラをダウンロードします。
    2. インストーラファイルをダウンロードした後、ファイルを展開し、インストーラを起動 ( Windows の場合は展開された msi ファイルをダブルクリック ) して、インストールを実行します。
    3. インストールが終了したら、インストールした AWS SCT を起動します。 AWS SCTの起動
  • Oracle Database の JDBC ドライバーをインストールします

    1. Oracle 社の JDBCドライバーのダウンロードサイト から ojdbc11.jar ファイルなどをダウンロードし、適当なフォルダへ配置します ( インストールするJDBCドライバーは最新のものを選択します )。
    2. 起動した AWS SCT のメニューから、Sttings - Global settings を選択し、表示されたダイアログで Drivers を選択し、Oracle Database に対して、配置した ojdbc11.jar を設定します。 ojdbc11.png
  • PostgreSQL の JDBC ドライバーをインストールします

    1. PostgreSQLのドライバーダウンロードサイトより、最新の JDBC ドライバーを選択しインストールします。
    2. Oracle Database の JDBC ドライバーと同様、任意のフォルダーにダウンロードした jar ファイルを配置し、Global settings にてドライバーを設定します。 pgjdbc42.png

これで AWS SCT のインストールと必要な初期設定は終了です。

( AWS SCT での操作 ) AWS SCT の接続

AWS SCT を移行元データベースと移行先データベースに接続します。

  1. AWS SCT のメニューから、File - New project を選択します。 aws-sct-new-project.png
  2. New project ダイアログで以下のように設定します。 aws-sct-new-project2.png

    • Project name: 適当な名称
    • "Transactional database (OLTP)" を選択
    • Source engine: Oracle
    • Target engine: Amazon RDS for PostgreSQL
  3. OK をクリックすると、以下のように "Connect to Oracle" と "Connect to Amazon RDS for PostgreSQL" がメニューに追加されます。 aws-sct-menu.png

  4. Connect to Oracle メニューをクリックすると、Oracle Database への接続情報を入力するダイアログが開きます。Type から指定方法を選択し、必要な情報を入力して Test connection をクリックして接続が可能なことを確認します。指定方法の詳細は Using Oracle as a source for AWS SCT を参照してください。Permissions required when using Oracle as a source database には、Oracle Database へ接続にあたり、使用するユーザーの権限として要求される権限についても記載があります。権限がない場合は事前に付与してください。Test connection で接続が確認されると、接続が成功したメッセージが表示されます。 aws-sct-connect-to-oracle.png aws-sct-connection-success.png

  5. OK をクリックすると、Oracle Database へ接続し、Oracle Database のスキーマ情報の読み取りが行われ、AWS SCT の画面内に、Oracle Database 内のスキーマ情報が表示されます。 aws-sct-oracle-connected.png

  6. 同様に Connect to Amazon RDS for PostgreSQL メニューから Amazon RDS for PostgreSQL へ接続します。Server name には、Amazon RDS for PostgreSQL の画面で表示されるエンドポイントを指定します。Oracle Database 同様に Test connection が成功したら、OK をクリックして接続します。接続すると、右側へ Amazon RDS for PostgreSQL 内の情報が表示されます。 aws-sct-connect-to-rdspg.png aws-sct-rdspg-connected.png

( AWS SCT での操作 ) 移行先データベース ( Amazon RDS for PostgreSQL ) にテーブルを作成

移行元データベースのテーブルを移行先データベースに作成します。

  1. 左側の移行元データベース ( Oracle Database ) で、移行したいスキーマのツリーを展開し、Tables に移行したいテーブルが含まれていることを確認します。 aws-sct-rdspg-connected.png
  2. Tables を選択した状態で、右クリックで表示されるメニューから、Convert schema を選択します。既に存在する場合は上書きする旨の確認メッセージに対しては、問題なければ Yes を選択します。 aws-sct-rdspg-connected.png
  3. 処理が終了すると、Amazon RDS for PostgreSQL のツリー ( 右側 ) の Schemas の中に、Oracle Database で選択したスキーマとテーブルが表示されます。 (aws-sct-scott-in-pg.png
  4. Tables を選択した状態で、右クリックで表示されるメニューから、Apply to database を選択します。確認メッセージが表示されたら Yes を選択します。 (aws-sct-scott-in-pg-apply.png

これで、移行先データベースへテーブルが反映されました。

psql コマンドなどで Amazon RDS for PostgreSQL へ接続すると、選択したスキーマとテーブルが作成されていることを確認できます。

postgres=> \dn
        List of schemas
        Name        |  Owner
--------------------+----------
 aws_oracle_context | postgres
 aws_oracle_data    | postgres
 aws_oracle_ext     | postgres
 public             | postgres
 scott              | postgres
(5 rows)

postgres=> set search_path to scott;
SET
postgres=> \dt
          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 scott  | bonus    | table | postgres
 scott  | dept     | table | postgres
 scott  | emp      | table | postgres
 scott  | salgrade | table | postgres
(4 rows)

postgres=>

なお、今回の設定では、ユーザー postgres に対して、作成されたスキーマ scott はデフォルトの検索パスには入っていません。以下のコマンドにて、scott が検索パスになるように設定をしておきます。

postgres=> alter role postgres set search_path to scott ,public;
ALTER ROLE
postgres=>

再接続して、検索パス設定が変わっていることを確認します。

postgres=> show search_path;
  search_path
-------------- -
 scott, public
(1 row)

postgres=>

移行先データベースへのテーブルの準備が終了しました。

SQL アセスメントの実行

本ブログでは、移行元データベース ( Oracle Database ) で実行された SQL は既に収集されて IDT Manager 上に蓄積されていることとします。IDT Manager で蓄積した SQL については、PISO Manager Web コンソールのマイニングサーチ機能により、事前に /mnt/piso-data/idt-data/src ディレクトリを指定して CSV 出力しておきます。

( Insight Database Testing での操作 ) 評価 SQL セットの作成

Insight Database Testing では、SQL を移行先データベース ( ターゲット DB ) で評価するための準備として、"評価 SQL セット" を作成します。

  1. Insight Database Testing の上部メニューから、評価 SQL セットを選択し、新規作成を選びます。 (idt-sql-set-menu.png

  2. 評価 SQL セット名、使用 CSV ファイル名、ソース DB 情報を指定して、新規作成を選択します。ソース DB 情報は、移行元データベースに関する情報を設定しておきます。新規作成を選択すると、評価 SQL セットが作成されます。評価対象 SQL が多い場合、評価 SQL セットの作成に時間を要します。なお、"SQL の重複を排除する" を有効にして評価 SQL セットを作成すると、ユニークな SQL 文のみで構成された評価 SQL セットが作成されます。 (idt-sql-set-new.png (idt-source-oracle.png (idt-sql-set-created.png

  3. 作成された評価 SQL セットは、移行元データベースでのユーザー名にて SQL を実行することになっています。今回、移行元データベースと移行先データベースでの仕様ユーザー名が異なるため、ユーザー名を修正します。評価 SQL セットの一覧で作成した評価 SQL セットを選択し、メニューから修正を選択します。ユーザー名の変更ができるので、必要に応じてユーザー名の変更を行います ( 移行元データベースと移行先データベースでの使用データベースユーザーが同じ場合には、修正の操作は必要ありません )。 (idt-sql-set-modify.png

アセスメントを実行するためのデータである、評価 SQL セットを作成することができました。

おわりに

ここまで、Insight Database Testing と AWS SCT を用いて、評価の準備である、 評価 SQL セットの作成までを行いました。

実際のアセスメントの実行は、パート 2 アセスメント編 にて紹介いたしますので、どうぞお楽しみに。

Insight Database Testing をまだご利用いただいていない方で実際に試されたい場合は、製品の説明やデモ、トライアルなどについて Insight Database Testingに関するお問い合わせ よりお問い合わせいただければと思います。

ページトップへ
最新ニュースをお届けします! インサイトテクノロジー公式メールマガジンを
ご購読いただき、お役立ち情報をお受け取りください。
メールマガジンを購読する