PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices...

25
PL/SQLを使用したOracle GoldenGate Microservicesのオーケストレーション Copyright © 2018 Oracle and/or its affiliates.All rights reserved. 1 PL/SQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Transcript of PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices...

Page 1: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 1

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 2

目次

1 はじめに 3

2 前提条件 5

3 背景 5

31 OGGの新しいアーキテクチャ 5

32 OGGのインストールとデプロイメント 5

33 OGG REST API 6

4 オーケストレーションスクリプトのサンプル 7

41 ADD_ONEWAY_REPLICATION ndash 使用方法 7

411 一方向レプリケーションの設定 9

412 双方向レプリケーションの設定 11

42 レプリケーションコンポーネントの管理 13

421 Extract情報の取得 14

422 Extractパラメータファイルの更新 15

423 Extractの停止 17

424 Extractの削除 18

5 トラブルシューティング 20

6 結論 20

7 付録 - I 20

8 付録 - II 22

9 付録 - III 23

10 参考資料 24

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 3

1 はじめに

Oracle GoldenGate(OGG)Microservices ArchitectureはOGG環境の一部としてRESTに対応したサービスを提供する新しいアーキテクチャです本書は読者がOGG Microservices Architectureの概要と機能に精通していることを前提としていますREST対応のサービスによってHTML5 WebページコマンドラインAPIを使用したリモートでの構成管理監視が可能になります

本書に記載される概要スクリプト情報は学習のみを目的としておりOracle DevelopmentまたはOracle Supportではサポートされませんまた本書のために使用されたテストシステム以外のいかなる環境においても機能は保証されません本書に記載される変更を適用する前に徹底的なテストを実施し機能とパフォーマンスを評価する必要があります

PLSQLを使用してREST APIのサービスを起動することでOGG Microservicesを管理することもできますUTL_HTTPはPLSQLを使用したHTTP(S)呼出しを可能にするPLSQLパッケージですこのデモはUTL_HTTP上に構築されておりOGGデプロイメントへのREST呼出しを行います

本書ではソースデータベースとターゲットデータベース間の一方向レプリケーションと双方向レプリケーションを設定する方法の概要を説明しています本書の例ではオーケストレーションデータベースを利用してPLSQL経由でREST呼出しを行いレプリケーションを設定していますが別個のオーケストレーションデータベースを使用するかどうかは任意です

例ではExtractDistribution pathReplicatなどあらゆるレプリケーションコンポーネントを作成する方法とそれらをリモートオーケストレーションデータベースから起動する方法を示しています

Extractの停止やExtractパラメータファイルの変更など作成したコンポーネントの管理や問合せの概要についても説明しています

このデモで使用する設定の概要

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 4

図1

図1では以下の名称を使用しています

ggorch オーケストレーションデータベースの OGGオーケストレーションユーザー

ggadmin レプリケーションデータベースの OGGレプリケーション管理ユーザー

repdb1repdb2 レプリケーションデータベースの名前

ポート9900 OGGデプロイメントのService Managerポート

gg_repdb1gg_repdb2 OGGデプロイメントのデプロイメント名

エイリアスrepdb1エイリアスrepdb2 OGGデプロイメントの資格証明のエイリアス名

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 5

2 前提条件

デモのオーケストレーションスクリプトは図1で示すように以下の設定を前提としています

bull マシン1にはバージョン122以降のデータベースが搭載されていますデモスクリプトはこのオーケストレーションデータベースにインストールされます

bull マシン2にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

bull マシン3にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

注デモを実行するためにデータベースとOracle GoldenGateデプロイメントのすべての設定を同じマシンでホストさせることが可能です

3 背景

31 OGGの新しいアーキテクチャ

Oracle GoldenGate Microservices Architecture(Oracle GoldenGate MA)はRepresentational State Transfer Application Programming Interface(REST API)を基盤としていますWebベースのインタフェースコマンドラインまたはREST APIを使用してOracle GoldenGateの各サービスを構成監視管理できます

これまでのOGGアーキテクチャと比較してOGG Microservices ArchitectureにはService ManagerAdministration ServerDistribution ServerReceiver Serverなどさまざまなプロセスがあります

(Oracle GoldenGate Microservices Architectureのコンポーネントを参照)

32 OGGのインストールとデプロイメント

Oracle GoldenGate Microservices Architectureのスタートガイドでは新しいアーキテクチャを使用してレプリケーションを設定する手順を詳しく説明していますデプロイメントはセキュアなhttpsを基盤にすることも非セキュアなhttpを基盤にすることもできますOGG REST APIサービスのセキュリティモデルには認証と認可の両方が必要ですセキュリティモデルの詳細についてはセキュアなデプロイメントまたはセキュアでないデプロイメントの設定およびOracle GoldenGate環境の保護を参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 6

セキュアなデプロイメントではクライアントが安全にサーバーに接続できるようVerisignによって発行された認証局(CA)証明書を使用しています

a) Verisign以外のCAによって発行された証明書を使用することもできます

b) 自己署名証明書も使用できます

ORAPKIを使用すると自己署名証明書の作成を試すことができます

本書では認証と認可に基づく証明書用に構成されたセキュアなOGGデプロイメント(HTTPS)向けのサンプルコードのみを提供しています

33 OGG REST API

OGG REST APIを使用するとOGGデプロイメントとレプリケーションサービスを管理できますOGGコンポーネントの作成変更削除または問合せを行うことができますREST APIを使用するための前提条件についてはOGGドキュメントのQuickStartセクションを参照してください

Oracle GoldenGateの各サービス(Service ManagerAdministration ServerDistribution ServerReceiver Server)は異なるポートで実行されますOGG RESTリソースには以下のURL構造を使用してアクセスできます

httplocalhostportまたはhttpslocalhostport(localhostおよびportはOGGサービスが実行されているホストとポートです)

OGGはセキュアな設定(HTTPS)ではポート443のリバースプロキシを使用して構成することもできますリバースプロキシを使用する場合個々のサービスのポートを覚える必要はありません

OGG REST APIの詳細については「REST APIについて」をリバースプロキシ設定の詳細についてはリバースプロキシサポートを参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 7

4 オーケストレーションスクリプトのサンプル

サンプルコードの構成は以下のとおりです

図2

41 ADD_ONEWAY_REPLICATION ndash 使用方法

ADD_ONEWAY_REPLICATION 指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプ

リケーションを設定するサンプルのスタンドアロンPLSQLファンクションです

OGGSERVICEから提供される下位のファンクションを使用します

OGGSERVICE

REST呼出しを使用してさまざまなアクションを所定のOGGデプロイメントで実行でき

る方法を示すパッケージです実行できるアクションは以下のとおりです minus コンポーネントの作成 minus コンポーネントの変更 minus コンポーネントの削除 minus コンポーネントの問合せこれにはOGGHTTPパッケージが使用されます

各アクションでは以下が実行されます 1 アクションのURLの構成 2 アクションのペイロードの構成 3 URLとペイロードを使用したHTTP呼出し 4 レスポンスの処理

OGGHTTP UTL_HTTPを使用してセキュアなHTTP呼出しを行う方法を示すパッケージです

ADD_ONEWAY_REPLICAIONは指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプリケーションを設定するサンプルのスタンドアロンPLSQLファンクションですOGGSERVICEから提供される下位のファンクションを使用します

3つのマシンがあることを前提にレプリケーションの設定について説明しています(上記の図1を参照)

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 8

オーケストレーションDBサイト

bull オーケストレーションデータベースはサンプルオーケストレーションスクリプトがデータベースユーザーGGORCHとしてインストールされた場所に作成されます

bull OGG デ プ ロ イ メ ン ト に 接 続 す る た め の ク ラ イ ア ン ト 証 明 書 は $ORACLE_HOMEadminggorch_walletディレクトリの下に置かれたウォレット内にありますクライアント証明書で指定されたユーザー名には以下に示すREPDB1サイトとREPDB2サイトの両方のOGGデプロイメントに対してREST API呼出しを行う権限があります

REPDB1サイト

bull レプリケーションデータベースrepdb1がレプリケーションソースとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb1がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb1が作成されています

REPDB2サイト

bull レプリケーションデータベースrepdb2がレプリケーションターゲットとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb2がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb2が作成されています

以下の手順をオーケストレーションデータベースで実行しGGORCHユーザーを構成します

