SBクラウド株式会社logo

【PolarDBマイグレーションシリーズ】Oracle DatabaseからPolarDB-Oマイグレーション-Part2 Oracle Database評価

Hi, データエンジニアの大原です。
Oracle DatabaseをPolarDB-O(Oracle)へマイグレーションするためのベストプラクティスが揃ってなかったので、SBC社内で実際にOracle Database導入からPolarDB-Oへのマイグレーションシナリオ検証しまとめてみました。
こちら長文になるので、全部でPart5に分けて紹介します。
Databaseマイグレーションはフルマラソンのようで地味に大変な作業なので、マイグレーションを検討もしくは実施中の方はPart1~Part5の記事を通じて、作業方法、現在の位置、道印、ロードマップなどの把握として参考に頂ければ大変幸いです。

Part1 OracleDatabaseセットアップ、事前準備
Part2 Oracle Database評価←本記事です
Part3 データベースマイグレーション準備
Part4 データベースマイグレーション実行
Part5 アプリケーションマイグレーションと改修

本記事では、Oracle DatabaseからPolarDB-Oマイグレーション-Part2 Oracle Database評価 についてを紹介します。

PolarDBとは

PolarDBはAlibaba Cloudが開発したCloud Native Databaseサービスです。MySQL・PostgreSQLは100%、Oracleは高い互換性を持ちながら、ユーザーのワークロードに応じて垂直・水平スケーリングすることが出来るため、コストを大幅に削減できることが特徴です。

f:id:sbc_ohara:20210923094834p:plain f:id:sbc_ohara:20210923095110p:plain f:id:sbc_ohara:20210923095159p:plain

Oracle DatabaseからPolarDBへのマイグレーションについて

www.sbcloud.co.jp

最初に

この記事 Part2では、Part1で作成したターゲットとなるOracle Database(以降ターゲットDBと省略します)を評価するフェーズとなります。
ターゲットDBを評価して、その結果がPolarDB-Oに適しているか、もし適しているならどの作業が必要か、改修作業として何があるか、といったレポーティングが行えます。

f:id:sbc_ohara:20210922091327p:plain

4.Oracle Databaseに対するデータベース評価

4-1.Oracle Databaseを収集します

4-1-1.データベース収集ツールをインストールします

1)データ収集用のECSを作成します(省略) 備考:ECS-Oracleと同じVPCで設定するとイントラネットで接続できます ①ECSを作成します

f:id:sbc_ohara:20210922024904p:plain

②ECSへログインします
f:id:sbc_ohara:20210922024938p:plain

2)ECS環境を設定します
①データアップロード用ツールをインストールします

yum install lrzsz

f:id:sbc_ohara:20210922024953p:plain

f:id:sbc_ohara:20210922024959p:plain

②解凍用ツールをインストールします

yum install -y unzip zip

f:id:sbc_ohara:20210922025012p:plain

3)Database Collectorをダウンロードします
ADAMコンソール画面でEvaluateDB画面でDatabase Collectorをダウンロードします

f:id:sbc_ohara:20210922025024p:plain

f:id:sbc_ohara:20210922025031p:plain

f:id:sbc_ohara:20210922025039p:plain

4)Database CollectorをECSにアップロードします
①下記コマンドをインプット後、rainmeter-linux64.tar.gzファイルを選択し、アップロードします

# rz 

f:id:sbc_ohara:20210922025055p:plain

f:id:sbc_ohara:20210922025101p:plain

②rainmeter-linux64.tar.gzファイルを解凍します

# tar -xvmf rainmeter-linux64.tar.gz

f:id:sbc_ohara:20210922025113p:plain

f:id:sbc_ohara:20210922025120p:plain

ここまでrainmeterのインストールが完了しました

4-1-2.Oracle-ECSでデータ収集用のアカウントを設定します

1)Oracleが起動されることを確認します

# su - oracle
# lsnrctl start
# sqlplus / as sysdba
# SQL> startup

f:id:sbc_ohara:20210922025137p:plain

2)下記コマンドでrainmeter用のアカウントを作成します

# sqlplus / as sysdba
SQL> create user eoa_user identified by "eoaPASSW0RD" default tablespace users;
SQL> grant connect,resource,select_catalog_role,select any dictionary to eoa_user;
SQL> grant execute on DBMS_LOGMNR to eoa_user;
SQL> grant execute on dbms_metadata to eoa_user;
SQL> grant select any transaction to eoa_user;
SQL> grant analyze any to eoa_user;
SQL> grant execute on dbms_random to eoa_user;

