在OGG同步过程中,经常会碰上有创建表或表空间的同步,往往因为源和目标的平台不同,如aix->linux or linux->windows,这两个平台的表空间也经常不同,在目标端执行DDL时,可能会报错:
OGG-00495 Oracle GoldenGate Delivery for Oracle, erep5.prm: DDL error ignore for next retry: error code [DEFAULT], filter [include all (default)], error text [Error code [959], ORA-00959: tablespace 'D_724ACCESS' does not exist, SQL CREATE INDEX "OGGADM"."CUSTMER_PK" ON CUSTMER (CUST_ID) TABLESPACE D_724ACCESS /* GOLDENGATE_DDL_REPLICATION */]
针对这种情况,一般是使用DDLSUBST进行源和目标端的表空间名称替换,即在目标端先建立好目标端需要的表空间,然后在rep参数文件中添加如下语句:
DDLSUBST 'src-tablespace-name' WITH 'target-tablespace-name' INCLUDE ALL