第37回:SharePlexの設計・運用のポイント
技術者向け・データベースの技術情報発信
システムエグゼではOracle GoldenGate(以下、GoldenGate)、SharePlex、Qlik Replicateによるデータ移行、データ連携の実績が豊富にあります。
今回はSharePlexの設計/運用について紹介します。
1.はじめに
これまでOracle Databaseデータの論理レプリケーションと言えばGoldenGateでしたが、簡単で低価格な論理レプリケーションツールである、SharePlexを選択するお客様も増えてきています。
Oracle DatabaseのDRへのデータ同期を目的としたSharePlexの設計/運用を対応した経験から、そのポイントと注意点、初めてSharePlexに対応した際の率直な感想をご紹介します。
2.設計のポイント
ShrePlex10.2 for Windowsの設計のポイントについて解説します。
DDL同期
デフォルト設定では、同期定義で設定したテーブルについてはテーブル定義、関連インデックス定義を含めて同期対象になります。
スキーマ単位での設定も可能で、指定スキーマのテーブル、インデックスを変更/追加/削除した場合でも、同期定義を修正することなく、ターゲットDBに反映することができます。
※DDLの種類ごとに、同期のON/OFFを設定することも可能
データ同期
デフォルトではテーブル、関連インデックスのデータ同期が行われますが、SharePlexの設定を行うことで、以下のデータ同期もサポートされています。
- トリガーを有効化した状態でのデータ同期(トリガー定義の修正が必要)
- シーケンス値のデータ同期(シーケンス定義の修正が必要)
- 外部参照制約(ON DELETE CASCADE)を有効化した状態でのデータ同期
3.運用の注意点
ShrePlex10.2 for Windowsの運用の注意点について解説します。
同期定義
- スキーマ単位で同期設定をした場合、デフォルトでは一時表が同期に含まれてしまいます。
- 一時表はREDO生成がないことから、SharePlexの同期対象にはできませんが、明示的に同期設定で除外設定しないと、一時表追加時にログに警告が出力されてしまいます。
- スキーマ単位で同期設定をした場合、デフォルトではMVIEWの同期も含まれています。
※以下がサポート対象構成のため注意が必要です。
除外するには明示的に設定が必要です。
ソース:MVIEW → ターゲット:同名TABLE(同期OK)
ソース:MVIEW → ターゲット:同名MVIEW(同期NG)
保守運用
- SharePlexでデータ同期を行う場合、同期対象テーブルに漏れなく一意索引を構成することが推奨されています。
(一意索引がなくてもデータ同期は可能ですが、同期パフォーマンスに問題が発生する場合があります。一意索引が存在しない場合、ログに警告が出力されます) - データベースのトランザクションログはSharePlexの同期で必要となることから、データベースバックアップでトランザクションログを削除する場合には注意が必要です。
(SharePlexで不要となったトランザクションログを確認し、DBバックアップ時に削除するように工夫が必要です) - オブジェクト統計データ(テーブル、インデックス)はSharePlexの同期の対象とはならないことから、ソース/ターゲット双方で取得/管理が必要になります。
- 明示的に同期設定を行うことでトリガーを有効化したまま同期が可能ですが、トリガーの修正が必要になります。
(SharePlexのDB管理ユーザーの更新をトリガーから除外する必要があります) - 明示的に同期設定を行うことでシーケンス値も同期は可能ですが、連番保障はされません。
(シーケンスのキャッシュ値やターゲット側のシーケンス開始値の変更が必要になります)
4.おわりに
SharePlexを利用してみた率直な感想としては、分かりやすいというのが第一印象でした。
あらゆる細かな設定が可能で、難解なGoldenGateとは対照的に、一般的なニーズを簡単に構成できるのがSharePlexの特長と感じました。
どちらが優れているという話ではなく、用途に応じて使い分けることが大切でしょう。
システムエグゼでは大規模データベースの設計/構築/データ連携/データ移行について豊富な実績があります。
ご検討の際はお気軽にご相談ください。