注ltabsolute_path_to_client_certificategtは$ORACLE_HOMEadminggorch_walletディレクトリがオーケストレーションデータベースに作成されクライアントウォレットがそのディレクトリにコピーされている場合は省略できますこれはクライアントウォレットを検索するスクリプトによって使用されるデフォルトディレクトリです

SQLgt connect sys as sysdba SQLgt grant dba to ggorch identified by ltpasswordgt SQLgt oggorch_setup ggorch ltabsolute_path_to_client_certificategt SQLgt connect ggorch SQLgt orchestration_db_setupsql

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 2: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 2

目次

1 はじめに 3

2 前提条件 5

3 背景 5

31 OGGの新しいアーキテクチャ 5

32 OGGのインストールとデプロイメント 5

33 OGG REST API 6

4 オーケストレーションスクリプトのサンプル 7

41 ADD_ONEWAY_REPLICATION ndash 使用方法 7

411 一方向レプリケーションの設定 9

412 双方向レプリケーションの設定 11

42 レプリケーションコンポーネントの管理 13

421 Extract情報の取得 14

422 Extractパラメータファイルの更新 15

423 Extractの停止 17

424 Extractの削除 18

5 トラブルシューティング 20

6 結論 20

7 付録 - I 20

8 付録 - II 22

9 付録 - III 23

10 参考資料 24

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 3

1 はじめに

Oracle GoldenGate(OGG)Microservices ArchitectureはOGG環境の一部としてRESTに対応したサービスを提供する新しいアーキテクチャです本書は読者がOGG Microservices Architectureの概要と機能に精通していることを前提としていますREST対応のサービスによってHTML5 WebページコマンドラインAPIを使用したリモートでの構成管理監視が可能になります

本書に記載される概要スクリプト情報は学習のみを目的としておりOracle DevelopmentまたはOracle Supportではサポートされませんまた本書のために使用されたテストシステム以外のいかなる環境においても機能は保証されません本書に記載される変更を適用する前に徹底的なテストを実施し機能とパフォーマンスを評価する必要があります

PLSQLを使用してREST APIのサービスを起動することでOGG Microservicesを管理することもできますUTL_HTTPはPLSQLを使用したHTTP(S)呼出しを可能にするPLSQLパッケージですこのデモはUTL_HTTP上に構築されておりOGGデプロイメントへのREST呼出しを行います

本書ではソースデータベースとターゲットデータベース間の一方向レプリケーションと双方向レプリケーションを設定する方法の概要を説明しています本書の例ではオーケストレーションデータベースを利用してPLSQL経由でREST呼出しを行いレプリケーションを設定していますが別個のオーケストレーションデータベースを使用するかどうかは任意です

例ではExtractDistribution pathReplicatなどあらゆるレプリケーションコンポーネントを作成する方法とそれらをリモートオーケストレーションデータベースから起動する方法を示しています

Extractの停止やExtractパラメータファイルの変更など作成したコンポーネントの管理や問合せの概要についても説明しています

このデモで使用する設定の概要

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 4

図1

図1では以下の名称を使用しています

ggorch オーケストレーションデータベースの OGGオーケストレーションユーザー

ggadmin レプリケーションデータベースの OGGレプリケーション管理ユーザー

repdb1repdb2 レプリケーションデータベースの名前

ポート9900 OGGデプロイメントのService Managerポート

gg_repdb1gg_repdb2 OGGデプロイメントのデプロイメント名

エイリアスrepdb1エイリアスrepdb2 OGGデプロイメントの資格証明のエイリアス名

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 5

2 前提条件

デモのオーケストレーションスクリプトは図1で示すように以下の設定を前提としています

bull マシン1にはバージョン122以降のデータベースが搭載されていますデモスクリプトはこのオーケストレーションデータベースにインストールされます

bull マシン2にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

bull マシン3にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

注デモを実行するためにデータベースとOracle GoldenGateデプロイメントのすべての設定を同じマシンでホストさせることが可能です

3 背景

31 OGGの新しいアーキテクチャ

Oracle GoldenGate Microservices Architecture(Oracle GoldenGate MA)はRepresentational State Transfer Application Programming Interface(REST API)を基盤としていますWebベースのインタフェースコマンドラインまたはREST APIを使用してOracle GoldenGateの各サービスを構成監視管理できます

これまでのOGGアーキテクチャと比較してOGG Microservices ArchitectureにはService ManagerAdministration ServerDistribution ServerReceiver Serverなどさまざまなプロセスがあります

(Oracle GoldenGate Microservices Architectureのコンポーネントを参照)

32 OGGのインストールとデプロイメント

Oracle GoldenGate Microservices Architectureのスタートガイドでは新しいアーキテクチャを使用してレプリケーションを設定する手順を詳しく説明していますデプロイメントはセキュアなhttpsを基盤にすることも非セキュアなhttpを基盤にすることもできますOGG REST APIサービスのセキュリティモデルには認証と認可の両方が必要ですセキュリティモデルの詳細についてはセキュアなデプロイメントまたはセキュアでないデプロイメントの設定およびOracle GoldenGate環境の保護を参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 6

セキュアなデプロイメントではクライアントが安全にサーバーに接続できるようVerisignによって発行された認証局(CA)証明書を使用しています

a) Verisign以外のCAによって発行された証明書を使用することもできます

b) 自己署名証明書も使用できます

ORAPKIを使用すると自己署名証明書の作成を試すことができます

本書では認証と認可に基づく証明書用に構成されたセキュアなOGGデプロイメント(HTTPS)向けのサンプルコードのみを提供しています

33 OGG REST API

OGG REST APIを使用するとOGGデプロイメントとレプリケーションサービスを管理できますOGGコンポーネントの作成変更削除または問合せを行うことができますREST APIを使用するための前提条件についてはOGGドキュメントのQuickStartセクションを参照してください

Oracle GoldenGateの各サービス(Service ManagerAdministration ServerDistribution ServerReceiver Server)は異なるポートで実行されますOGG RESTリソースには以下のURL構造を使用してアクセスできます

httplocalhostportまたはhttpslocalhostport(localhostおよびportはOGGサービスが実行されているホストとポートです)

OGGはセキュアな設定(HTTPS)ではポート443のリバースプロキシを使用して構成することもできますリバースプロキシを使用する場合個々のサービスのポートを覚える必要はありません

OGG REST APIの詳細については「REST APIについて」をリバースプロキシ設定の詳細についてはリバースプロキシサポートを参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 7

4 オーケストレーションスクリプトのサンプル

サンプルコードの構成は以下のとおりです

図2

41 ADD_ONEWAY_REPLICATION ndash 使用方法

ADD_ONEWAY_REPLICATION 指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプ

リケーションを設定するサンプルのスタンドアロンPLSQLファンクションです

OGGSERVICEから提供される下位のファンクションを使用します

OGGSERVICE

REST呼出しを使用してさまざまなアクションを所定のOGGデプロイメントで実行でき

る方法を示すパッケージです実行できるアクションは以下のとおりです minus コンポーネントの作成 minus コンポーネントの変更 minus コンポーネントの削除 minus コンポーネントの問合せこれにはOGGHTTPパッケージが使用されます

各アクションでは以下が実行されます 1 アクションのURLの構成 2 アクションのペイロードの構成 3 URLとペイロードを使用したHTTP呼出し 4 レスポンスの処理

OGGHTTP UTL_HTTPを使用してセキュアなHTTP呼出しを行う方法を示すパッケージです

ADD_ONEWAY_REPLICAIONは指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプリケーションを設定するサンプルのスタンドアロンPLSQLファンクションですOGGSERVICEから提供される下位のファンクションを使用します

3つのマシンがあることを前提にレプリケーションの設定について説明しています(上記の図1を参照)

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 8

オーケストレーションDBサイト

bull オーケストレーションデータベースはサンプルオーケストレーションスクリプトがデータベースユーザーGGORCHとしてインストールされた場所に作成されます

bull OGG デ プ ロ イ メ ン ト に 接 続 す る た め の ク ラ イ ア ン ト 証 明 書 は $ORACLE_HOMEadminggorch_walletディレクトリの下に置かれたウォレット内にありますクライアント証明書で指定されたユーザー名には以下に示すREPDB1サイトとREPDB2サイトの両方のOGGデプロイメントに対してREST API呼出しを行う権限があります

REPDB1サイト

bull レプリケーションデータベースrepdb1がレプリケーションソースとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb1がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb1が作成されています

REPDB2サイト

bull レプリケーションデータベースrepdb2がレプリケーションターゲットとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb2がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb2が作成されています

