Progress OpenEdgeを使用すると、Oracle DBMSと友達になる必要があるという事実に直面します。 当初、このバンドルは、Pro2 CDCをインストールして構成するまで、インフラストラクチャの「ボトルネック」でした。Pro2CDCは、Progress DBMSからOracle DBMSにオンラインで直接データを送信できるProgress製品です。 この投稿では、すべての落とし穴とともに、OpenEdgeとOracleと効果的に友達を作る方法を詳細に説明します。
方法:ファイル共有を介してQCDにデータをアップロードする
まず、インフラストラクチャに関するいくつかの事実。 データベースのアクティブユーザーの数は約15,000です。 レプリカとスタンバイを含むすべての本番データベースのボリュームは600 TBで、最大のデータベースは16.5 TBです。 同時に、データベースは絶えず補充されています。昨年だけでも、約120 TBの生産的なデータが追加されています。 このシステムは、x86プラットフォームで150台のフロントエンドサーバーを提供します。 データベースは21のIBMプラットフォームサーバーでホストされます。
フロントシステム、さまざまなABSおよび銀行サービスは、Sonic ESBバスを介してOpenEdge Progress(IHD BISQUIT)と統合されています。 データはファイル交換を通じてQCDにアップロードされます。 特定の時点までのこのようなソリューションには、2つの大きな問題がありました。企業データウェアハウス(QCD)に情報をアップロードする生産性が低いことと、他のシステムとのデータの調整(調整)に時間がかかることです。
したがって、これらのプロセスを加速できるツールを探し始めました。 両方の問題の解決策は、まさに新しいProgress OpenEdge製品であるPro2 CDC(Change Data Capture)でした。 それでは始めましょう。
Progress OpenEdgeおよびPro2Oracleをインストールする
管理者のWindowsコンピューターでPro2 Oracleを実行するには、Progress OpenEdge Developer Kit Classroom Editionをインストールするだけで、無料でダウンロードできます。 OpenEdgeのデフォルトのインストールディレクトリ:
DLC:C:\ Progress \ OpenEdge
WRK:C:\ OpenEdge \ WRK
ETLプロセスには、Progress OpenEdgeバージョン11.7+ライセンス、つまりOracle用のOE DataServerおよび4GL開発システムが必要です。 これらのライセンスはPro2に含まれています。 リモートOracleデータベースでDataServer for Oracleを完全に動作させるには、Full Oracle Clientがインストールされます。
Oracleサーバーに、Oracle Database 12+のバージョンをインストールし、空のデータベースを作成し、ユーザーを追加する必要があります( cdcと呼びましょう)。
Pro2Oracleをインストールするには、 Progress Softwareダウンロードセンターから最新の配布キットをダウンロードします。 アーカイブをC:\ Pro2ディレクトリに解凍します(Unix上でPro2を構成するには、同じ配布キットが使用され、同じ構成原則が適用されます)。
CDCレプリケーションデータベースの作成
cdc(repl)レプリケーションデータベースは、レプリケーションマップ、レプリケートされたデータベースの名前、テーブルなどの構成情報を保存するためにPro2で使用されます。 また、ソースデータベースのテーブル行が変更されたという事実に関するメモで構成されるレプリケーションキューも含まれています。 レプリケーションキューのデータは、ソースデータベースからOracleにコピーする必要がある行を識別するためにETLプロセスによって使用されます。
別のcdcデータベースを作成します。
データベースを作成する手順
pro2adm-Pro2管理パネルから接続するため。
pro2etl-ETLプロセスの接続用(ReplBatch)。
pro2cdc-CDCプロセスの接続用(CDCBatch)。
- データベースサーバーで、cdcデータベースのディレクトリを作成します-たとえば、 / database / cdc / serverに。
- cdcベースのダミーを作成します: procopy $ DLC / empty cdc
- 大きなファイルのサポートを有効にします: proutil cdc -C EnableLargeFiles
- cdcデータベースを起動するスクリプトを準備します。 開始パラメーターは、複製されたデータベースの開始パラメーターに類似している必要があります。
- cdcデータベースを開始します。
- cdcデータベースに接続し、Pro2パッケージに含まれているcdc.dfファイルからPro2ダイアグラムをロードします。
- cdcデータベースで、次のユーザーを作成します。
pro2adm-Pro2管理パネルから接続するため。
pro2etl-ETLプロセスの接続用(ReplBatch)。
pro2cdc-CDCプロセスの接続用(CDCBatch)。
OpenEdge Change Data Captureのアクティブ化
次に、CDCメカニズム自体をオンにして、データを追加の技術分野に複製します。 Progress OpenEdgeソースデータベースごとに、ソースデータの複製先となる個別のストレージエリアを追加し、 proutilコマンドを使用してメカニズム自体をアクティブにする必要があります。
bisquitデータベースの手順例
- C:\ Pro2 \ db ディレクトリからbisquitソースデータベースディレクトリにcdcadd.stファイルをコピーします。
- ReplCDCAreaおよびReplCDCArea_IDXエリアの cdcadd.st固定範囲エクステントについて説明します。 新しいストレージエリアをオンラインで追加できます: prostrct addonline bisquit cdcadd.st
- OpenEdge CDCをアクティブにします。
proutil bisquit -C enablecdcエリア "ReplCDCArea" indexarea "ReplCDCArea_IDX"
- 実行中のプロセスを識別するには、ソースデータベースに次のユーザーを作成する必要があります。
a。 pro2adm-Pro2管理パネルから接続します。
b。 pro2etl-ETLプロセスの接続用(ReplBatch)。
c。 pro2cdc-CDCプロセスの接続用(CDCBatch)。
DataServer for Oracleのスキーマホルダーの作成
次に、Progress DBMSからOracle DBMSへのデータが複製されるサーバー上にデータベーススキーマホルダーを作成する必要があります。 DataServer Schema Holderは、ユーザーまたはアプリケーションデータを持たない空のProgress OpenEdgeデータベースであり、ソーステーブルと外部のOracleテーブルとの間の対応のマップを含んでいます。
Pro2用Oracle用の進行状況OpenEdge DataServerのスキーマホルダーデータベースは、ETLプロセスサーバーに配置する必要があり、ブランチごとに個別に作成されます。
スキーマホルダーを作成する方法
- Pro2ディストリビューションを/ pro2ディレクトリに解凍します
- / pro2 / dbshディレクトリを作成して移動します
- procopy $ DLC / empty bisquitshコマンドを使用して、スキーマホルダーデータベースを作成します。
- bisquitshを必要なエンコーディングに変換します-たとえば、OracleデータベースがUTF-8でエンコードされている場合、UTF-8で: proutil bisquitsh -C convchar convert UTF-8
- 空のbisquitshデータベースを作成した後、シングルユーザーモードで接続します: pro bisquitsh
- データディクショナリに移動します 。 ツール->データディクショナリ-> DataServer-> ORACLE Utilities-> Create DataServer Schema
- スキーマホルダーの起動
- Oracle DataServer Brokerを構成します。
a。 AdminServerを起動します。
proadsv -start
b。 Oracle DataServer Brokerの開始
oraman -name orabroker1 -start
管理パネルと複製スキームを構成する
Pro2管理パネルを使用して、レプリケーションスキームの設定、ETLプロセスプログラム(プロセッサライブラリ)、プライマリ同期プログラム(バルクコピープロセッサ)、レプリケーショントリガー、OpenEdge CDCポリシーの生成など、Pro2設定を構成します。 ETLおよびCDCプロセスを監視および管理するための主要なツールもあります。 まず、パラメーターファイルを構成します。
パラメータファイルの設定方法
- ディレクトリC:\ Pro2 \ bprepl \ Scriptsに移動します
- replProc.pfファイルを編集用に開きます
- cdcレプリケーションデータベースに接続するためのパラメーターを追加します。
#レプリケーションデータベース
-db cdc -ld repl -H <メインデータベースのホスト名> -S <cdcデータベースブローカーのポート>
-U pro2admin -P <パスワード>
- ソースデータベースとスキーマホルダーに接続するためのパラメーターをパラメーターファイルの形式でreplProc.pfに追加します。 パラメータファイルの名前は、接続するソースデータベースの名前と一致する必要があります。
#複製されたすべてのソースBISQUITに接続
-pf bprepl \ scripts \ bisquit.pf
- replProc.pfでスキーマホルダーに接続するためのパラメーターを追加します。
#Target Pro DBスキーマホルダー
-db bisquitsh -ld bisquitsh
-H <ETLプロセスのホスト名>
-S <biskuitshブローカーポート>
-db bisquitsql
-ld bisquitsql
-dt ORACLE
-S 5162 -H <Oracleブローカーホスト名>
-DataService orabroker1
- replProc.pfパラメーターファイルを保存します。
- 次に、 C:\ Pro2 \ bprepl \ Scripts:bisquit.pfディレクトリで、接続された各ソースデータベースのパラメータファイルを作成して編集するために開く必要があります。 各pfファイルには、対応するデータベースに接続するためのパラメーターが登録されています。例えば:
-db bisquit -ld bisquit -H <ホスト名> -S <ブローカーポート>
-U pro2admin -P <パスワード>
Windowsショートカットを構成するには、 C:\ Pro2 \ bprepl \ Scriptsディレクトリに移動し、「Pro2-Administration」ショートカットを編集します。 これを行うには、ショートカットのプロパティを開き、 [開始]行でインストールディレクトリPro2を指定します。 「Pro2-Editor」および「RunBulkLoader」ラベルについても同様の操作を行う必要があります。
Pro2管理の構成:プライマリ構成のダウンロード
コンソールを起動します。
「DBマップ」に移動します。
Pro2-管理でデータベースをリンクするには、[ DBマップ ]タブに移動します。 ソースデータベースのマッピング-Schema Holder-Oracleを追加します 。
[ マッピング ]タブに移動します。 [ ソースデータベース]リストでは、最初に接続されたソースデータベースがデフォルトで選択されています。 リストの右側に[ 接続されているすべてのデータベース]が表示されます-選択したデータベースが接続されています。 bisquitからの進行状況テーブルのリストは、左下に表示されるはずです。 右側には、Oracleデータベースのテーブルのリストがあります。
OracleでのSQLスキーマとデータベースの作成
レプリケーションマップを作成するには、最初にOracleでSQLスキーマを生成する必要があります。 Pro2 Administrationで、メニュー項目[ ツール ] -> [コードの生成 ] -> [ターゲットスキーマ ]を実行し、 [データベースの選択 ]ダイアログボックスで1つ以上のソースデータベースを選択し、右側に転送します。
[OK]をクリックし、ディレクトリを選択してSQLスキーマを保存します。
次に、ベースを作成します。 これは、たとえばOracle SQL Developerを使用して実行できます 。 これを行うには、Oracleデータベースに接続し、スキームをロードしてテーブルを追加します。 Oracleテーブルの構成を変更した後、スキーマホルダーのSQLスキーマを更新する必要があります。
ダウンロードが正常に完了したら、bisquitshデータベースを終了し、Pro2管理パネルを開きます。 右側の[マッピング]タブに、Oracleデータベースのテーブルが表示されます。
マッピングテーブル
Pro2管理パネルでレプリケーションマップを作成するには、[マッピング]タブに移動し、ソースデータベースを選択します。 [テーブルのマップ]をクリックし、左側で[変更テーブルを選択]を選択します。このテーブルはOracleに複製され、右側に転送されて選択が確定されます。 選択したテーブルの場合、マップが自動的に作成されます。 操作を繰り返して、他のソースデータベースのレプリケーションマップを作成します。
Pro2レプリケーションプロセッサライブラリとBulk-Copyプロセッサプログラムの生成
プロセッサライブラリは、Pro2レプリケーションキューを処理し、変更をOracleデータベースにプッシュする特別なレプリケーションプロセス(ETL)用に設計されています。 生成後のレプリケーションプロセッサライブラリプログラムは、 bprepl / repl_procディレクトリ(パラメーターPROC_DIRECTORY)に自動的に保存されます 。 レプリケーションプロセッサライブラリを生成するには、 [ツール]-> [コードの生成]-> [プロセッサライブラリ]に移動します。 生成が完了すると、プログラムはbprepl / repl_procディレクトリに表示されます。
バルクプロセッサプログラムは、Progress ABLプログラミング言語(4GL)に基づいて、ソースProgressデータベースをターゲットOracleデータベースと同期するために使用されます。 それらを生成するには、メニュー項目[ ツール ] -> [コードの生成 ] -> [一括コピープロセッサ ]に移動します。 [データベースの選択]ダイアログボックスで、ソースデータベースを選択し、ウィンドウの右側に転送して、[ OK ]をクリックします。 生成が完了すると、プログラムはbprepl \ repl_mprocディレクトリに表示されます。
Pro2でのレプリケーションプロセスの構成
テーブルを個別のレプリケーションスレッドによって処理されるセットに分割すると、Oracle Pro2のパフォーマンスと効率を向上させることができます。 デフォルトでは、新しいレプリケーションテーブルのレプリケーションマップで作成されたすべての接続はストリーム番号1にバインドされます。テーブルを異なるフローに分割することをお勧めします。
レプリケーションフローのステータスに関する情報は、[レプリケーションステータス]セクションの[モニター]タブの[Pro2管理]画面に表示されます。 パラメータ値の詳細な説明は、Pro2ドキュメント(ディレクトリC:\ Pro2 \ Docs)にあります。
CDCポリシーを作成してアクティブ化する
ポリシーは、テーブルの変更が追跡されるOpenEdge CDCメカニズムの一連のルールです。 執筆時点では、Pro2はレベル0のCDCポリシーのみをサポートしています。つまり、レコード変更の事実のみが追跡されます。
管理パネルでCDCポリシーを作成するには、[マッピング]タブに移動し、ソースデータベースを選択して、[ポリシーの追加/削除]ボタンをクリックします。 開いた[変更の選択]ウィンドウで、左側を選択し、CDCポリシーを作成または削除する必要がある右側のテーブルに移動します。
有効にするには、[マッピング]タブを再度開き、ソースデータベースを選択し、[ (In)Activate Policies ]ボタンをクリックします。 選択して、ポリシーをアクティブにする必要があるテーブルの右側に転送し、[OK]をクリックします。 その後、緑色でマークされます。 (In)Activate Policiesを使用して、CDCポリシーを無効にすることもできます。 すべての操作はオンラインで実行されます。
CDCポリシーをアクティブにした後、変更されたレコードに関するメモは、元のデータベースに従って「ReplCDCArea」ストレージエリアに保存されます。 これらのメモは、特別なCDCBatchプロセスによって処理され、それに基づいてcdc(repl)データベースのPro2レプリケーションキューにメモが作成されます。
したがって、レプリケーション用に2つのキューがあります。 最初の段階はCDCBatchです。ソースデータベースから、データは最初に中間CDCデータベースに送られます。 2番目の段階は、データがCDCデータベースからOracleに注がれるときです。 これは、現在のアーキテクチャと製品自体の機能です。これまでのところ、開発者は直接レプリケーションを確立できませんでした。
プライマリ同期
CDCメカニズムをオンにしてPro2レプリケーションサーバーをセットアップしたら、プライマリ同期を開始する必要があります。 プライマリ同期開始コマンド:
/pro2/bprepl/Script/replLoad.sh bisquit table-name
最初の同期が完了すると、レプリケーションプロセスを開始できます。
レプリケーションプロセスを開始する
レプリケーションプロセスを開始するには、 replbatch.shスクリプトを実行する必要があります。 開始する前に、すべてのスレッド(replbatch1、replbatch2など)のreplbatchスクリプトがあることを確認してください。 すべてが整っている場合は、コマンドライン(たとえば、 proenv)を 開き 、 / bprepl / scriptsディレクトリに移動して、 スクリプトを開始します。 管理パネルで、対応するプロセスがRUNNINGステータスを受け取ったことを確認します。
結果
実装後、企業データウェアハウスへの情報のアップロードを大幅に高速化しました。 データ自体はオンラインでOracleに送られます。 異なるシステムからデータを収集するために、長時間実行されるクエリに時間を費やす必要はありません。 さらに、このソリューションでは、レプリケーションプロセスでデータを圧縮できますが、これも速度にプラスの効果があります。 現在、BISKVITシステムと他のシステムとの毎日の調整には2〜2.5時間ではなく15〜20分かかり、完全な調整には2日ではなく数時間かかりました。