PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices...
Transcript of PL/SQLを使用したOracle GoldenGate Microservicesの ......OGG)Microservices...
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-
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 参考資料
-