OCI GoldenGateを使ってDB同士の更新を連携しよう

今日、データ分析のためのみならず、データを移行するためや、リアルタイムにデータベース同士を連携するソリューションがたくさん出てきています。

弊社のOracle GolenGateはデータ移行や連携に豊富な実績を持つツールですが、その初期コストの高さからミッションクリティカルシステム以外での採用は難しく、かつ、操作も難解でコンサルが必要というステレオタイプなイメージが多くありました。

こうしたイメージを打破するためか、OCI上でクラウド・ネイティブなOCI-Golden Gate（以下、OCI-GGと表記）がリリースされたことにより、こうしたイメージは過去の物となりました。
1時間あたり1 OCPUの料金は100円台となりますので、以下に紹介するOCI-GGをいろいろな場面でぜひご採用ください。

今回はOCI-GGを利用してOracle - Oracleのテーブル連携のための方法をご紹介します。
今後は、Oracle - Streamや、Oracle - OtherCloudといった連携、PL/SQLプロシージャを利用した高度な連携などを示したいと思いますので、ぜひご期待ください。

前提条件：
・ソース（連携元）となるDBとターゲット（連携先）となるDBのインスタンスを起動しておく
・DBA権限のあるユーザーでログインできるようにパスワードを確認しておく

①ソースとターゲットのDBでGoldenGate管理ユーザーを作成する
ソース・ターゲットのDBで共に下記のコマンドを実行してGoldenGate管理ユーザーを作成します。
SQL*Plusを起動して以下を実行してください。

 /*ユーザを作成(CDB構成のため接頭辞としてC##をつけた共通ユーザを作成)*/
 create user "C##OGGADMIN" identified by Welcome#1Welcome#1 default tablespace users temporary tablespace temp quota unlimited on users;
 /*dba権限の付与*/
 grant dba to "C##OGGADMIN" container=all; 
 /*GG実行権限の付与*/
 exec dbms_goldengate_auth.grant_admin_privilege('C##OGGADMIN',container=>'ALL');

②ソースDBのアーカイブログモードの確認
まずはアーカイブログモードの確認方法を記載します。
 /* アーカイブ・ログ・モードの確認 */
 archive log list

③ENABLE_GOLDENGATE_REPLICATIONパラメータの設定
ソースDBにおいて、ENABLE_GOLDENGATE_REPLICATIONパラメータを設定して、GGが利用するデータベースの機能を有効化します。

 /* ENABLE_GOLDENGATE_REPLICATIONパラメータの確認 */
 show parameter enable_goldengate_replication
 /* ENABLE_GOLDENGATE_REPLICATIONパラメータの有効化 */
 alter system set enable_goldengate_replication=true;

④サプリメンタル・ロギングの設定
GoldenGateでは、REDOログファイルを連携することでソースDBとターゲットDBの更新を実施するため、連携元であるソースDBにおいてREDOログファイルを生成するサプリメンタルロギングを設定する必要があります。

/* サプリメンタル・ロギング・モードか、および強制ロギング・モードか確認 */
 select supplemental_log_data_min, force_logging from v$database;

NOの結果が出た場合には下記のコマンドを実行します。
/* サプリメンタル・ロギング・モードの設定 */
 alter database add supplemental log data;
/* 強制ロギング・モードの設定 */
 alter database force logging;

⑤OCI GGデプロイメントの作成
OCIコンソール画面左上の メニュー をクリックし、サービス一覧から Oracle Database、GoldenGate を選択し、GoldenGateのサービス画面を表示します。 
→デプロイメントの作成 をクリックすると作成ウィンドウが立ち上がります。

→以下のようにパラメータを記載します。
<任意>名前
<任意>説明
<必須>OCPU数 - 最小は1、最大は24です。多くの場合、動作確認は1とします。
→実運用の参考値としてREDO生成量が60GB/1時間程度であれば4OCPU＋自動スケーリングを選択してください。
<任意>自動スケーリング - 選択したOCPU数の最大3倍までの間でOCPUの利用率によって自動的にスケーリングされます。スケーリングはダウンタイムなくオンラインで実行され、1時間あたりに消費されたOCPUの実平均が課金対象となります。
<任意>サブネット
<任意>ライセンス・タイプの選択
<任意>拡張オプションの表示 パブリック・エンドポイントの作成、エンドポイントのカスタマイズが可能であることをご確認ください。本チュートリアルではパプリック・エンドポイントにチェックを入れています。)

