特定のデータベース属性は、Oracle GoldenGate環境で処理する必要があります。ソース・システムまたはターゲット・システム、あるいはその両方で必要な手順があります。この章では、次の手順について説明します。次の項で構成されています。
SYSKEYまたはクラスタ化キーを含む表がReplicat構成に含まれる場合は、UPDATEまたはDELETE操作中に正しい行が変更されるように手順を実行する必要があります。Replicatでは、ODBCドライバを使用してターゲットSQL/MXデータベースに接続します。このドライバでは、Replicatでターゲット表のSYSKEYsの値を取得できないため、WHERE句で使用して処理の行を検出することはできません。この条件は、次のいずれかの方法で処理できます。
|
注意: これは、 |
この方法では、ソースSYSKEYをターゲット表の追加の列にマップします。これにより、キー値を使用して、同じキー値を含むターゲット行を検出するようにReplicatを構成できます。
GGS_SYSKEYという名前の列をターゲット表に追加します。
MAP文で、COLMAP句を使用して、ソースSYSKEY列をGGS_SYSKEY列にマップします。
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);
Replicatでは、完全な行イメージを使用することで、キーに依存することなく、ターゲット表で行を検出できます。Replicatは、ターゲット・キーが定義されていない場合や、使用できない場合(ODBCで指定されていない場合)、デフォルトで完全な行イメージを使用します。この方法では、指定の行のすべての列値を組み合せることで、その行を表の他のすべての行から一意にする必要があります。そうしないと、Replicatは複数の行を変更する可能性があります。
この方法では、ターゲット表の定義を変更しないことが必要で、Replicat構成に特別な列マッピング要件がないことも必要です。必要なのは、ソース表属性およびExtract構成で圧縮を無効にすることのみです。
ソース表を作成または変更し、ATTRIBUTE NO AUDITCOMPRESSを設定します。次に例を示します。
CREATE TABLE DEV.TSSCAT.ENTRY
(
COLA INT DEFAULT NULL
, COLB CHAR(20) DEFAULT DEFAULT NULL
)
ATTRIBUTE NO AUDITCOMPRESS;
Extractパラメータ・ファイルのNOCOMPRESSDELETESおよびNOCOMPRESSUPDATESパラメータを使用し、表のすべての列をUPDATEおよびDELETE操作の証跡に書き込むようにExtractを構成します。Replicatは、すべての列値を行ロケータとして使用します。(デフォルトでは、ExtractはキーをDELETEsの証跡にのみ書き込み、UPDATEsのキーおよび変更された列のみ書き込みます。)詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
次の手順を実行し、ソースではGGSCIコマンド・インタフェースから、ターゲットではReplicatプロセスからそれぞれ接続可能なデータ・ソース名(DSN)を指定します。
NonStopシステムにログインして、TACLプロンプトを選択します。
$SYSTEM.SYSTEM.ODBCDSN構成ファイルをEditまたはTeditで編集します。
DSNを[ODBC Data Sources]リストに追加します(例3-1を参照)。このファイルにはデフォルトでTDM_Default_DataSourceというDSNおよびデフォルト接続設定が含まれています。
次の行を追加して、ユーザーのデータ・ソース接続を定義します(必要に応じて例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の下に指定されているデフォルト設定以外にする場合にのみ追加します。
|
注意:
|
ファイルを保存して編集セッションを終了します。
例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 = SYSTEM_DEFAULT SQL_LOGIN_TIMEOUT = SYSTEM_DEFAULT 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
Oracle GoldenGateでは、パラメータ・ファイルおよびコマンドの2部構成(schema.table)および3部構成(catalog.schema.table)の両方の表名をサポートしています。オブジェクト名の指定の詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。
2部構成の名前では、スキーマおよびオブジェクト名を指定します。名前のカタログをマップするには、その部分をExtractまたはReplicatグループにリンクする必要があります。1つのExtractまたはReplicatグループにリンクできるカタログは1つのみです。複数のカタログから取得または複数のカタログに適用するには、ソースでExtractグループごとにExtractグループを1つずつ、ターゲットでReplicatグループごとにReplicatグループを1つずつ作成する必要があります。カタログをExtractグループにリンクするには、SOURCEDBパラメータを使用します。カタログをReplicatグループにリンクするには、TARGETDBパラメータを使用します。SOURCEDBおよびTARGETDBのUSERIDの部分は、デフォルト・スキーマを指定します。
SOURCEDBcatalogUSERIDschemaTARGETDBcatalogUSERIDschema
|
注意: Extractで使用されるAPIはデータベースにログインしないので、認証パスワードは必要ありません。 |
SQL/MXのターゲット表でトリガー、カスケード削除制約およびカスケード更新制約を無効にするか、これらを変更してOracle GoldenGateデータベース・ユーザーによる変更が無視されるようにします。Oracle GoldenGateでは、トリガーまたはカスケード制約によって生じるDMLがレプリケートされます。ターゲット・テーブルで同じトリガーまたは制約を有効にした場合、レプリケートされたバージョンのためにそのトリガーまたは制約が冗長になり、データベースによってエラーが返されます。次の例を検討してください(この場合、ソース表はemp_srcおよびsalary_src、ターゲット表はemp_targおよびsalary_targです)。
emp_srcに削除が発行されます。
これによって、削除がsalary_srcにカスケードされます。
Oracle GoldenGateによって、両方の削除がターゲットに送信されます。
親削除が最初に到達し、emp_targに適用されます。
親削除によって、削除がsalary_targにカスケードされます。
salary_srcからカスケードされた削除がsalary_targに適用されます。
行はすでに手順5で削除されたため、その行を見つけることはできません。
次の手順を実行して、NonStopターゲットのODBC接続タイムアウトをSYSTEM_DEFAULT (10分)からNO_TIMEOUTに変更します。
OSHでmxciを実行し、モードをmxcsに設定します。
/G/DEV01/SUPERDEV 1>mxci >>mode mxcs;
次のコマンドを発行して現在の設定を表示します。
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
次のようにして、IdleTimeoutおよびConnTimeoutをNO_TIMEOUTに変更します。
CS>alter ds "TDM_Default_DataSource", IdleTimeout NO_TIMEOUT; CS>>alter ds "TDM_Default_DataSource", ConnTimeout NO_TIMEOUT;
NonStop SQL/MXサーバーを再起動します。
次のパラメータをReplicatパラメータ・ファイルに追加して、ReplicatがSQL/MXターゲット・データベースで使用するODBC接続認証を指定します。
TARGETDBDSNUSERIDuser, PASSWORDpassword
TARGETDBおよびUSERIDパラメータを1つのエントリとして使用します。
TARGETDBデータ・ソース名を指定します。
USERIDでユーザー名およびパスワードを指定します。
NonStop SQL/MXソース・データベースとターゲット・データベース間でデータをレプリケートするには、2つのデータベースのバージョンと構造が同じ場合でも、Replicatプロセスにソース・データ定義を指定する必要があります。Oracle GoldenGateにメタデータが返される方法は、ネイティブAPIによってソース・データベースから返される場合と、ODBCによってターゲット・データベースから返される場合とでは少し異なります。
DEFGENユーティリティを使用してデータ定義ファイルを作成します。
定義ファイルをターゲット・システムに転送します。
Replicatパラメータ・ファイルのSOURCEDEFSパラメータを使用して、定義ファイルの完全修飾名を指定します。
データ定義ファイルの詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。