ROWID列を含む表の処理
ROWID GENERATED ALWAYS
(デフォルト)のデータ型の列を含むターゲット表に挿入しようとすると、次のODBCエラーで失敗します。
ODBC error: SQLSTATE 428C9 native database error -798. {DB2 FOR OS/390}{ODBC DRIVER}{DSN08015} DSNT408I SQLCODE = -798, ERROR: YOU CANNOT INSERT A VALUE INTO A COLUMN THAT IS DEFINED WITH THE OPTION GENERATED ALWAYS. COLUMN NAME ROWIDCOL.
次のいずれかを行って、ROWID
列を含む表がOracle GoldenGateによって処理されるように準備します。
-
ターゲット表の
ROWID
列がGENERATED BY DEFAULT
として定義されていることを確認します。 -
表定義を変更できない場合、次の手順を使用して回避します。
ROWID GENERATE ALWAYS
を回避する手順:
-
ソース表に対するExtract
TABLE
文を作成し、その文で、ROWID
列を除外するCOLSEXCEPT
句を使用します。たとえば:TABLE tab1, COLSEXCEPT (rowidcol);
COLSEXCEPT
句で、ROWID
列が取得されてターゲット表にレプリケートされないようにします。 -
ターゲット表では、Replicatが
ROWID
をキーとして使用しないようにします。これは、次のいずれかの方法で行えます。-
ターゲット表定義で主キーを指定します。
-
キーを作成できない場合、表に対するReplicat
MAP
パラメータを作成し、その文にKEYCOLS
句を使用してROWID
列以外の一意の列を含めます。Replicatは、それらの列をキーとして使用します。たとえば:MAP tab1, TARGET tab1, KEYCOLS (num, ckey);
-