主コンテンツへ
Oracle® Fusion Middleware NonStop SQL/MXのためのOracle GoldenGateのインストールおよび構成
12c (12.2.0.1)
E72561-01
  目次へ移動
目次

前
 
次
 

3 Oracle GoldenGateの処理のためのシステムの準備

Oracle GoldenGate環境では、特定のデータベース属性に対応する必要があります。ソース・システムで必要な手順と。ターゲット・システムで必要な手順、両方で必要な手順があります。この章では、それらの手順について説明します。内容は次のとおりです。

3.1 SYSKEYまたはクラスタ化キーを使用して表をサポートするためのOracle GoldenGateの構成

SYSKEYまたはクラスタ化キーを含む表がReplicat構成に含まれる場合は、UPDATEまたはDELETE操作中に正しい行が変更されるように手順を実行する必要があります。Replicatでは、ODBCドライバを使用してターゲットSQL/MXデータベースに接続します。このドライバでは、Replicatでターゲット表のSYSKEYsの値を取得できないため、WHERE句で使用して処理の行を検出することはできません。この条件は、次のいずれかの方法で処理できます。

第3.1.1項「方法1 (Replicat構成を使用する処理)」

第3.1.2項「方法2 (Extract構成を使用する処理)」

3.1.1 方法1 (Replicat構成を使用する処理)


注意:

これは、SYSKEYまたはクラスタ化キーを含む表の処理の優先方法です。

この方法では、ソースSYSKEYをターゲット表の追加の列にマップします。これにより、キー値を使用して、同じキー値を含むターゲット行を検出するようにReplicatを構成できます。

  1. GGS_SYSKEYという名前の列をターゲット表に追加します。

  2. MAP文で、COLMAP句を使用して、ソースSYSKEY列をGGS_SYSKEY列にマップします。

  3. GGS_SYSKEY列を同じMAP文のKEYCOLS句に指定します。これにより、一意のソースSYSKEY値がターゲット表のキーとして使用されます。

このプロシージャの例を次に示します。

ソース表:

CREATE TABLE DEV.TSSCAT.ENTRY
  (
    COLA    INT DEFAULT NULL
  , COLB    CHAR(20)  DEFAULT DEFAULT NULL
  )

ターゲット表:

ターゲット表に、SYSKEYではなく、クラスタ化キーが含まれている場合は、ユーザー定義の列をSTORE BY句に含めます。

CREATE TABLE DEV.TASCAT.ENTRY
  (
    GGS_SYSKEY  LARGEINT NO DEFAULT NOT NULL
  , COLA        INT DEFAULT NULL
  , COLB        CHAR(20) DEFAULT DEFAULT NULL
  )
  STORE BY (GGS_SYSKEY ASC);

MAP文:

ターゲット表に、SYSKEYではなく、クラスタ化キーが含まれている場合は、ユーザー定義の列をSTORE BY句に含めます。

MAP TSSCAT.ENTRY, TARGET TASCAT.ENTRY,
   COLMAP (ggs_syskey = syskey, USEDEFAULTS),
   KEYCOLS (ggs_syskey);

3.1.2 方法2 (Extract構成を使用する処理)

Replicatでは、完全な行イメージを使用することで、キーに依存することなく、ターゲット表で行を検出できます。Replicatは、ターゲット・キーが定義されていない場合や、使用できない場合(ODBCで指定されていない場合)、デフォルトで完全な行イメージを使用します。この方法では、指定の行のすべての列値を組み合せることで、その行を表の他のすべての行から一意にする必要があります。そうしないと、Replicatは複数の行を変更する可能性があります。

この方法では、ターゲット表の定義を変更しないことが必要で、Replicat構成に特別な列マッピング要件がないことも必要です。必要なのは、ソース表属性およびExtract構成で圧縮を無効にすることのみです。

  1. ソース表を作成または変更し、ATTRIBUTE NO AUDITCOMPRESSを設定します。次に例を示します。

    CREATE TABLE DEV.TSSCAT.ENTRY
      (
        COLA    INT DEFAULT NULL
      , COLB    CHAR(20)  DEFAULT DEFAULT NULL
      )
      ATTRIBUTE NO AUDITCOMPRESS;
    
  2. Extractパラメータ・ファイルのNOCOMPRESSDELETESおよびNOCOMPRESSUPDATESパラメータを使用し、表のすべての列をUPDATEおよびDELETE操作の証跡に書き込むようにExtractを構成します。Replicatは、すべての列値を行ロケータとして使用します。(デフォルトでは、ExtractはキーをDELETEsの証跡にのみ書き込み、UPDATEsのキーおよび変更された列のみ書き込みます。)詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3.2 ODBCデータ・ソースの定義