以下の手順をオーケストレーションデータベースで実行しGGORCHユーザーを構成します

注ltabsolute_path_to_client_certificategtは$ORACLE_HOMEadminggorch_walletディレクトリがオーケストレーションデータベースに作成されクライアントウォレットがそのディレクトリにコピーされている場合は省略できますこれはクライアントウォレットを検索するスクリプトによって使用されるデフォルトディレクトリです

SQLgt connect sys as sysdba SQLgt grant dba to ggorch identified by ltpasswordgt SQLgt oggorch_setup ggorch ltabsolute_path_to_client_certificategt SQLgt connect ggorch SQLgt orchestration_db_setupsql

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 3: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 3

1 はじめに

Oracle GoldenGate(OGG)Microservices ArchitectureはOGG環境の一部としてRESTに対応したサービスを提供する新しいアーキテクチャです本書は読者がOGG Microservices Architectureの概要と機能に精通していることを前提としていますREST対応のサービスによってHTML5 WebページコマンドラインAPIを使用したリモートでの構成管理監視が可能になります

本書に記載される概要スクリプト情報は学習のみを目的としておりOracle DevelopmentまたはOracle Supportではサポートされませんまた本書のために使用されたテストシステム以外のいかなる環境においても機能は保証されません本書に記載される変更を適用する前に徹底的なテストを実施し機能とパフォーマンスを評価する必要があります

PLSQLを使用してREST APIのサービスを起動することでOGG Microservicesを管理することもできますUTL_HTTPはPLSQLを使用したHTTP(S)呼出しを可能にするPLSQLパッケージですこのデモはUTL_HTTP上に構築されておりOGGデプロイメントへのREST呼出しを行います

本書ではソースデータベースとターゲットデータベース間の一方向レプリケーションと双方向レプリケーションを設定する方法の概要を説明しています本書の例ではオーケストレーションデータベースを利用してPLSQL経由でREST呼出しを行いレプリケーションを設定していますが別個のオーケストレーションデータベースを使用するかどうかは任意です

例ではExtractDistribution pathReplicatなどあらゆるレプリケーションコンポーネントを作成する方法とそれらをリモートオーケストレーションデータベースから起動する方法を示しています

Extractの停止やExtractパラメータファイルの変更など作成したコンポーネントの管理や問合せの概要についても説明しています

このデモで使用する設定の概要

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 4

図1

図1では以下の名称を使用しています

ggorch オーケストレーションデータベースの OGGオーケストレーションユーザー

ggadmin レプリケーションデータベースの OGGレプリケーション管理ユーザー

repdb1repdb2 レプリケーションデータベースの名前

ポート9900 OGGデプロイメントのService Managerポート

gg_repdb1gg_repdb2 OGGデプロイメントのデプロイメント名

エイリアスrepdb1エイリアスrepdb2 OGGデプロイメントの資格証明のエイリアス名

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 5

2 前提条件

デモのオーケストレーションスクリプトは図1で示すように以下の設定を前提としています

bull マシン1にはバージョン122以降のデータベースが搭載されていますデモスクリプトはこのオーケストレーションデータベースにインストールされます

bull マシン2にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

bull マシン3にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

注デモを実行するためにデータベースとOracle GoldenGateデプロイメントのすべての設定を同じマシンでホストさせることが可能です

3 背景

31 OGGの新しいアーキテクチャ

Oracle GoldenGate Microservices Architecture(Oracle GoldenGate MA)はRepresentational State Transfer Application Programming Interface(REST API)を基盤としていますWebベースのインタフェースコマンドラインまたはREST APIを使用してOracle GoldenGateの各サービスを構成監視管理できます

これまでのOGGアーキテクチャと比較してOGG Microservices ArchitectureにはService ManagerAdministration ServerDistribution ServerReceiver Serverなどさまざまなプロセスがあります

(Oracle GoldenGate Microservices Architectureのコンポーネントを参照)

32 OGGのインストールとデプロイメント

Oracle GoldenGate Microservices Architectureのスタートガイドでは新しいアーキテクチャを使用してレプリケーションを設定する手順を詳しく説明していますデプロイメントはセキュアなhttpsを基盤にすることも非セキュアなhttpを基盤にすることもできますOGG REST APIサービスのセキュリティモデルには認証と認可の両方が必要ですセキュリティモデルの詳細についてはセキュアなデプロイメントまたはセキュアでないデプロイメントの設定およびOracle GoldenGate環境の保護を参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 6

セキュアなデプロイメントではクライアントが安全にサーバーに接続できるようVerisignによって発行された認証局(CA)証明書を使用しています

a) Verisign以外のCAによって発行された証明書を使用することもできます

b) 自己署名証明書も使用できます

ORAPKIを使用すると自己署名証明書の作成を試すことができます

本書では認証と認可に基づく証明書用に構成されたセキュアなOGGデプロイメント(HTTPS)向けのサンプルコードのみを提供しています

33 OGG REST API

OGG REST APIを使用するとOGGデプロイメントとレプリケーションサービスを管理できますOGGコンポーネントの作成変更削除または問合せを行うことができますREST APIを使用するための前提条件についてはOGGドキュメントのQuickStartセクションを参照してください

Oracle GoldenGateの各サービス(Service ManagerAdministration ServerDistribution ServerReceiver Server)は異なるポートで実行されますOGG RESTリソースには以下のURL構造を使用してアクセスできます

httplocalhostportまたはhttpslocalhostport(localhostおよびportはOGGサービスが実行されているホストとポートです)

OGGはセキュアな設定(HTTPS)ではポート443のリバースプロキシを使用して構成することもできますリバースプロキシを使用する場合個々のサービスのポートを覚える必要はありません

OGG REST APIの詳細については「REST APIについて」をリバースプロキシ設定の詳細についてはリバースプロキシサポートを参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 7

4 オーケストレーションスクリプトのサンプル

サンプルコードの構成は以下のとおりです

図2

41 ADD_ONEWAY_REPLICATION ndash 使用方法

ADD_ONEWAY_REPLICATION 指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプ

リケーションを設定するサンプルのスタンドアロンPLSQLファンクションです

OGGSERVICEから提供される下位のファンクションを使用します

OGGSERVICE

REST呼出しを使用してさまざまなアクションを所定のOGGデプロイメントで実行でき

る方法を示すパッケージです実行できるアクションは以下のとおりです minus コンポーネントの作成 minus コンポーネントの変更 minus コンポーネントの削除 minus コンポーネントの問合せこれにはOGGHTTPパッケージが使用されます

各アクションでは以下が実行されます 1 アクションのURLの構成 2 アクションのペイロードの構成 3 URLとペイロードを使用したHTTP呼出し 4 レスポンスの処理

OGGHTTP UTL_HTTPを使用してセキュアなHTTP呼出しを行う方法を示すパッケージです

ADD_ONEWAY_REPLICAIONは指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプリケーションを設定するサンプルのスタンドアロンPLSQLファンクションですOGGSERVICEから提供される下位のファンクションを使用します

3つのマシンがあることを前提にレプリケーションの設定について説明しています(上記の図1を参照)

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 8

オーケストレーションDBサイト

bull オーケストレーションデータベースはサンプルオーケストレーションスクリプトがデータベースユーザーGGORCHとしてインストールされた場所に作成されます

bull OGG デ プ ロ イ メ ン ト に 接 続 す る た め の ク ラ イ ア ン ト 証 明 書 は $ORACLE_HOMEadminggorch_walletディレクトリの下に置かれたウォレット内にありますクライアント証明書で指定されたユーザー名には以下に示すREPDB1サイトとREPDB2サイトの両方のOGGデプロイメントに対してREST API呼出しを行う権限があります

REPDB1サイト

bull レプリケーションデータベースrepdb1がレプリケーションソースとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb1がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb1が作成されています

REPDB2サイト

bull レプリケーションデータベースrepdb2がレプリケーションターゲットとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb2がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb2が作成されています

以下の手順をオーケストレーションデータベースで実行しGGORCHユーザーを構成します

注ltabsolute_path_to_client_certificategtは$ORACLE_HOMEadminggorch_walletディレクトリがオーケストレーションデータベースに作成されクライアントウォレットがそのディレクトリにコピーされている場合は省略できますこれはクライアントウォレットを検索するスクリプトによって使用されるデフォルトディレクトリです

SQLgt connect sys as sysdba SQLgt grant dba to ggorch identified by ltpasswordgt SQLgt oggorch_setup ggorch ltabsolute_path_to_client_certificategt SQLgt connect ggorch SQLgt orchestration_db_setupsql

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 4: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 4

