21 Oracle GoldenGateシステムの準備
内容は次のとおりです。
データベース・ユーザーおよび権限の準備
サポートされているSQL Serverクラウド・データベースを含め、Oracle GoldenGate for SQL Serverに必要なデータベース・ユーザー、権限およびアクセス権について学習します。
親トピック: Oracle GoldenGateシステムの準備
Oracle GoldenGate for SQL Server
Oracle GoldenGateプロセスでは、データをSQL Serverデータベースから取得するためとそのデータベースに適用するためにデータベース・ユーザーが必要です。Oracle GoldenGateプロセスによって排他的に使用される専用データベース・ユーザーを作成することをお薦めします。
Oracle GoldenGate for SQL Serverでは、すべての動作保証済プラットフォームに対してSQL Server認証がサポートされており、Oracle GoldenGateがWindowsサーバーにインストールされている場合のみClassic Architectureに対してWindows認証がサポートされています。
-
Oracle GoldenGate Classic ArchitectureにWindows認証を使用するために、ExtractプロセスとReplicatプロセスでManagerプロセスのログイン資格証明が継承されます。デフォルトでは、Managerプロセスは、Windowsサーバーにログオンしたユーザーとして対話形式で実行されます。または、オプションで、デフォルトのサービス名
GGSMGR
でWindowsサービスとして追加できます。Managerプロセスで使用されている方法にかかわらず、それを実行するユーザーには、前述の必須SQL Server権限が必要です。 -
SQL Server認証を使用するには、ExtractおよびReplicatの専用のSQL Serverログインを作成し、次にリストされている権限を割り当てる必要があります。
SQL ServerとAzure SQL Managed Instance
-
SQL Server用またはAzure SQL Managed Instance用Oracle GoldenGateの専用ログインを作成します。
-
ユーザーとしてそのログインを
msdb
データベース、およびソース・データベースまたはターゲット・データベースに追加します。 -
Oracle GoldenGateに必要なオブジェクトに使用するスキーマをソース・データベースまたはターゲット・データベースに作成します。このスキーマは、
GLOBALS
パラメータ・ファイル内で使用されているGGSCHEMA
値にマップする必要があります。 -
Oracle GoldenGateユーザーに対して、そのユーザーがExtract用かReplicat用かに基づいて次の権限およびアクセス権を有効にします。
表21-1 Oracle GoldenGateユーザーの権限とアクセス権
権限 | Extract | Replicat | 構文 |
---|---|---|---|
msdbデータベースのロールと権限 |
|||
|
はい |
いいえ |
|
|
継承 |
はい |
|
|
はい |
いいえ |
|
|
はい |
いいえ |
|
ユーザーのデータベース・ロールおよび権限 |
|||
|
はい |
いいえ |
データベース・レベルのチェンジ・データ・キャプチャ(CDC)を有効にするために1回かぎりの変更が必要であり(まだ有効になっていない場合)、
システム管理者資格証明があるデータベース管理者は、次を使用して手動でデータベースをCDCに対して有効にできます。これにより、Extractユーザーにこの権限が不要になります: EXEC msdb.sys.sp_cdc_enable_db 'source_database' |
|
はい |
はい |
ALTER ROLE db_owner ADD MEMBER gguser; |
親トピック: データベース・ユーザーおよび権限の準備
Amazon RDSのユーザー権限および要件
Oracle GoldenGateでAmazon RDS for SQL Serverデータベースから取得するかそれに対して適用するには、次のユーザー要件と最小データベース権限およびアクセス権が必要です:
-
Amazon RDS for SQL Server用のOracle GoldenGateの専用ログインを作成します。
-
ユーザーとしてそのログインを
msdb
データベース、およびソース・データベースまたはターゲット・データベースに追加します。 -
Oracle GoldenGateに必要なオブジェクトに使用するスキーマをソース・データベースまたはターゲット・データベースに作成します。このスキーマは、
GLOBALS
パラメータ・ファイル内で使用されているGGSCHEMA
値にマップする必要があります。 -
Oracle GoldenGateユーザーに対して、そのユーザーがExtract用かReplicat用かに基づいて次の権限およびアクセス権を有効にします。
表21-2 Oracle GoldenGateユーザーの権限とアクセス権
権限 | Extract | Replicat | 構文 |
---|---|---|---|
msdbデータベースのロールと権限 |
|||
|
はい |
いいえ |
マスター資格証明があるデータベース管理者は、次のコマンドを使用して手動でデータベースをチェンジ・データ・キャプチャに対して有効にできます。これにより、Extractユーザーにこの権限が不要になります:
|
|
はい |
いいえ |
|
|
継承 |
はい |
|
|
はい |
いいえ |
|
|
はい |
いいえ |
|
ユーザーのデータベース・ロールおよび権限 |
|||
|
はい |
はい |
|
親トピック: データベース・ユーザーおよび権限の準備
Azure SQL Database
-
Azure SQL Database用のOracle GoldenGateの専用ログインを作成します。
-
ユーザーとしてそのログインをターゲット・データベースに追加します。
-
Oracle GoldenGateに必要なオブジェクトに使用するスキーマをターゲット・データベースに作成します。このスキーマは、
GLOBALS
パラメータ・ファイル内で使用されているGGSCHEMA
値にマップする必要があります。 -
Oracle GoldenGateユーザーに対して次の権限およびアクセス権を有効にします。
表21-3 Oracle GoldenGateユーザーの権限とアクセス権
権限 | Extract | Replicat | 構文 |
---|---|---|---|
ユーザーのデータベース・ロールおよび権限 |
|||
|
該当なし |
はい |
|
親トピック: データベース・ユーザーおよび権限の準備
データベース接続の構成
この項では、SQL ServerデータベースへのExtractおよびReplicatの接続を設定する手順について説明します。
親トピック: Oracle GoldenGateシステムの準備
Extractのデータベース接続の構成
Extractでは、ODBC (Open Database Connectivity)接続でソースSQL Serverデータベースに接続します。この接続を確立するには、「データ ソース (ODBC)」コントロール パネルからデータ・ソース名(DSN)を設定します。手順は、「Windowsでのデータベース接続の構成」を参照してください。
Always On環境のリスナーへの接続
Extractは、Always On環境のリスナーに接続できます。また、読取り専用問合せを使用可能な同期モードのセカンダリ・レプリカにルーティングするように構成できます。デフォルトでは、Extractがリスナーに接続していると、すべての処理がプライマリ・レプリカに対して実行されますが、Extractの構成でTRANLOGOPTIONS ALWAYSONREADONLYROUTING
パラメータが指定されていると、読取り専用問合せはリスナーによって使用可能な読取り可能セカンダリ・レプリカにルーティングされます。詳細は、TRANLOGOPTIONS
および「AlwaysOn可用性グループ内のデータベースのキャプチャおよび配信要件の概要」を参照してください。
親トピック: データベース接続の構成
Replicatのデータベース接続の構成
Replicatは、次のようにしてターゲット・データベースに接続しDML操作を実行できます。
-
ODBCを使用します。
-
SQL Serverドライバがサポートしている場合はOLE DBを使用します。
-
SQL Serverレプリケーション・ユーザーとしてOLE DBを使用します。
IDENTITY
列、外部キー制約、およびトリガーに、NOT FOR REPLICATION
を設定する必要があります。
使用する方法を選択する前に、次のガイドラインと手順を確認してそれぞれのメリットとデメリットを評価します。
ODBCまたはデフォルトのOLE DBの使用
ReplicatがODBC接続またはデフォルトのOLE DB接続を介して接続すると、次のような制限が適用されます。
-
ODBCまたはデフォルトのOLE DBを使用している場合に、ソースとターゲットに対して
IDENTITY
列をまったく同じに保つには、Replicatはトランザクションで特別な操作を作成し、必ずターゲットに対してシードがインクリメントされるようにします。これらのステップによって、配信パフォーマンスが低下する場合があります。 -
冗長な操作の可能性を排除するために、ターゲット表に対するトリガーおよび制約を調整または無効にする必要があります。
ReplicatをODBCまたはOLE DBと組み合せて使用するには、次のステップに従います。
親トピック: Replicatのデータベース接続の構成
OLE DBでのUSEREPLICATIONUSERの使用
ReplicatがUSEREPLICATIONUSER
オプションを指定したOLE DB経由でSQL Serverレプリケーション・ユーザーとして接続し、IDENTITY
のNOT FOR REPLICATION
が有効化されているときに、外部キー制約でトリガーされる場合は、次のような利点と制限が適用されます。
-
Replicatが挿入を実行すると、
IDENTITY
シードがインクリメントされません。双方向のSQL Server構成では、前の項のステップ3で示した例のように、シード値と増分値をずらして設定します。 -
トリガーは、冗長な操作を回避するために、ターゲット上でReplicatユーザーに対して自動的に無効になります。ただし、他のユーザーに対してはターゲット上でトリガーが起動されます。
-
外部キー制約は、Replicatトランザクションのターゲットに対して強制されません。
CASCADE
更新および削除は行われません。これらも冗長な操作を防ぎます。 -
CHECK
制約は、Replicatトランザクションのターゲットに対して強制されません。これらの制約は、データの取得前にソースに対して強制されますが、ターゲットに制約がないことでデータの整合性の問題が発生するかを検討します。ノート:
通常の
IDENTITY
、トリガー、および制約の機能は、Replicatレプリケーション・ユーザー以外のユーザーに対しては有効のままです。
USEREPLICATIONUSER
を設定してReplicatを使用するには、次のステップに従います。
ノート:
Oracle GoldenGateのSQL Server CDC for Linuxの場合、USEREPLICATIONUSER
オプションは使用できません。
ノート:
Replicatで、Microsoft ODBCドライバを使用する接続の場合は、USEREPLICATIONUSER
オプションをサポートするために、Microsoft OLE DB Driver 18 for SQL Serverをインストールします。
https://www.microsoft.com/en-us/download/details.aspx?id=56730
親トピック: Replicatのデータベース接続の構成
Linuxでのデータベース接続の構成
SQL Serverデータベース構成のOracle GoldenGateは、LinuxとWindowsに同じサポートを提供します。ただし、Linux環境の接続を設定するには、msodbcsql13*
またはmsodbcsql17*
ドライバが必要です。
次を参照してください。
-
データ・ソースのテンプレート・ファイルを作成します。
vi odbc_template_file.ini
-
テンプレート・ファイルにデータ・ソースを記述します。次の例では、データベースに接続するために、
DBLOGIN
およびSOURCEDB
での名前としてmyserver_ss2017_source
が使用されています。[myserver_SS2017_source] Driver = ODBC Driver 17 for SQL Server Server = myserver,1433 Database = source_database User = ssuser Password = ssuserpassword
-
次のコマンドを使用して、データ・ソースをインストールします。
odbcinst -i -s -f odbc_template_file.ini
詳細は、次を参照してください。
親トピック: データベース接続の構成
Windowsでのデータベース接続の構成
次の手順に従って、ソースまたはターゲットのSQL Serverデータベース用にSQL Serverシステムのデータ・ソース名(DSN)を作成します。DSNには、ODBC (Open Database Connectivity)を介したSQL Serverデータベースへの接続方法に関する情報が格納されます。
SQL ServerのDSNの作成手順
親トピック: データベース接続の構成
処理のための表の準備
次の項に示す表属性はOracle GoldenGate環境で処理する必要があります。
ターゲット表に対するトリガーおよびカスケード制約の無効化
SQL Serverがターゲットの環境では、ソースで発生した操作を繰り返す可能性のあるトリガーおよびカスケード制約を考慮します。たとえば、TableBにレコードを挿入するTableAの挿入トリガーがソースにあり、TableAおよびTableBの両方をキャプチャおよび配信するようにOracle GoldenGateが構成されている場合、ターゲット表TableAの挿入トリガーを無効にする必要があります。そうしないと、ReplicatはTableAに挿入し、トリガーが起動してTableBに挿入します。ReplicatはTableBにも挿入しようとするため、異常終了します。
-
DBOPTIONS USEREPLICATIONUSER
パラメータをReplicatに使用します。 -
OLE DB接続をReplicatに使用します。OLE DB接続の使用はデフォルトの構成です。トリガー、制約、または
IDENTITY
プロパティでNOT FOR REPLICATION
を有効にする必要があります。
次のシナリオでは、ターゲットでトリガーおよび制約を無効にします。
-
ソースのすべての表がレプリケートされる単方向のレプリケーション。
次のシナリオでは、ターゲットのトリガーおよび制約を有効にします。
-
トリガーまたはカスケード操作によって影響を受ける表がレプリケートされず、これらの表をロードするアプリケーションのみがトリガーまたはカスケード操作を使用している単方向のレプリケーション。
-
ソースのすべての表がレプリケートされる単方向または双方向のレプリケーション。このシナリオでは、ターゲット表のカスケード制約およびトリガーを設定して
NOT FOR REPLICATION
を有効にし、ReplicatのDBOPTIONS USEREPLICATIONUSER
パラメータを使用してください。
親トピック: 処理のための表の準備
行識別子の割当て
Oracle GoldenGateでは、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表に一意の行識別子が必要です。ソース表は、Oracle GoldenGateが使用する行識別子の種類を判別する方法に記載されている任意の種類のキーを持つことができます。固定長の列が存在する表に主キーが識別されない場合、それらの固定長列のいずれかの長さは3800バイト未満である必要があります。
Oracle GoldenGateで使用する行識別子の種類を判別する方法
TABLE
またはMAP
文でKEYCOLS
句が使用されないかぎり、Oracle GoldenGateは、使用する行識別子を次の優先順位に従って選択します。
親トピック: 行識別子の割当て
KEYCOLS
を使用したカスタム・キーの指定
該当するキーが表にない場合、あるいは識別子を使用しない場合、表に常に一意の値を含んだ列があれば、代替キーを定義できます。ExtractのTABLE
パラメータおよびReplicatのMAP
パラメータ内にKEYCOLS
句を含めることで、この代替キーを定義します。指定されたキーは、Oracle GoldenGateが検出する既存の主キーまたは一意キーを上書きします。
親トピック: 行識別子の割当て
配列処理を使用したIDENTITY
レプリケーションの改善
セッションごとに1つの表しかIDENTITY_INSERT
をON
に設定できないため、セッション内の複数の表にIDENTITY
データを適用するときは、ReplicatがIDENTITY_INSERT
の切替えを続ける必要があります。このような状況で、Replicatのパフォーマンスを改善するには、BATCHSQL
パラメータを使用します。BATCHSQL
を使用すると、Replicatは、一度に1つずつSQL文を適用するかわりに配列処理を使用します。
親トピック: 処理のための表の準備
グローバリゼーション・サポート
Oracle GoldenGateのグローバリゼーション・サポートにより、ネイティブ言語のエンコーディングでのデータ処理が可能になります。Oracle GoldenGateの適用プロセス(Replicat)では、文字型の列にデータが含まれている場合に、ある文字セットから別の文字セットへのデータ変換がサポートされます。
親トピック: Oracle GoldenGateシステムの準備