次の手順を実行し、ソースではGGSCIコマンド・インタフェースから、ターゲットではReplicatプロセスからそれぞれ接続可能なデータ・ソース名(DSN)を指定します。

  1. NonStopシステムにログインして、TACLプロンプトを選択します。

  2. $SYSTEM.SYSTEM.ODBCDSN ODBC構成ファイルをEditまたはTEditで編集します。

  3. DSNを[ODBC Data Sources]リストに追加します(例3-1を参照)。このファイルにはデフォルトでTDM_Default_DataSourceというDSNおよびデフォルト接続設定が含まれています。

  4. 次の行を追加して、ユーザーのデータ・ソース接続を定義します(必要に応じて例3-1を参照)。

    • [dsn]: ヘッダーのdsnをDSNで置き換えます。

    • Description: 必要に応じて、テキスト文字列の説明文を追加します。

    • Catalog: データベース・カタログを追加します。

    • Schema: データベース・スキーマを追加します。

    • Server: NSKサーバーを追加します。サーバーはODBC/MXサーバーが稼働している場所で、TCP:IP_address_or_domain_name/IP_portの形式(例3-1を参照)で指定する必要があります。

    • その他のパラメータは、TDM_Default_DataSourceの下に指定されているデフォルト設定以外にする場合にのみ追加します。


    注意:

    ODBCDSNファイルのDSNは、ODBC/MXサービスで定義されているDSNと完全に一致する必要があります。データ・ソース名では大/小文字が区別されます。

  5. ファイルを保存して編集セッションを終了します。

例3/1 ODBC構成ファイルのテンプレート

TACL> Edit $SYSTEM.SYSTEM.ODBCDSN

[ODBC]
TraceFlags = 6
TraceStart = 0TraceFile = trlog

[ODBC Data Sources]
TDM_Default_DataSource = NonStop ODBC/MX 2.3
<dsn> = NonStop ODBC/MX 2.3

DataSourceName = <Driver>

[TDM_Default_DataSource]
Description = Default Data Source
Catalog = CAT
Schema = SCH
DataLang = 0
FetchBufferSize = SYSTEM_DEFAULT
Server = TCP:xxx.xxx.xxx.xxx/xxxx
SQL_ATTR_CONNECTION_TIMEOUT = NO_TIMEOUT
SQL_LOGIN_TIMEOUT = NO_TIMEOUT
SQL_QUERY_TIMEOUT = NO_TIMEOUT

[<dsn>]
Description = <text string describing data source>
Catalog = <target catalog>
Schema = <target schema>
Server = TCP:<ip address or domain name>/<ip port>

$SYSTEM.SYSTEM.ODBCDSNファイルおよびODBC for SQL/MXの構成方法の詳細は、『HP NonStop Open System Services ODBC/MX Client Driver』ドキュメントを参照してください。

http://h20000.www2.hp.com/bc/docs/support/SupportManual/c02132824/c02132824.pdf

3.3 SQL/MX構成でのオブジェクト名の指定

Oracle GoldenGateでは、パラメータ・ファイルおよびコマンドの2部構成(schema.table)および3部構成(catalog.schema.table)の両方の表名をサポートしています。オブジェクト名の指定の詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。

3.3.1 2部構成の名前の使用

2部構成の名前では、スキーマおよびオブジェクト名を指定します。名前のカタログをマップするには、その部分をExtractまたはReplicatグループにリンクする必要があります。1つのExtractまたはReplicatグループにリンクできるカタログは1つのみです。複数のカタログから取得または複数のカタログに適用するには、ソースでExtractグループごとにExtractグループを1つずつ、ターゲットでReplicatグループごとにReplicatグループを1つずつ作成する必要があります。カタログをExtractグループにリンクするには、SOURCEDBパラメータを使用します。カタログをReplicatグループにリンクするには、TARGETDBパラメータを使用します。SOURCEDBおよびTARGETDBUSERIDの部分は、デフォルト・スキーマを指定します。

SOURCEDB catalog USERID schema

TARGETDB catalog USERID schema

注意:

Extractで使用されるAPIはデータベースにログインしないので、認証パスワードは必要ありません。

3.3.2 3部構成の名前の使用