図1

図1では以下の名称を使用しています

ggorch オーケストレーションデータベースの OGGオーケストレーションユーザー

ggadmin レプリケーションデータベースの OGGレプリケーション管理ユーザー

repdb1repdb2 レプリケーションデータベースの名前

ポート9900 OGGデプロイメントのService Managerポート

gg_repdb1gg_repdb2 OGGデプロイメントのデプロイメント名

エイリアスrepdb1エイリアスrepdb2 OGGデプロイメントの資格証明のエイリアス名

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 5

2 前提条件

デモのオーケストレーションスクリプトは図1で示すように以下の設定を前提としています

bull マシン1にはバージョン122以降のデータベースが搭載されていますデモスクリプトはこのオーケストレーションデータベースにインストールされます

bull マシン2にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

bull マシン3にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

注デモを実行するためにデータベースとOracle GoldenGateデプロイメントのすべての設定を同じマシンでホストさせることが可能です

3 背景

31 OGGの新しいアーキテクチャ

Oracle GoldenGate Microservices Architecture(Oracle GoldenGate MA)はRepresentational State Transfer Application Programming Interface(REST API)を基盤としていますWebベースのインタフェースコマンドラインまたはREST APIを使用してOracle GoldenGateの各サービスを構成監視管理できます

これまでのOGGアーキテクチャと比較してOGG Microservices ArchitectureにはService ManagerAdministration ServerDistribution ServerReceiver Serverなどさまざまなプロセスがあります

(Oracle GoldenGate Microservices Architectureのコンポーネントを参照)

32 OGGのインストールとデプロイメント

Oracle GoldenGate Microservices Architectureのスタートガイドでは新しいアーキテクチャを使用してレプリケーションを設定する手順を詳しく説明していますデプロイメントはセキュアなhttpsを基盤にすることも非セキュアなhttpを基盤にすることもできますOGG REST APIサービスのセキュリティモデルには認証と認可の両方が必要ですセキュリティモデルの詳細についてはセキュアなデプロイメントまたはセキュアでないデプロイメントの設定およびOracle GoldenGate環境の保護を参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 6

セキュアなデプロイメントではクライアントが安全にサーバーに接続できるようVerisignによって発行された認証局(CA)証明書を使用しています

a) Verisign以外のCAによって発行された証明書を使用することもできます

b) 自己署名証明書も使用できます

ORAPKIを使用すると自己署名証明書の作成を試すことができます

本書では認証と認可に基づく証明書用に構成されたセキュアなOGGデプロイメント(HTTPS)向けのサンプルコードのみを提供しています

33 OGG REST API

OGG REST APIを使用するとOGGデプロイメントとレプリケーションサービスを管理できますOGGコンポーネントの作成変更削除または問合せを行うことができますREST APIを使用するための前提条件についてはOGGドキュメントのQuickStartセクションを参照してください

Oracle GoldenGateの各サービス(Service ManagerAdministration ServerDistribution ServerReceiver Server)は異なるポートで実行されますOGG RESTリソースには以下のURL構造を使用してアクセスできます

httplocalhostportまたはhttpslocalhostport(localhostおよびportはOGGサービスが実行されているホストとポートです)

OGGはセキュアな設定(HTTPS)ではポート443のリバースプロキシを使用して構成することもできますリバースプロキシを使用する場合個々のサービスのポートを覚える必要はありません

OGG REST APIの詳細については「REST APIについて」をリバースプロキシ設定の詳細についてはリバースプロキシサポートを参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 7

4 オーケストレーションスクリプトのサンプル

サンプルコードの構成は以下のとおりです

図2

41 ADD_ONEWAY_REPLICATION ndash 使用方法

ADD_ONEWAY_REPLICATION 指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプ

リケーションを設定するサンプルのスタンドアロンPLSQLファンクションです

OGGSERVICEから提供される下位のファンクションを使用します

OGGSERVICE

REST呼出しを使用してさまざまなアクションを所定のOGGデプロイメントで実行でき

る方法を示すパッケージです実行できるアクションは以下のとおりです minus コンポーネントの作成 minus コンポーネントの変更 minus コンポーネントの削除 minus コンポーネントの問合せこれにはOGGHTTPパッケージが使用されます

各アクションでは以下が実行されます 1 アクションのURLの構成 2 アクションのペイロードの構成 3 URLとペイロードを使用したHTTP呼出し 4 レスポンスの処理

OGGHTTP UTL_HTTPを使用してセキュアなHTTP呼出しを行う方法を示すパッケージです

ADD_ONEWAY_REPLICAIONは指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプリケーションを設定するサンプルのスタンドアロンPLSQLファンクションですOGGSERVICEから提供される下位のファンクションを使用します

3つのマシンがあることを前提にレプリケーションの設定について説明しています(上記の図1を参照)

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 8

オーケストレーションDBサイト

bull オーケストレーションデータベースはサンプルオーケストレーションスクリプトがデータベースユーザーGGORCHとしてインストールされた場所に作成されます

bull OGG デ プ ロ イ メ ン ト に 接 続 す る た め の ク ラ イ ア ン ト 証 明 書 は $ORACLE_HOMEadminggorch_walletディレクトリの下に置かれたウォレット内にありますクライアント証明書で指定されたユーザー名には以下に示すREPDB1サイトとREPDB2サイトの両方のOGGデプロイメントに対してREST API呼出しを行う権限があります

REPDB1サイト

bull レプリケーションデータベースrepdb1がレプリケーションソースとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb1がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb1が作成されています

REPDB2サイト

bull レプリケーションデータベースrepdb2がレプリケーションターゲットとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb2がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb2が作成されています

以下の手順をオーケストレーションデータベースで実行しGGORCHユーザーを構成します

注ltabsolute_path_to_client_certificategtは$ORACLE_HOMEadminggorch_walletディレクトリがオーケストレーションデータベースに作成されクライアントウォレットがそのディレクトリにコピーされている場合は省略できますこれはクライアントウォレットを検索するスクリプトによって使用されるデフォルトディレクトリです

SQLgt connect sys as sysdba SQLgt grant dba to ggorch identified by ltpasswordgt SQLgt oggorch_setup ggorch ltabsolute_path_to_client_certificategt SQLgt connect ggorch SQLgt orchestration_db_setupsql

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 5: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 5

2 前提条件

デモのオーケストレーションスクリプトは図1で示すように以下の設定を前提としています

bull マシン1にはバージョン122以降のデータベースが搭載されていますデモスクリプトはこのオーケストレーションデータベースにインストールされます

bull マシン2にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

bull マシン3にはレプリケーションデータベースが設定されOracle GoldenGate Microservicesがデプロイされています

注デモを実行するためにデータベースとOracle GoldenGateデプロイメントのすべての設定を同じマシンでホストさせることが可能です

3 背景

31 OGGの新しいアーキテクチャ

Oracle GoldenGate Microservices Architecture(Oracle GoldenGate MA)はRepresentational State Transfer Application Programming Interface(REST API)を基盤としていますWebベースのインタフェースコマンドラインまたはREST APIを使用してOracle GoldenGateの各サービスを構成監視管理できます

これまでのOGGアーキテクチャと比較してOGG Microservices ArchitectureにはService ManagerAdministration ServerDistribution ServerReceiver Serverなどさまざまなプロセスがあります

(Oracle GoldenGate Microservices Architectureのコンポーネントを参照)

32 OGGのインストールとデプロイメント

Oracle GoldenGate Microservices Architectureのスタートガイドでは新しいアーキテクチャを使用してレプリケーションを設定する手順を詳しく説明していますデプロイメントはセキュアなhttpsを基盤にすることも非セキュアなhttpを基盤にすることもできますOGG REST APIサービスのセキュリティモデルには認証と認可の両方が必要ですセキュリティモデルの詳細についてはセキュアなデプロイメントまたはセキュアでないデプロイメントの設定およびOracle GoldenGate環境の保護を参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 6

セキュアなデプロイメントではクライアントが安全にサーバーに接続できるようVerisignによって発行された認証局(CA)証明書を使用しています

a) Verisign以外のCAによって発行された証明書を使用することもできます

b) 自己署名証明書も使用できます

ORAPKIを使用すると自己署名証明書の作成を試すことができます

本書では認証と認可に基づく証明書用に構成されたセキュアなOGGデプロイメント(HTTPS)向けのサンプルコードのみを提供しています

