SQLEXECのその他のガイドライン

次のSQLEXECガイドラインに従ってください。

  • TABLEまたはMAPの1つのエントリで、最大20のプロシージャまたは問合せを実行できます。これらは、パラメータ文にリストされている順序で実行されます。

  • SQLEXEC句よりも先に、Oracle GoldenGateユーザーのデータベース・ログイン情報を指定する必要があります。データベース・タイプおよび構成済の認証方式に応じて、Extractパラメータ・ファイルのSOURCEDBおよびUSERIDALIASパラメータ、またはReplicatパラメータ・ファイルのTARGETDBおよびUSERIDALIASパラメータを使用します。

  • SQLは、Oracle GoldenGateユーザーによって実行されます。このユーザーは、ストアド・プロシージャを実行し、RDBM提供のプロシージャをコールする権限を持っている必要があります。

  • ストアド・プロシージャまたは問合せ内のデータベース操作は、元のトランザクションと同じコンテキストでコミットされます。

  • SQLEXECを使用して主キー列の値を更新しないでください。SQLEXECを使用してキー列の値を更新すると、元のキー値が使用できなくなるため、Replicatプロセスで後続の更新操作または削除操作を実行できなくなります。キー値を変更する必要がある場合、元のキー値を別の列にマップして、TABLEパラメータまたはMAPパラメータのKEYCOLSオプションを使用してその列を指定できます。

  • Db2では、Oracle GoldenGateはODBCのSQLExecDirect関数を使用してSQL文を動的に実行します。つまり、接続先のデータベース・サーバーは、文を動的に準備できる必要があります。ODBCは、実行のたびに(リクエストされる間隔で)SQL文を準備します。通常は、このことがOracle GoldenGateユーザーの問題になることはありません。詳細は、IBM Db2のドキュメントを参照してください。

  • SQLEXEC文中のオブジェクト名はすべて、データベースに応じて、2つまたは3つの部分からなる完全修飾名である必要があります。

  • SQLEXECのストアド・プロシージャまたは問合せの影響を受けるすべてのオブジェクトは、SQLの実行前に適切な構造で存在している必要があります。したがって、これらのオブジェクトの構造に影響するDDL (CREATEALTERなど)は、SQLEXECの実行前に実行される必要があります。

  • 単独SQLEXEC文によって影響を受けるすべてのオブジェクトは、Oracle GoldenGateプロセスの起動前に存在している必要があります。このため、DDLサポートは、これらのオブジェクトに対して無効にする必要があります。そうしないと、SQLEXECのプロシージャまたは問合せが実行される前に、DDL操作によって構造が変更されたり、オブジェクトが削除されたりする可能性があります。