f:id:sbc_ohara:20210922025151p:plain

4-1-3.Oracleデータを収集します

1)rainmeterフォルダを開きます

f:id:sbc_ohara:20210922025203p:plain

2)データを収集します
①下記コマンドでrainmeterを起動し、データ収集を開始します

sh collect_11gR2.sh -h 172.16.0.96 -u eoa_user -p eoaPASSW0RD -d orcl11g

パラメータ説明

-h: Oracle DatabaseのIPアドレス(今回のECSはOracleのと同じVPCであるため、プライベートIPを使います)
-u: 上記作った収集用のユーザーです(eoa_user)
-p: 上記作った収集用のパスワードです(eoaPASSW0RD)
-d: OracleのSIDまたはService Nameです(Service Name:orcl11gを使います)

f:id:sbc_ohara:20210922025235p:plain

②アプリケーションウェブサイトを操作します
注意事項として、事前にOracle Database側にSQLクエリ文を格納する必要があり、SQLクエリ文が格納されてなかったらADAMによる評価や分析等でエラーが発生することがあります。
これはADAMによるデータ収集時、SQLクエリ文を参照しながらマイグレーションに向けた評価を行うためです。
もちろんアプリケーションやOracle Databaseが稼働中の状態でもADAMによるデータを収集することはできます。

http://8.211.134.35:8080/index.action

f:id:sbc_ohara:20210922025409p:plain

f:id:sbc_ohara:20210922025423p:plain

f:id:sbc_ohara:20210922025431p:plain

f:id:sbc_ohara:20210922025438p:plain

③データ収集結果を確認します

f:id:sbc_ohara:20210922025452p:plain

④収集さらたデータをダウンロードします

# cd output
# ls
# sz data.zip

f:id:sbc_ohara:20210922025502p:plain

f:id:sbc_ohara:20210922025510p:plain

4-2.ソースデータベースプロファイルを分析します

4-2-1.ソースデータベースプロファイルを作成します

1)ADAMプロファイル画面を開きます ①AlibabaCloudのサイトをログインし、ADAMコンソール画面を開きます

f:id:sbc_ohara:20210922025532p:plain

②日本リージョンを選択します

f:id:sbc_ohara:20210922025541p:plain

③データベース評価メニューをクリックし、ソースデータベースプロファイルをクリックします

f:id:sbc_ohara:20210922025553p:plain

2)プロファイルを作成します
①プロファイル作成ボタンをクリックします

f:id:sbc_ohara:20210922025606p:plain

②プロファイル設定し、収集のデータをアップロードします

f:id:sbc_ohara:20210922025614p:plain

③作成ボタンをクリックします

f:id:sbc_ohara:20210922025623p:plain

④プロファイルを作成開始します

f:id:sbc_ohara:20210922025632p:plain

⑤プロファイル作成中はこのような感じになります

f:id:sbc_ohara:20210922025641p:plain

⑥プロファイル作成が完了しました

f:id:sbc_ohara:20210922025650p:plain

4-2-2.ソースデータベースプロファイルを分析します

1)プロファイル概要を確認します
①プロファイルの詳細ボタンをクリックします

f:id:sbc_ohara:20210922025754p:plain

②プロファイル概要を確認します

f:id:sbc_ohara:20210922025806p:plain

f:id:sbc_ohara:20210922025814p:plain

③プロファイルレポートをダウンロードします

f:id:sbc_ohara:20210922025823p:plain

f:id:sbc_ohara:20210922025830p:plain

f:id:sbc_ohara:20210922025836p:plain

f:id:sbc_ohara:20210922025842p:plain