33 OGG REST API

OGG REST APIを使用するとOGGデプロイメントとレプリケーションサービスを管理できますOGGコンポーネントの作成変更削除または問合せを行うことができますREST APIを使用するための前提条件についてはOGGドキュメントのQuickStartセクションを参照してください

Oracle GoldenGateの各サービス(Service ManagerAdministration ServerDistribution ServerReceiver Server)は異なるポートで実行されますOGG RESTリソースには以下のURL構造を使用してアクセスできます

httplocalhostportまたはhttpslocalhostport(localhostおよびportはOGGサービスが実行されているホストとポートです)

OGGはセキュアな設定(HTTPS)ではポート443のリバースプロキシを使用して構成することもできますリバースプロキシを使用する場合個々のサービスのポートを覚える必要はありません

OGG REST APIの詳細については「REST APIについて」をリバースプロキシ設定の詳細についてはリバースプロキシサポートを参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 7

4 オーケストレーションスクリプトのサンプル

サンプルコードの構成は以下のとおりです

図2

41 ADD_ONEWAY_REPLICATION ndash 使用方法

ADD_ONEWAY_REPLICATION 指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプ

リケーションを設定するサンプルのスタンドアロンPLSQLファンクションです

OGGSERVICEから提供される下位のファンクションを使用します

OGGSERVICE

REST呼出しを使用してさまざまなアクションを所定のOGGデプロイメントで実行でき

る方法を示すパッケージです実行できるアクションは以下のとおりです minus コンポーネントの作成 minus コンポーネントの変更 minus コンポーネントの削除 minus コンポーネントの問合せこれにはOGGHTTPパッケージが使用されます

各アクションでは以下が実行されます 1 アクションのURLの構成 2 アクションのペイロードの構成 3 URLとペイロードを使用したHTTP呼出し 4 レスポンスの処理

OGGHTTP UTL_HTTPを使用してセキュアなHTTP呼出しを行う方法を示すパッケージです

ADD_ONEWAY_REPLICAIONは指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプリケーションを設定するサンプルのスタンドアロンPLSQLファンクションですOGGSERVICEから提供される下位のファンクションを使用します

3つのマシンがあることを前提にレプリケーションの設定について説明しています(上記の図1を参照)

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 8

オーケストレーションDBサイト

bull オーケストレーションデータベースはサンプルオーケストレーションスクリプトがデータベースユーザーGGORCHとしてインストールされた場所に作成されます

bull OGG デ プ ロ イ メ ン ト に 接 続 す る た め の ク ラ イ ア ン ト 証 明 書 は $ORACLE_HOMEadminggorch_walletディレクトリの下に置かれたウォレット内にありますクライアント証明書で指定されたユーザー名には以下に示すREPDB1サイトとREPDB2サイトの両方のOGGデプロイメントに対してREST API呼出しを行う権限があります

REPDB1サイト

bull レプリケーションデータベースrepdb1がレプリケーションソースとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb1がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb1が作成されています

REPDB2サイト

bull レプリケーションデータベースrepdb2がレプリケーションターゲットとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb2がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb2が作成されています

以下の手順をオーケストレーションデータベースで実行しGGORCHユーザーを構成します

注ltabsolute_path_to_client_certificategtは$ORACLE_HOMEadminggorch_walletディレクトリがオーケストレーションデータベースに作成されクライアントウォレットがそのディレクトリにコピーされている場合は省略できますこれはクライアントウォレットを検索するスクリプトによって使用されるデフォルトディレクトリです

SQLgt connect sys as sysdba SQLgt grant dba to ggorch identified by ltpasswordgt SQLgt oggorch_setup ggorch ltabsolute_path_to_client_certificategt SQLgt connect ggorch SQLgt orchestration_db_setupsql

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 6: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 6

セキュアなデプロイメントではクライアントが安全にサーバーに接続できるようVerisignによって発行された認証局(CA)証明書を使用しています

a) Verisign以外のCAによって発行された証明書を使用することもできます

b) 自己署名証明書も使用できます

ORAPKIを使用すると自己署名証明書の作成を試すことができます

本書では認証と認可に基づく証明書用に構成されたセキュアなOGGデプロイメント(HTTPS)向けのサンプルコードのみを提供しています

33 OGG REST API

OGG REST APIを使用するとOGGデプロイメントとレプリケーションサービスを管理できますOGGコンポーネントの作成変更削除または問合せを行うことができますREST APIを使用するための前提条件についてはOGGドキュメントのQuickStartセクションを参照してください

Oracle GoldenGateの各サービス(Service ManagerAdministration ServerDistribution ServerReceiver Server)は異なるポートで実行されますOGG RESTリソースには以下のURL構造を使用してアクセスできます

httplocalhostportまたはhttpslocalhostport(localhostおよびportはOGGサービスが実行されているホストとポートです)

OGGはセキュアな設定(HTTPS)ではポート443のリバースプロキシを使用して構成することもできますリバースプロキシを使用する場合個々のサービスのポートを覚える必要はありません

OGG REST APIの詳細については「REST APIについて」をリバースプロキシ設定の詳細についてはリバースプロキシサポートを参照してください

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 7

4 オーケストレーションスクリプトのサンプル

サンプルコードの構成は以下のとおりです

図2

41 ADD_ONEWAY_REPLICATION ndash 使用方法

ADD_ONEWAY_REPLICATION 指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプ

リケーションを設定するサンプルのスタンドアロンPLSQLファンクションです

OGGSERVICEから提供される下位のファンクションを使用します

OGGSERVICE

REST呼出しを使用してさまざまなアクションを所定のOGGデプロイメントで実行でき

る方法を示すパッケージです実行できるアクションは以下のとおりです minus コンポーネントの作成 minus コンポーネントの変更 minus コンポーネントの削除 minus コンポーネントの問合せこれにはOGGHTTPパッケージが使用されます

各アクションでは以下が実行されます 1 アクションのURLの構成 2 アクションのペイロードの構成 3 URLとペイロードを使用したHTTP呼出し 4 レスポンスの処理

OGGHTTP UTL_HTTPを使用してセキュアなHTTP呼出しを行う方法を示すパッケージです

ADD_ONEWAY_REPLICAIONは指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプリケーションを設定するサンプルのスタンドアロンPLSQLファンクションですOGGSERVICEから提供される下位のファンクションを使用します

3つのマシンがあることを前提にレプリケーションの設定について説明しています(上記の図1を参照)

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 8

オーケストレーションDBサイト

bull オーケストレーションデータベースはサンプルオーケストレーションスクリプトがデータベースユーザーGGORCHとしてインストールされた場所に作成されます

bull OGG デ プ ロ イ メ ン ト に 接 続 す る た め の ク ラ イ ア ン ト 証 明 書 は $ORACLE_HOMEadminggorch_walletディレクトリの下に置かれたウォレット内にありますクライアント証明書で指定されたユーザー名には以下に示すREPDB1サイトとREPDB2サイトの両方のOGGデプロイメントに対してREST API呼出しを行う権限があります

REPDB1サイト

bull レプリケーションデータベースrepdb1がレプリケーションソースとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb1がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb1が作成されています

REPDB2サイト

bull レプリケーションデータベースrepdb2がレプリケーションターゲットとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb2がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb2が作成されています

以下の手順をオーケストレーションデータベースで実行しGGORCHユーザーを構成します

注ltabsolute_path_to_client_certificategtは$ORACLE_HOMEadminggorch_walletディレクトリがオーケストレーションデータベースに作成されクライアントウォレットがそのディレクトリにコピーされている場合は省略できますこれはクライアントウォレットを検索するスクリプトによって使用されるデフォルトディレクトリです

SQLgt connect sys as sysdba SQLgt grant dba to ggorch identified by ltpasswordgt SQLgt oggorch_setup ggorch ltabsolute_path_to_client_certificategt SQLgt connect ggorch SQLgt orchestration_db_setupsql

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 7: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 7

4 オーケストレーションスクリプトのサンプル

サンプルコードの構成は以下のとおりです

図2

41 ADD_ONEWAY_REPLICATION ndash 使用方法

ADD_ONEWAY_REPLICATION 指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプ

リケーションを設定するサンプルのスタンドアロンPLSQLファンクションです

OGGSERVICEから提供される下位のファンクションを使用します

OGGSERVICE

REST呼出しを使用してさまざまなアクションを所定のOGGデプロイメントで実行でき