→次をクリックし、詳細に以下を入力します。
<任意>GoldenGateインスタンス名 - 任意
<任意>管理者ユーザ名 (例:ociggadmin)
<任意>名前管理者パスワード (例:Weblogic11g_Weblogic#12c)
<任意>名前管理者パスワードの確認 

→作成を押下し、デプロイメントが作成されます。

⑥DBの登録
GoldenGateのサービス画面から「登録済みデータベース」を選択します。

→データベースの登録 を選択します。

→詳細欄に以下を入力します
<任意>名前
<任意>別名
<任意>説明
<任意>コンパートメント
<必須>データベースの選択、データベース情報の入力
→OCI上のデータベースを登録する場合には データベースの選択 を選択します。オンプレミス上のデータベース等OCI上にあるデータベース以外を登録する場合には データベース情報の入力 を選択します。 どちらを選択するかによってこの後の入力欄が変化します。
<必須>データベース・システム
→登録したいデータベース・システムを選択します。 BaseDBの場合データベース・システムを選択することでデータベース接続文字列まで自動入力されます。
<任意>データベース・ホーム
<任意>データベース
<任意>データベースFQDN 
<任意>データベース接続文字列
→IPを指定することはできません。データベースFQDNで入力した名前を使用してください。TNS記述、簡易接続記述のどちらも使用可能です。
<任意>データベース・ユーザ名
<任意>データベース・ウォレット
<必須>データベース・IP
→登録したいデータベースのIPを入力してください。（2021/08現在SCAN IPを指定することはできません。RAC構成の場合はローカル・リスナーのVIPを入力してください。）
<任意>サブネット

この作業は、ソースDBとターゲットDBの両方で実施します。

⑦Extractの作成
デプロイメントの詳細画面から コンソールの起動 を選択します。
→OCIGGの設定画面を表示するには、BastionサービスやWindowsサーバーの仮想マシン(IaaS)を起動するなど、OCI-GGが起動しているIPに直接アクセス可能である必要があります。

→Oracle GoldenGate管理サーバー のサインイン画面にてデプロイメント作成時に指定したユーザ名、パスワードを入力してサインインします。

→サインイン後、左上のメニューボタンから 構成 を選択します。

→追加したいデータベースの データベースへの接続 を選択します。

→画面下部に表示されたTRANDATA情報の ＋ ボタンを選択し、抽出したいスキーマ、表、プロシージャを入力していきます。

→ここから実際にExtractを追加していきます。概要 画面に戻り、Extractの ＋ ボタンを選択します。

→抽出タイプ選択画面にて 統合Extract を選択し次へを選択します。

→抽出オプション入力欄に、各項目を入力します。

<必須>プロセス名
<必須>トレイル名
<必須>PDBに登録
<必須>資格証明ドメイン
<必須>資格証明別名

→パラメータ・ファイル入力欄にパラメータを入力します。
自動入力した値に加えてTABLE句を記載します。

→作成および実行 を選択しExtractを作成します。概要 画面にて作成したExtractが表示されます。

⑧チェックポイント表の作成

→構成画面から、ターゲットとなるDBのデータベースへの接続ボタンを選択します。

→画面下部に表示されたチェックポイントの ＋ ボタンを選択し、チェックポイント表の名前を入力します。

⑨Replicatの作成

→概要画面から、Replicatの ＋ ボタンを選択します。

→Replicatタイプ 選択画面から、非統合Replicat を選択します。

→Replicatオプション 入力欄に、各項目を入力します。

<必須>プロセス名
<必須>資格証明ドメイン
<必須>資格証明別名
<必須>トレイル名(extract作成時に指定したトレイル名を入力)
<必須>チェックポイント表(チェックポイント表作成時に指定した表名を入力)

→パラメータ・ファイル 画面にて、Replicatに関するパラメータを入力し、作成および実行を選択します。

<最終チェック>
ここまでで、OCI-GGの設定は完了しました！！
最後に、ソースDBを更新することでターゲットDBに更新が伝搬されるかを確認します。

いかがでしたでしょうか？
はまらなければ、2時間程度で設定可能な内容になるかと思います。
これからもOCI-GG関連の投稿は増やしていきますので、いろいろな用途で使ってみてくださいね！