2)プロファイル詳細を確認します
プロファイル詳細画面では下記情報が確認できます
* Performance(性能):OracleインスタンスのTPS/QPS/CPU使用率/負荷に関する情報を提供します。複数のインスタンス情報が表示できます
* Capacity(容量):スキーマとオブジェクトタイプ(テーブル、インデックス、LOB)に応じた容量情報を表示します
* Oracle Features(Oracle特性):Oracleの特性を持つオブジェクトタイプを分析します
* External Dependency(外部依存):OracleのDBLink情報を表示します。オブジェクトを関連付けた後で改修する必要があります
* Other Dimensions(その他ディメンション):特定のディメンションに従ってOracleオブジェクトの特性を分析します。例:大きいテーブル(1000行を超えるテーブル)
* Object Details(オブジェクト詳細):複数のディメンションからオブジェクトの関係を表示します。例:スキーマごとオブジェクトとオブジェクトの関連情報を表示します
* Object Search(オブジェクト検索):オブジェクトを検索し、オブジェクトの特性からオブジェクトの全文検索をサポートします

①Performanceを確認します

f:id:sbc_ohara:20210922025925p:plain

f:id:sbc_ohara:20210922025952p:plain

②Capacityを確認します

f:id:sbc_ohara:20210922030004p:plain

③Oracle Featuresを確認します

f:id:sbc_ohara:20210922030016p:plain

f:id:sbc_ohara:20210922030022p:plain

・オブジェクト詳細を確認します

f:id:sbc_ohara:20210922030037p:plain

・依存情報の詳細を確認します
f:id:sbc_ohara:20210922030049p:plain

f:id:sbc_ohara:20210922030057p:plain

f:id:sbc_ohara:20210922030104p:plain

f:id:sbc_ohara:20210922030111p:plain

④External Dependencyを確認します
f:id:sbc_ohara:20210922030122p:plain

⑤Other Dimensionsを確認します
f:id:sbc_ohara:20210922030132p:plain

⑥Object Detailsを確認します
f:id:sbc_ohara:20210922030144p:plain

f:id:sbc_ohara:20210922030152p:plain

f:id:sbc_ohara:20210922030159p:plain

f:id:sbc_ohara:20210922030206p:plain

⑦Object Searchを確認します

f:id:sbc_ohara:20210922030220p:plain

f:id:sbc_ohara:20210922030227p:plain

f:id:sbc_ohara:20210922030233p:plain

f:id:sbc_ohara:20210922030240p:plain

ここまでデータベースプロファイルの作成が完了しました。

4-3.ターゲットデータベースの選択

1)ADAM診断レポートより、互換性について説明があると思いますので、それを参考にしながら、ソースデータベースから移行先のターゲットデータベースを選定する必要があります。 今回、Oracle Databaseをソーステーブルとして利用しているので、PolarDBだと、PolarDB-O(Oracle)、PolarDB-P(PostgreSQL)、PolarDB-M(MySQL)のいずれかが候補となります。(SQLの互換性はここには含まれておらず、例えばOracleからMySQLへ移行だとSQLクエリの修正が必要となります)

f:id:sbc_ohara:20210923134405p:plain

ADAM診断レポートからみる互換性のコメントについて少し説明します。

①DB Object Compatibility:データベースの互換性
・データベースの互換性(DB Object Compatibility):
互換度%:ADAMスマート互換性のパーセンテージを表示します
ADAMスマート互換性あり:ターゲットライブラリと直接互換性のあるオブジェクトと、ADAMによってインテリジェントに変換できるオブジェクトを含みます(ADAMデータベース改修プロダクトを使用して製品を変換すると、ADAMインテリジェント互換オブジェクトをターゲットデータベースへ自動的に作成してくれます)
互換性なし:データベースオブジェクトを手動で変更する必要があります。 (ADAMは改修提案をしてくれます)

②SQL compatibility:DBSQLの互換性
・DBSQLの互換性(SQL compatibility):
互換度%:互換性のあるオブジェクトと改修後互換性のあるオブジェクトを含みます
  互換性あり:ターゲットライブラリと直接互換性のあるオブジェクトと、ADAMによってインテリジェントに変換できるオブジェクトを含みます
  改修後互換性あり:データベースSQLが改修された後互換性を持つことができ、アプリケーションに対応するSQL改修を行う必要があります
  互換性なし:互換性のないオブジェクト

③一部のスキーマのみを移行するユーザーの場合、互換性リストの上部にあるスキーマでフィルタリングし、移行したいスキーマを選択して、ターゲットライブラリを選択しながら作成することができます。 もしお持ちのデータベースで移行したくないスキーマが含まれていた場合、これを活用することでADAM診断レポートを含めマイグレーション方法にスキーマフィルタリングの結果を反映することが出来ます。