る方法を示すパッケージです実行できるアクションは以下のとおりです minus コンポーネントの作成 minus コンポーネントの変更 minus コンポーネントの削除 minus コンポーネントの問合せこれにはOGGHTTPパッケージが使用されます

各アクションでは以下が実行されます 1 アクションのURLの構成 2 アクションのペイロードの構成 3 URLとペイロードを使用したHTTP呼出し 4 レスポンスの処理

OGGHTTP UTL_HTTPを使用してセキュアなHTTP呼出しを行う方法を示すパッケージです

ADD_ONEWAY_REPLICAIONは指定した表のソースデータベースとターゲットデータベース間の単純な一方向レプリケーションを設定するサンプルのスタンドアロンPLSQLファンクションですOGGSERVICEから提供される下位のファンクションを使用します

3つのマシンがあることを前提にレプリケーションの設定について説明しています(上記の図1を参照)

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 8

オーケストレーションDBサイト

bull オーケストレーションデータベースはサンプルオーケストレーションスクリプトがデータベースユーザーGGORCHとしてインストールされた場所に作成されます

bull OGG デ プ ロ イ メ ン ト に 接 続 す る た め の ク ラ イ ア ン ト 証 明 書 は $ORACLE_HOMEadminggorch_walletディレクトリの下に置かれたウォレット内にありますクライアント証明書で指定されたユーザー名には以下に示すREPDB1サイトとREPDB2サイトの両方のOGGデプロイメントに対してREST API呼出しを行う権限があります

REPDB1サイト

bull レプリケーションデータベースrepdb1がレプリケーションソースとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb1がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb1が作成されています

REPDB2サイト

bull レプリケーションデータベースrepdb2がレプリケーションターゲットとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb2がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb2が作成されています

以下の手順をオーケストレーションデータベースで実行しGGORCHユーザーを構成します

注ltabsolute_path_to_client_certificategtは$ORACLE_HOMEadminggorch_walletディレクトリがオーケストレーションデータベースに作成されクライアントウォレットがそのディレクトリにコピーされている場合は省略できますこれはクライアントウォレットを検索するスクリプトによって使用されるデフォルトディレクトリです

SQLgt connect sys as sysdba SQLgt grant dba to ggorch identified by ltpasswordgt SQLgt oggorch_setup ggorch ltabsolute_path_to_client_certificategt SQLgt connect ggorch SQLgt orchestration_db_setupsql

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 8: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 8

オーケストレーションDBサイト

bull オーケストレーションデータベースはサンプルオーケストレーションスクリプトがデータベースユーザーGGORCHとしてインストールされた場所に作成されます

bull OGG デ プ ロ イ メ ン ト に 接 続 す る た め の ク ラ イ ア ン ト 証 明 書 は $ORACLE_HOMEadminggorch_walletディレクトリの下に置かれたウォレット内にありますクライアント証明書で指定されたユーザー名には以下に示すREPDB1サイトとREPDB2サイトの両方のOGGデプロイメントに対してREST API呼出しを行う権限があります

REPDB1サイト

bull レプリケーションデータベースrepdb1がレプリケーションソースとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb1がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb1が作成されています

REPDB2サイト

bull レプリケーションデータベースrepdb2がレプリケーションターゲットとして機能するように設定されています

bull セキュアなOGGデプロイメントがポート9900をリッスンするService Managerを使用して設定されています

bull OGGデプロイメントの管理サーバー資格証明ストアでdblogin資格証明エイリアスrepdb2がドメインを使用してOracleGoldenGateとして作成されています

bull OGGデプロイメントgg_repdb2が作成されています

以下の手順をオーケストレーションデータベースで実行しGGORCHユーザーを構成します

注ltabsolute_path_to_client_certificategtは$ORACLE_HOMEadminggorch_walletディレクトリがオーケストレーションデータベースに作成されクライアントウォレットがそのディレクトリにコピーされている場合は省略できますこれはクライアントウォレットを検索するスクリプトによって使用されるデフォルトディレクトリです

SQLgt connect sys as sysdba SQLgt grant dba to ggorch identified by ltpasswordgt SQLgt oggorch_setup ggorch ltabsolute_path_to_client_certificategt SQLgt connect ggorch SQLgt orchestration_db_setupsql

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 9: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 9

411 一方向レプリケーションの設定

add_oneway_replicationファンクションではrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの一方向レプリケーションを設定します

このファンクションに対するおもな入力は以下のとおりです

minus ソースOGGデプロイメント

minus ソースデータベースのOGGエイリアス

minus ターゲットOGGデプロイメント

minus ターゲットデータベースのOGGエイリアス

minus レプリケートされる表のリスト

タ ー ゲ ッ ト 表 を イ ンス タ ン ス 化 する た め の 入 力を オプ シ ョ ン で 受 け 取 るこ と も で き ます(add_oneway_replicationを参照)このファンクションはREST呼出しを使用してOGGデプロイ

メントで実行されるAdministration ServerDistribution ServerReceiver Serverに関する情報を取得しますその後REST呼出しを使用してリモートオーケストレーションデータベースから以下のレプリケーションコンポーネントを作成します

minus ソースOGGデプロイメントのExtract

minus ソースOGGデプロイメントとターゲットOGGデプロイメント間のDistribution path

minus ターゲットOGGデプロイメントのReplicat

ExtractとReplicatのパラメータファイルは提供された表のリストをレプリケートするように構成されます

REPDB1サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB2サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB2サイトのOGGデプロイメント

minus Replicatを作成して起動します

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 10: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 10

図3

repdb1データベースからrepdb2データベースへの一方向レプリケーションの作成

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要があります(add_oneway_replicationを参照)このコードではエイリアスrepdb1がソースとして参照する

データベースとエイリアスrepdb2がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされます

以下の出力にはExtract EFIMLDistribution path PFIMLおよびReplicat RFIMLが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています

END

source_dblogin_credential_alias =gt repdb1 ogg_target =gt ogg_connection(lsquoampmachine3rsquo 9900 lsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb2rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

=gt ogg_connection(lsquoampmachine2rsquo 9900 lsquogg_repdb1rsquo)

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 11: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 11

出力

注それぞれの名前はExtractがEltsuffixgtReplicatがRltsuffixgtDistribution pathがPltsuffixgtのようになります(ltsuffixgtはランダムに生成された4文字の文字列です)

412 双方向レプリケーションの設定

上記の設定でソースとターゲットの情報を交換しadd_oneway_replicationに対して別の呼出しを行うとrepdb1データベースとrepdb2データベース間のSCOTTスキーマとHRスキーマの双方向レプリケーションを設定できます逆方向のレプリケーションを作成するための追加の呼出しは以下のとおりです

REPDB2サイトのOGGデプロイメント

minus Extractを作成して起動します

minus REPDB1サイトのOGGデプロイメントへのDistribution pathを作成して起動します

REPDB1サイトのOGGデプロイメント

minus Replicatを作成して起動します

RFIML [starting] - REPLICAT Program Status Group

---------- TARGET OGG DEPLOYMENT ---------

EFIML [running] - EXTRACT PFIML [running] - PATH

Program Status Group

---------- SOURCE OGG DEPLOYMENT ---------

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFIML starting REPLICAT RFIML started

---------------- DISTRIBUTION PATH ------------------- The path PFIML has been added

---------------- REPLICATIONREPDB1 =gtREPDB2 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFIML successfully registered with database at SCN 4623804 EXTTRAIL added EXTRACT EFIML starting EXTRACT EFIML started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 12: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 12

図4

repdb2データベースからrepdb1データベースへの双方向レプリケーション

以下のコードをオーケストレーションデータベースでGGORCHとして実行する必要がありますこのコードではエイリアスrepdb2がソースとして参照するデータベースとエイリアスrepdb1がターゲットとして参照するデータベース間の一方向レプリケーションを作成しますこの設定によりソースからターゲットにlsquoscottrsquoスキーマとlsquohrrsquoスキーマがレプリケートされますこの手順と先の手順を組み合わせるとrepdb1とrepdb2間でlsquoscottrsquoスキーマとlsquohrrsquoスキーマの双方向レプリケーションが作成されます

set serverout on DECLARE

response_info clob ret number

BEGIN ret = add_oneway_replication(

ogg_source =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb1rsquo) source_dblogin_credential_alias =gt repdb2 ogg_target =gt ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb2rsquo) target_dblogin_credential_alias =gt repdb1rsquo tables =gt scottrdquohrrdquo response_info =gt response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 13: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 13

