How DDL is Evaluated for Processing
This topic explains how Oracle GoldenGate processes DDL statements on the source and target systems.
It shows the order in which different criteria in the Oracle GoldenGate parameters are processed, and it explains the differences between how Extract and Replicat each process the DDL.
Extract
-
Extract captures a DDL statement.
-
Extract separates comments, if any, from the main statement.
-
Extract searches for the
DDL
parameter. (This example assumes it exists.) -
Extract searches for the
IGNOREREPLICATES
parameter. If it is present, and if Replicat produced this DDL on this system, Extract ignores the DDL statement. (This example assumes no Replicat operations on this system.) -
Extract determines whether the DDL statement is a
RENAME
. If so, the rename is flagged internally. -
Extract gets the base object name and, if present, the derived object name.
-
If the statement is a
RENAME
, Extract changes it toALTER TABLE RENAME
. -
Extract searches for the
DDLOPTIONS REMOVECOMMENTS BEFORE
parameter. If it is present, Extract removes the comments from the DDL statement, but stores them in case there is aDDL INCLUDE
orDDL EXCLUDE
clause that usesINSTR
orINSTRCOMMENTS
. -
Extract determines the DDL scope:
MAPPED
,UNMAPPED
orOTHER
:-
It is
MAPPED
if the operation and object types are supported for mapping, and the base object name and/or derived object name (ifRENAME
) is in aTABLE
parameter.
-
It is
UNMAPPED
if the operation and object types are not supported for mapping, and the base object name and/or derived object name (ifRENAME
) is not in aTABLE
parameter. -
Otherwise the operation is identified as
OTHER
.
-
-
Extract checks the
DDL
parameter forINCLUDE
andEXCLUDE
clauses, and it evaluates theDDL
parameter criteria in those clauses. All options must evaluate toTRUE
in order for theINCLUDE
orEXCLUDE
to evaluate toTRUE
. The following occurs:-
If an
EXCLUDE
clause evaluates toTRUE
, Extract discards the DDL statement and evaluates another DDL statement. In this case, the processing steps start over. -
If an
INCLUDE
clause evaluates toTRUE
, or if theDDL
parameter does not have anyINCLUDE
orEXCLUDE
clauses, Extract includes the DDL statement, and the processing logic continues.
-
-
Extract searches for a
DDLSUBST
parameter and evaluates theINCLUDE
andEXCLUDE
clauses. If the criteria in those clauses add up toTRUE
, Extract performs string substitution. Extract evaluates the DDL statement against eachDDLSUBST
parameter in the parameter file. For all trueDDLSUBST
specifications, Extract performs string substitution in the order that theDDLSUBST
parameters are listed in the file. -
Now that
DDLSUBT
has been processed, Extract searches for theREMOVECOMMENTS AFTER
parameter. If it is present, Extract removes the comments from the DDL statement. -
Extract searches for
DDLOPTIONS ADDTRANDATA
. If it is present, and if the operation isCREATE TABLE
, Extract issues theALTER TABLE
name
ADD SUPPLEMENTAL LOG GROUP
command on the table. -
Extract writes the DDL statement to the trail.
Replicat
-
Replicat reads the DDL statement from the trail.
-
Replicat separates comments, if any, from the main statement.
-
Replicat searches for
DDLOPTIONS REMOVECOMMENTS BEFORE
. If it is present, Replicat removes the comments from the DDL statement. -
Replicat evaluates the DDL synchronization scope to determine if the DDL qualifies for name mapping. Anything else is of
OTHER
scope. -
Replicat evaluates the
MAP
statements in the parameter file. If the source base object name for this DDL (as read from the trail) appears in any of theMAP
statements, the operation is marked asMAPPED
in scope. Otherwise it is marked asUNMAPPED
in scope. -
Replicat replaces the source base object name with the base object name that is specified in the
TARGET
clause of theMAP
statement. -
If there is a derived object, Replicat searches for
DDLOPTIONS MAPDERIVED
. If it is present, Replicat replaces the source derived name with the target derived name from theMAP
statement. -
Replicat checks the
DDL
parameter forINCLUDE
andEXCLUDE
clauses, and it evaluates theDDL
parameter criteria contained in them. All options must evaluate toTRUE
in order for theINCLUDE
orEXCLUDE
to evaluate toTRUE
. The following occurs:-
If any
EXCLUDE
clause evaluates toTRUE
, Replicat discards the DDL statement and starts evaluating another DDL statement. In this case, the processing steps start over. -
If any
INCLUDE
clause evaluates toTRUE
, or if theDDL
parameter does not have anyINCLUDE
orEXCLUDE
clauses, Replicat includes the DDL statement, and the processing logic continues.
-
-
Replicat searches for the
DDLSUBST
parameter and evaluates theINCLUDE
andEXCLUDE
clauses. If the options in those clauses add up toTRUE
, Replicat performs string substitution. Replicat evaluates the DDL statement against eachDDLSUBST
parameter in the parameter file. For all trueDDLSUBST
specifications, Replicat performs string substitution in the order that theDDLSUBST
parameters are listed in the file. -
Now that
DDLSUBT
has been processed, Replicat searches for theREMOVECOMMENTS AFTER
parameter. If it is present, Replicat removes the comments from the DDL statement. -
Replicat executes the DDL statement on the target database.
-
If there are no errors, Replicat processes the next DDL statement. If there are errors, Replicat performs the following steps.
-
Replicat analyzes the
INCLUDE
andEXCLUDE
rules in the ReplicatDDLERROR
parameters in the order that they appear in the parameter file. If Replicat finds a rule for the error code, it applies the specified error handling; otherwise, it appliesDEFAULT
handling. -
If the error handling does not enable the DDL statement to succeed, Replicat does one of the following: abends, ignores the operation, or discards it as specified in the rules.
Note:
If there are multiple targets for the same source in a MAP
statement, the processing logic executes for each one.