④ターゲットデータベースとして推奨Databaseのタイプ表示について
ADAMは、データベースのプロファイルに従ってソースデータベースの使用シナリオ(TPタイプ、APタイプ、HTAPタイプ、またはテストタイプ)を総合的に分析し、互換性の状況と組み合わせて、最適なターゲットデータベースを推奨してくれます。

2)データベースプロファイルの選定
①Evaluate DB画面でデータベースプロファイルを選択し、New Select Destination Databaseボタンをクリックします

f:id:sbc_ohara:20210922030411p:plain

②New Select Destination Database 画面でデータベースとSQLの互換性を確認します
※ハイライト表示のデータベースがADAM評価による推奨のデータベースです

f:id:sbc_ohara:20210922030421p:plain

f:id:sbc_ohara:20210922030428p:plain

④推奨のデータベースタイプを表示してくれます
f:id:sbc_ohara:20210922030438p:plain

4-4.データベース互換性評価分析

ADAM評価分析概要:
ADAM評価分析システムは、AlibabaCloudにデプロイされ、収集されたOracleデータを分析する一連のサービスです。
収集したデータを評価システムにアップロードすることで、ADAMは客観的な分析結果を提供してくれます。

分析結果は
* ターゲットデータベースの仕様と数量
* Oracleオブジェクトとターゲットデータベース間の互換性(オブジェクトとSQL)
* OracleアプリケーションのSQL互換性
* 複数のアプリケーション間のトポロジー関係
* データベース移行の移行計画(ツールを使用して構造の移行は自動化できます)

などが充実しています。
評価分析システムはADAMシステム独自のものです。意思決定者が分析結果に基づいてソースデータベースを完全に理解するのに役立ちます。
同時に意思決定者は、移行するかどうかを把握または決定し、評価移行改修の難しさ、ワークロードおよび移行後のコストなどの重要な情報を評価します。

データベースの互換性評価は、ターゲットデータベースの互換性、仕様、および移行のリスクを評価するのに役立ちます。そのため、ユーザー観点としては、現存のソースデータベースをAlibaba Cloud データベースサービスへの移行可能性と改修ワークロードを完全に理解することができます。

4-4-1.ターゲットデータベース評価プロジェクトを作成します

①ターゲットデータベース評価プロジェクトボタンをクリックします

f:id:sbc_ohara:20210922030628p:plain

②ご覧のようにターゲットデータベース評価プロジェクトを設定します

f:id:sbc_ohara:20210922030640p:plain

③Oracleユーザーを選択します

f:id:sbc_ohara:20210922030650p:plain

④評価プロジェクトを作成開始します

f:id:sbc_ohara:20210922030659p:plain

⑤評価プロジェクト作成中は次のようなステータス画面になります

f:id:sbc_ohara:20210922030709p:plain

⑥評価プロジェクトを作成完了しました f:id:sbc_ohara:20210922030718p:plain

4-4-2.プロジェクト評価詳細を確認します