以下の出力にはExtract EFCUGDistribution path PFCUGおよびReplicat RFCUGが作成されたことが表示されていますExtractとDistribution pathはSOURCE OGG DEPLOYMENTでlsquorunningrsquoと表示されReplicatはTARGET OGG DEPLOYMENTでlsquostartingrsquoと表示されています先の手順で作成されたレプリケーションコンポーネントのEFIMLPFIMLRFIMLが出力に表示される場合もあります

出力

42 レプリケーションコンポーネントの管理

レプリケーションコンポーネントはadd_oneway_replicationを使用して作成した後は更新起動停止または削除できます

以下にExtractで実行できるアクションの例をいくつかご紹介します必要に応じて類似のアクションを他のレプリケーションコンポーネントで実行できます

EFIML [running] - EXTRACT RFCUG [starting] - REPLICAT PFIML [running] ndash PATH

Program Status Group

EFCUG [running] - EXTRACT RFIML [running] - REPLICAT PFCUG [running] - PATH

---------- TARGET OGG DEPLOYMENT ---------

Program Status Group

---------------- REPLICAT ------------------- REPLICAT (Integrated) added REPLICAT RFCUG starting REPLICAT RFCUG started

---------- SOURCE OGG DEPLOYMENT ---------

---------------- DISTRIBUTION PATH ------------------- The path PFCUG has been added

---------------- REPLICATIONREPDB2 =gtREP DB1 ------------------- ---------------- EXTRACT ------------------- EXTRACT (Integrated) added Extract EFCUG successfully registered with database at SCN 4624869 EXTTRAIL added EXTRACT EFCUG starting EXTRACT EFCUG started

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 14: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 14

421 Extract情報の取得

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameの情報を取得します

以下の出力はExtract EFCUGのフェッチされた情報ですldquostatusrdquoがldquorunningrdquoでありldquosourcerdquo属性でldquointegratedのExtractであることが表示されていることに注意してくださいExtractのパラメータファイル全体がldquoconfigrdquo属性に表示される場合もありますこの出力のjsonスキーマはこちらのドキュメントで参照できます

出力

set serverout on DECLARE

response_info CLOB ret NUMBER

BEGIN ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt ampextract_name response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 15: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 15

422 Extractパラメータファイルの更新

Extractパラメータファイルの行はREST APIペイロードでJSON配列として表示されます(セクション421の出力のldquoconfigrdquoを参照)

この例では既存のパラメータファイルに行を追加することでExtractのパラメータファイルを更新しますまずExtractの既存パラメータを取得し新しいパラメータを既存のリストに追加し修正した行リストを使用してパラメータファイルを更新することでこの処理を行います

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameのパラメータファイルを更新します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 16: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 16

以下の出力にはExtract EFCUGのパラメータファイルの更新結果が表示されていますパラメータファイルにldquoDDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 ldquoという行が追加されていることに注意してください

(この更新の前のパラメータファイルについてはセクション421の出力を参照)

set serverout on DECLARE response_info CLOB ret NUMBER ogg_deployment OGG_CONNECTION config_jarray JON_ARRAY_T config_str VARCHAR2(4000)

BEGIN

ogg_deployment = ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo)

Extractの既存パラメータを取得 ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

config_jarray = JSON_ARRAY_TPARSE(JSON_QUERY(response_info

$responseconfig))

新しいパラメータを既存のパラメータ一式に追加 config_jarrayappend(DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10)

JSON配列から括弧を削除 config_str = config_jarrayto_string config_str = replace(replace(config_str[)])

Extractの修正したパラメータを更新

ret = OGGSERVICEupdate_extract( ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo extract_params =gt config_str response_info =gt response_info)

更新が正常に終了したらExtract情報を取り込み更新が完了していることを確認

IF ret = OGGHTTPresp_success THEN pretty_json(response_info)

ELSE ret = OGGSERVICEget_extract_details(

ogg_instance =gt ogg_deployment extract_name =gt ampextract_namersquo response_info =gt response_info)

Pretty_json(response_info)

END IF END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 17: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 17

出力

423 Extractの停止

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを停止します

[ messages [

[ ]

] response [

$schema oggextract credentials

alias repdb2 domain OracleGoldenGate

begin now targets [

name jq sizeMB 500 sequenceLength 9 sequenceLengthFlip false sequence 0 offset 31556912

remote false

] config [

extract EFCUG useridalias repdb2 domain OracleGoldenGate exttrail jq table scott table hr DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10

] description EFCUG source

tranlogs integrated registration

csn 4624869 share true

status running

]

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 18: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 18

以下はExtract EFCUGの出力ですExtractが停止されたことが表示されています

424 Extractの削除

以下のコードはポート9900をリッスンするマシンampmachine3上のOGGデプロイメントgg_repdb2においてExtract ampextract_nameを削除します

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

[ messages [

[

$schema oggmessage title EXTRACT EFCUG stopped code OGG-00975 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00975

$schema oggmessage title EXTRACT EFCUG stopped code OGG-15426 severity INFO issued 2018-08-17T120422Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-15426

]

] response

]

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICESTOP_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine3rsquo9900rsquogg_repdb2rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info)

END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 19: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 19

以下はExtract EFCUGの出力ですこれは統合ExtractのためExtractは削除される前にデータベースから登録解除されていることに注意してくださいheartbeat表のExtractに対応する行もすべて削除されます

出力

[ messages [

[

$schema oggmessage title Sending STOP request to EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

$schema oggmessage title EXTRACT EFCUG is down (gracefully) code OGG-00979 severity INFO issued 2018-08-17T122503Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-00979

$schema oggmessage title Successfully unregistered EXTRACT EFCUG from database code OGG-01750 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-01750

$schema oggmessage title No Heartbeat entries with [EFCUG] none deleted code OGG-14052 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-14052

$schema oggmessage title Deleted EXTRACT EFCUG code OGG-08100 severity INFO issued 2018-08-17T122514Z type httpdocsoraclecomgoldengatec1910gg-winuxGMESGoggushtmOGG-08100

]

] response

]

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 20: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 20

5 トラブルシューティング

サンプルのオーケストレーションスクリプトを使用した場合に発生する可能性のあるエラーの一部と考えられる原因を以下に示します

エラー 考えられる原因 file$ORACLE_HOMEadminggorch_wallet is not configured for access to user ltUSERgt ]

オーケストレーションユーザーにウォレットディレクトリへの

アクセス権が付与されていませんウォレットディレクトリへの

アクセス権を付与するサンプルコードについては

oggorch_setupsqlを参照してください title The authorization information for ltservicegt is missing invalid or not properly formed

$ORACLE_HOMEggorch_walletの証明書に記載されるユーザー

名にOGGデプロイメントのREST API呼出しに対するアクセス権が

ない可能性があります

ORA-29024Certificate validation Failure

$ORACLE_HOMEggorch_walletの証明書がOGGデプロイメント

によって信頼されている認証局によって署名されていない可能性が

あります ORA-24247 network access denied by access control list (ACL)

DB管理者ユーザーにHTTPS呼出しを行う権限がありません(オーケ

ストレーションパッケージがインストールされている場合)

HTTPSアクセスをユーザーに付与するサンプルコードについては

oggorch_setupsqlを参照してください ORA-28759 failure to open file $ORACLE_HOMEadminggorch_walletディレクトリにウォレッ

トがない可能性があります

6 結論

提供されるパッケージがOGG Microservicesのデプロイメントで可能なあらゆるアクションを実行するためのファンクションをすべて提供しているわけではないことに気付かれたかもしれません認証のさまざまなセキュリティモードも提供していませんただしこのパッケージは容易に拡張できます拡張によってPLSQLのみを使用してOGGデプロイメントを保守する極めて実用的なREST APIクライアントを実現できます

7 付録 - I

OGGデプロイメントがポート443のリバースプロキシを使用して構成されている場合上記のすべての例に以下の変更が必要です

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquorsquogg_repdb1rsquo)に変更する

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 21: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 21

リバースプロキシが非標準のポートで構成されている場合以下の変更が必要です

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo ampreverse_proxy_portrsquogg_repdb1rsquo 1) extract_name =gt lsquoampextract_namersquo response_info =gt response_info) pretty_json

(response_info) END

ogg_connection(lsquoampmachine2rsquo9900rsquogg_repdb1rsquo)を

ogg_connection(lsquoampmachine2rsquoampreverse_proxy_portrsquogg_repdb1rsquo 1)に変更する