3部構成の名前では、カタログ、スキーマおよびオブジェクト名をcatalog.schema.objectとして指定します。GLOBALSファイルのENABLECATALOGNAMESパラメータを使用して、3部構成の名前のサポートを明示的に有効にする必要があります。GLOBALSファイルの詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。

3.4 SQL/MXターゲットでのトリガーおよびカスケード制約の無効化

ターゲットのSQL/MX表でトリガー、カスケード削除制約およびカスケード更新制約を無効にしたり、Oracle GoldenGateデータベースのユーザーによる変更を無視するためにそれらの制約を変更したりします。Oracle GoldenGateでは、トリガーまたはカスケード制約の結果として生成されるDMLがレプリケートされます。同じトリガーや制約がターゲット表でアクティブになった場合、レプリケートされたバージョンのために重複となり、データベースでエラーが返されます。ソース表にemp_srcsalary_src、ターゲット表にemp_targsalary_targを使用している次の例について考えます。

  1. emp_srcに削除が発行されます。

  2. それによって、削除がsalary_src にカスケードされます。

  3. Oracle GoldenGateによって、両方の削除がターゲットに送信されます。

  4. 親削除が最初に到達し、emp_targに適用されます。

  5. 親削除によって、削除がsalary_targにカスケードされます。

  6. salary_srcからカスケードされた削除がsalary_targに適用されます。

  7. 行はすでに手順5で削除されたため、その行を見つけることはできません。

3.5 SQL/MXターゲットでタイムアウトを回避するためのODBCの構成

次の手順を実行して、NonStopターゲットのODBC接続タイムアウトをSYSTEM_DEFAULT (10分)からNO_TIMEOUTに変更します。

  1. OSHでmxciを実行し、モードをmxcsに設定します。

    /G/DEV01/SUPERDEV 1>mxci
    >>mode mxcs;
    
  2. 次のコマンドを発行して現在の設定を表示します。

    info ds *,detail;
    

    システムは次のように応答します。

    例3-2

    Name: \SYSA.$MX.TDM_Default_DataSource
    CpuList: ALL
    InitPri..........Same as Assoc Server
    CurrentState..................STARTED
    ConnectedServers....................0
    AvailableServers....................4
    LastStateChg.............Apr 12 15:36
    LastUpdate...............Apr 12 14:56
    IdleServer..........................4
    IdleTimeout............SYSTEM_DEFAULT
    MaxServer.........................100
    ConnTimeout............SYSTEM_DEFAULT
    InitServer..........................4
    StartAutomatic.....................ON
    Trace.............................OFF
    SQLPrepareStat....................OFF
    ConnInfoStat.......................ON
    SQLExecuteStat....................OFF
    SessionInfoStat....................ON
    SQLExecDirectStat.................OFF
    SQLStmtStat.......................OFF
    SQLFetchStat......................OFF
    
  3. 次のようにして、IdleTimeoutおよびConnTimeoutNO_TIMEOUTに変更します。

    CS>alter ds "TDM_Default_DataSource", IdleTimeout NO_TIMEOUT;
    CS>>alter ds "TDM_Default_DataSource", ConnTimeout NO_TIMEOUT;
    
  4. Oracle GoldenGateで使用される可能性があるdsに対して、変更を繰り返します。

3.6 SQL/MXターゲットでの接続認証の指定

次のパラメータをReplicatパラメータ・ファイルに追加して、ReplicatがSQL/MXターゲット・データベースで使用するODBC接続認証を指定します。

TARGETDB DSN USERID user, PASSWORD password
  • TARGETDBおよびUSERIDパラメータを1つのエントリとして使用します。

  • TARGETDBで、ODBCデータ・ソース名を指定します。

  • USERIDでユーザー名およびパスワードを指定します。

3.7 NonStopターゲットでのデータ定義ファイルの指定

NonStop SQL/MXソース・データベースとターゲット・データベース間でデータをレプリケートするには、2つのデータベースのバージョンと構造が同じ場合でも、Replicatプロセスにソース・データ定義を指定する必要があります。Oracle GoldenGateにメタデータが返される方法は、ネイティブAPIによってソース・データベースから返される場合と、ODBCによってターゲット・データベースから返される場合とでは少し異なります。

  1. DEFGENユーティリティを使用してデータ定義ファイルを作成します。

  2. 定義ファイルをターゲット・システムに転送します。

  3. Replicatパラメータ・ファイルのSOURCEDEFSパラメータを使用して、定義ファイルの完全修飾名を指定します。

データ定義ファイルの詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。