データベースの評価結果は、「プロジェクトの概要」、「評価の概要」、「評価の詳細」の3点の観点で表示されます。
1. 評価の概要
ソースデータベースからターゲットデータベースへ移行する互換性、改修点、仕様、リスク、および全体的な互換性をまとめたものです。
* 互換性:ソースデータベースとターゲットデータベースの互換性を測定します。互換性が高いほど、変更必要なオブジェクトとSQLが少なくなります。
* 改修:ターゲットデータベースへ移行するため改修が必要な具体的なところを示します。
オブジェクト改修ポイント:ADAMデータベース改修を使用した後、ユーザーが自己改修を行う必要はありません
アプリケーション改修ポイント:データベースによって収集されたSQL分析を通じて取得されます。データベース移行の初期評価です
* 仕様:収集されたデータに基づいて、ADAMによってターゲットデータベースへの移行に必要な仕様および見積もりコストを計算してくれます。 仕様評価は収集環境の影響を受けるため、実際の購入はビジネスに合わせた総合評価を参考する必要があります。
* リスク:ユーザーの移行と改修についてリスク警告を実行します。 ソースデータベースの既存のリスクポイントとターゲットデータベースへの移行によって可能性のあるリスクポイントが含まれます
* 全体的な互換性:ソースデータベースからターゲットデータベースへの全体的な互換性を表示してくれます。

  1. 評価の詳細
    評価の詳細には、オブジェクトの互換性、SQLの互換性、オブジェクトの改修ポイント、ターゲットデータベースの仕様、移行のリスク、プロジェクトの外部依存関係(スキーマ)の6つの部分が含まれます。詳細ボタンから評価の詳細内容が確認できます。
  2. オブジェクト互換性:すべてのオブジェクト互換性をリストします。ソースデータベースのすべてオブジェクト、互換性ある、互換性なしを含みます。改修後に互換性のあるオブジェクトに対し、ADAMは変換後のDDLと改修ポイントを提供します。互換性のないオブジェクトに対し、ADAMは非互換性の理由と改修の提案を提供します。
  3. SQL互換性:データベースに収集されたSQLの文法分析の結果です。
  4. オブジェクト改修ポイント:主にデータベースオブジェクトの改修ポイントをまとめてくれます。
  5. ターゲットデータベース仕様:ユーザーがAlibabaCloudデータベースに移行するための仕様と移行計画のガイドラインを提供してくれます。
  6. 移行リスク:ソースデータベースリスクとターゲットデータベースリスクの二つがあります。
    ソースデータベースリスクは、ソースデータベースに収集されたSQLを実行するときにCPUと大容量メモリを消費するSQLリストを指します。TOPCPU/ TOP Bufferなどのタイプに分けられます。テスト中は、これらのSQLに注目する必要があります。
    ターゲットデータベースリスクはデータベース構造の変更またはターゲットデータベースでのSQLの実行にリスクがある可能性があることです。 異種データベースの移行によって引き起こされるパフォーマンスの違いを回避するために、ユーザーは移行のリスクポイントに注意を払う必要があります。
  7. プロジェクトの外部依存関係(スキーマ):外部依存関係のオブジェクト数を評価します。ソリューション提案も提供してくれます。

1)評価プロジェクトの詳細を確認します

①詳細ボタンをクリックします

f:id:sbc_ohara:20210922084150p:plain

②詳細情報が確認できます

f:id:sbc_ohara:20210922084241p:plain

2)Object Compatibility情報を確認します

①Object Compatibility情報を確認します

f:id:sbc_ohara:20210922084252p:plain

②Summaryを確認します

f:id:sbc_ohara:20210922084303p:plain

③Evaluation Detailsを確認します

f:id:sbc_ohara:20210922084312p:plain

④Details of Incompatible Rulesを確認します

f:id:sbc_ohara:20210922084322p:plain

3)SQL Compatibility情報を確認します
①SQL Compatibility情報を確認します

f:id:sbc_ohara:20210922084332p:plain

②Evaluation Summaryを確認します

f:id:sbc_ohara:20210922084341p:plain

③Evaluation Detailsを確認します

f:id:sbc_ohara:20210922084353p:plain

④Rule Detailsを確認します

f:id:sbc_ohara:20210922084403p:plain

4)Object Transformationを確認します

f:id:sbc_ohara:20210922084416p:plain

f:id:sbc_ohara:20210922084424p:plain

5)Destination DB Specificationsを確認します

f:id:sbc_ohara:20210922084435p:plain

f:id:sbc_ohara:20210922084442p:plain

f:id:sbc_ohara:20210922084449p:plain

6)Migration Riskを確認します

f:id:sbc_ohara:20210922084500p:plain

f:id:sbc_ohara:20210922084508p:plain

7)Project Dependency (Schema)を確認します

f:id:sbc_ohara:20210922084523p:plain

f:id:sbc_ohara:20210922084530p:plain

8)簡易レポートをダウンロード
①簡易レポートをダウンロードします

f:id:sbc_ohara:20210922084543p:plain

②ローカルにダウンロードします

f:id:sbc_ohara:20210922084557p:plain

③内容を確認します

f:id:sbc_ohara:20210922084605p:plain

9)すべてのレポートをダウンロードします
①すべてのレポートをダウンロードします

f:id:sbc_ohara:20210922084616p:plain

②ローカルにダウンロードします

f:id:sbc_ohara:20210922084626p:plain

③内容を確認します

f:id:sbc_ohara:20210922084646p:plain

f:id:sbc_ohara:20210922084652p:plain

ここまでADAMによる、Oracle Databaseに対するデータベース評価をご紹介しました。
次はPart3 データベースマイグレーション準備に移りたいと思います。

www.sbcloud.co.jp