set serverout on DECLARE

response_info clob ret number

BEGIN ret = OGGSERVICEDELETE_EXTRACT(

ogg_instance =gt ogg_connection(lsquoampmachine2rsquo rsquogg_repdb1rsquo) extract_name =gt lsquoampextract_namersquo response_info =gt response_info)

pretty_json(response_info) END

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 22: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 22

8 付録 - II

ソースデータベースとターゲットデータベース間の一方向レプリケーションを作成するトップレベルのファンクションは以下のとおりです

パラメータ 説明

ogg_source ソースOGGデプロイメントの接続情報

db_source_alias ogg_source_deploymentで作成されたソースデータ

ベースに対するエイリアス

ogg_target ターゲットOGGデプロイメントの接続情報

db_target_alias ogg_target_deploymentで作成されたターゲットデ

ータベースに対するエイリアス

tables レプリケートされる表とスキーマのカンマで区切られたリスト SCOTTスキーマはSCOTTSCOTTスキーマのEMP表は

SCOTTEMPと指定します 例SCOTT USER1TAB USER2

上記の文字列一式によりソースからターゲットへのSCOTTスキーマのレプリケーション ソースからターゲットへのUSER2スキーマのレプリケーシ

ョンソースのUSER1TAB表からターゲットの

USER1TAB表へのレプリケーションが設定されます

response_info OGGサーバーからのレスポンスメッセージ

ファンクション内には様々な要件に合わせてファンクションをカスタマイズできる多数の構成変数があります

useridalias ltdb_aliasgt domain OracleGoldenGate || ltmap_stmtgt

exttrail ltextract_trailgt || lttables_stmtgt

replicat_params_template VARCHAR2(4000) = replicat ltreplicat_namegt ||

extract ltextract_namegt || useridalias ltdb aliasgt domain OracleGoldenGate ||

= = integrated = = = integrated = = = = = extract_params_template VARCHAR2(4000)

名前(extractreplicatpathtrail)は必要でありNULLの場合は常に生成されます以下の変数は希望の

値に初期化できますそうすることで値は生成されず初期化された値が代わりに使用されます

extract_name VARCHAR2(5) extract_mode VARCHAR2(20) path_name VARCHAR2(5) replicat_name VARCHAR2(5) replicat_mode VARCHAR2(20) source_trail VARCHAR2(2) source_trail_path VARCHAR2(2) target_trail VARCHAR2(2) target_trail_path VARCHAR2(2)

OGG_CONNECTION VARCHAR2 OGG_CONNECTION VARCHAR2 VARCHAR2 CLOB) tables

response_info

FUNCTION ADD_ONEWAY_REPLICATION ( ogg_source IN db_source_alias IN ogg_target IN db target alias IN

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 23: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 23

9 付録 - III

ターゲットデータベースのレプリケーションオブジェクトはogginstantiatesqlファイルで提供されるOGGINSTANTIATEパッケージを使用してソースデータベースのレプリケーションオブジェクトからインスタンス化できます

OGGINSTANTIATEパッケージを実行するユーザーには以下の権限付与が必要です

bull grant execute on dbms_datapump to ltユーザーgt

bull grant create table to ltユーザーgt

レ プ リ ケ ー シ ョ ン を設 定 す る 前 に タ ー ゲ ッ ト レプ リ ケ ー シ ョ ン デー タ ベ ー ス から

OGGINSTANTIATEパッケージを実行する必要がありますデータベースリンクを使用してオブ

ジェクトをソースデータベースからインポートするとインスタンス化が完了します

OGGINSTANTIATEパッケージはDBMS_DATAPUMP APIの例で提供されるコードを使用して構築さ

れています

OGGINSTANTIATEによって提供される唯一のプロシージャの署名は以下のとおりです

例 ndash 1

全データベースのインポートによってソースデータベースからターゲットデータベースをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquorsquo lsquorsquo src_dblink)

PROCEDURE instantiate

ソース入力のスキーマ表を使用してターゲットスキーマ表をインスタンス化します

source_obj - インスタンス化で使用されるソースオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

target_obj - インスタンス化で使用されるターゲットオブジェクトは

全データベースのインスタンス化ではlsquorsquoの形式にします

( ス キ ー マ の イ ン ス タ ン ス 化 で はSCOTT 表 の イ ン ス タ ン ス 化 で はSCOTTEMP)

source_dblink - ソースデータベースに対するデータベースリンク

-------------------------------------------------------------------------------

PROCEDURE instantiate(source_obj IN VARCHAR2

target_obj IN VARCHAR2 source_dblink IN VARCHAR2)

-------------------------------------------------------------------------------

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 24: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

PLSQLを使用したOracle GoldenGate Microservicesのオーケストレーション

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved 24

例 ndash 2

ソースデータベースのscottスキーマからターゲットデータベースのscottスキーマのみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottrsquoではなくlsquohrrsquoと指定されている場合ソースデータベースのlsquoscottrsquoスキーマがターゲットデータベースのlsquohrrsquoスキーマにインポートされます

例 ndash 3

ソースデータベースのscottemp表を使用してターゲットデータベースのscottemp表のみをインスタンス化しますsrc_dblinkはソースデータベースに対するデータベースリンクです

注target_objがlsquoscottemprsquoではなくlsquohremprsquoと指定されている場合ソースデータベースのlsquoscottemprsquo表がターゲットデータベースのlsquohremprsquo表にインポートされます

上記のすべての例においてソースデータベースからインポートしているオブジェクトがターゲットデータベースに存在する場合オブジェクトはインポートされません

10 参考資料

[1] Oracle GoldenGate Microservices Architecture

[2] 自己署名証明書の作成

[3] セキュアなデプロイメントまたはセキュアでないデプロイメントの設定

[4] Oracle GoldenGate Microservices Architectureのコンポーネント

[5] OGG Microservices REST API Reference guide

[6] Oracle GoldenGate環境の保護

[7] UTL_HTTP

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottemprsquo lsquoscottemprsquo src_dblink)

sqlplusgt set serverout on sqlplusgt execute OGGINSTANTIATEINSTANTIATE(lsquoscottrsquo lsquoscottrsquo src_dblink)

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料
Page 25: PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices Architectureは、OGG環境の一部としてRESTに対応したサー ビスを提供する新しいアーキテクチャです。本書は、読者がOGG

Oracle Corporation World Headquarters

500 Oracle Parkway

Redwood Shores CA 94065 USA

海外からのお問い合わせ窓口

電話+16505067000

ファクシミリ+16505067200

PLSQLを使用した Oracle GoldenGate Microservicesの オーケストレーション ユーティリティ

2018年10月 著者Parthasarathy Raghunathan

Copyright copy 2018 Oracle andor its affiliatesAll rights reserved本文書は情報提供のみを目的として提供されておりここに記載

されている内容は予告なく変更されることがあります本文書はその内容に誤りがないことを保証するものではなくまた口頭に

よる明示的保証や法律による黙示的保証を含め商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証およ

び条件も提供するものではありませんオラクルは本文書に関するいかなる法的責任も明確に否認し本文書によって直接的または間

接的に確立される契約義務はないものとします本文書はオラクルの書面による許可を前もって得ることなくいかなる目的のために

も電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません

OracleおよびJavaはOracleおよびその子会社関連会社の登録商標ですその他の名称はそれぞれの会社の商標です

IntelおよびIntel XeonはIntel Corporationの商標または登録商標ですすべてのSPARC商標はライセンスに基づいて使用される

SPARC International Incの商標または登録商標ですAMDOpteronAMDロゴおよびAMD OpteronロゴはAdvanced Micro

Devicesの商標または登録商標ですUNIXはThe Open Groupの登録商標です1018

  • 1 はじめに
  • 2 前提条件
  • 3 背景
    • 31 OGGの新しいアーキテクチャ
    • 32 OGGのインストールとデプロイメント
    • 33 OGG REST API
      • 4 オーケストレーションスクリプトのサンプル
        • 41 ADD_ONEWAY_REPLICATION ndash 使用方法
        • 411 一方向レプリケーションの設定
        • 412 双方向レプリケーションの設定
        • 42 レプリケーションコンポーネントの管理
        • 421 Extract情報の取得
        • 422 Extractパラメータファイルの更新
        • 423 Extractの停止
        • 424 Extractの削除
          • 5 トラブルシューティング
          • 6 結論
          • 7 付録 - I
          • 8 付録 - II
          • 9 付録 - III
          • 10 参考資料