This article presents the complete full list of cases that has been used in Extract analysis of Oracle GoldenGate 11.2
In the previous article I have presented an summary of all Extract options that influence what is written to the trail files. Here is a summary of what I have tested and what results I have got:
1. Source database
On the source database the schema is:
CREATE TABLE adam.ref1( pk1 INT NOT NULL, pk2 INT NOT NULL, pk3 INT NOT NULL ); ALTER TABLE adam.ref1 ADD CONSTRAINT ref1pk PRIMARY KEY(pk1, pk2, pk3); --PK, UI, (pk1) is PK CREATE TABLE adam.tab0( pk1 INT NOT NULL, fk1 INT NOT NULL, fk2 INT NOT NULL, fk3 INT NOT NULL, fk4 INT NOT NULL, fk5 INT NOT NULL, fk6 INT NOT NULL, ui1 INT NOT NULL, ui2 INT NOT NULL, ui3 INT NOT NULL, ui4 INT NOT NULL, ui5 INT NOT NULL, ui6 INT NOT NULL, co1 INT NOT NULL, co2 INT NOT NULL, co3 INT NOT NULL, co4 INT NOT NULL, co5 INT NOT NULL ); ALTER TABLE adam.tab0 ADD CONSTRAINT tab0pk PRIMARY KEY(pk1); ALTER TABLE adam.tab0 ADD CONSTRAINT tab0fk1 FOREIGN KEY(fk1, fk2, fk3) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab0 ADD CONSTRAINT tab0fk2 FOREIGN KEY(fk4, fk5, fk6) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab0 ADD CONSTRAINT tab0u1 UNIQUE(ui1, ui2, ui3); ALTER TABLE adam.tab0 ADD CONSTRAINT tab0u2 UNIQUE(ui4, ui5, ui6); --PK, UI, (ui4, ui5, ui6) is PK CREATE TABLE adam.tab1( pk1 INT NOT NULL, fk1 INT NOT NULL, fk2 INT NOT NULL, fk3 INT NOT NULL, fk4 INT NOT NULL, fk5 INT NOT NULL, fk6 INT NOT NULL, ui1 INT NOT NULL, ui2 INT NOT NULL, ui3 INT NOT NULL, ui4 INT NOT NULL, ui5 INT NOT NULL, ui6 INT NOT NULL, co1 INT NOT NULL, co2 INT NOT NULL, co3 INT NOT NULL, co4 INT NOT NULL, co5 INT NOT NULL ); ALTER TABLE adam.tab1 ADD CONSTRAINT tab1pk PRIMARY KEY(pk1); ALTER TABLE adam.tab1 ADD CONSTRAINT tab1fk1 FOREIGN KEY(fk1, fk2, fk3) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab1 ADD CONSTRAINT tab1fk2 FOREIGN KEY(fk4, fk5, fk6) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab1 ADD CONSTRAINT tab1u1 UNIQUE(ui1, ui2, ui3); ALTER TABLE adam.tab1 ADD CONSTRAINT tab1u2 UNIQUE(ui4, ui5, ui6); --PK, UI, (col5) is PK CREATE TABLE adam.tab2( pk1 INT NOT NULL, fk1 INT NOT NULL, fk2 INT NOT NULL, fk3 INT NOT NULL, fk4 INT NOT NULL, fk5 INT NOT NULL, fk6 INT NOT NULL, ui1 INT NOT NULL, ui2 INT NOT NULL, ui3 INT NOT NULL, ui4 INT NOT NULL, ui5 INT NOT NULL, ui6 INT NOT NULL, co1 INT NOT NULL, co2 INT NOT NULL, co3 INT NOT NULL, co4 INT NOT NULL, co5 INT NOT NULL ); ALTER TABLE adam.tab2 ADD CONSTRAINT tab2pk PRIMARY KEY(pk1); ALTER TABLE adam.tab2 ADD CONSTRAINT tab2fk1 FOREIGN KEY(fk1, fk2, fk3) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab2 ADD CONSTRAINT tab2fk2 FOREIGN KEY(fk4, fk5, fk6) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab2 ADD CONSTRAINT tab2u1 UNIQUE(ui1, ui2, ui3); ALTER TABLE adam.tab2 ADD CONSTRAINT tab2u2 UNIQUE(ui4, ui5, ui6); --UI, (ui4, ui5, ui6) is PK CREATE TABLE adam.tab3( pk1 INT NOT NULL, fk1 INT NOT NULL, fk2 INT NOT NULL, fk3 INT NOT NULL, fk4 INT NOT NULL, fk5 INT NOT NULL, fk6 INT NOT NULL, ui1 INT NOT NULL, ui2 INT NOT NULL, ui3 INT NOT NULL, ui4 INT NOT NULL, ui5 INT NOT NULL, ui6 INT NOT NULL, co1 INT NOT NULL, co2 INT NOT NULL, co3 INT NOT NULL, co4 INT NOT NULL, co5 INT NOT NULL ); ALTER TABLE adam.tab3 ADD CONSTRAINT tab3fk1 FOREIGN KEY(fk1, fk2, fk3) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab3 ADD CONSTRAINT tab3fk2 FOREIGN KEY(fk4, fk5, fk6) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab3 ADD CONSTRAINT tab3u1 UNIQUE(ui1, ui2, ui3); ALTER TABLE adam.tab3 ADD CONSTRAINT tab3u2 UNIQUE(ui4, ui5, ui6); --UI, (col5) is PK CREATE TABLE adam.tab4( pk1 INT NOT NULL, fk1 INT NOT NULL, fk2 INT NOT NULL, fk3 INT NOT NULL, fk4 INT NOT NULL, fk5 INT NOT NULL, fk6 INT NOT NULL, ui1 INT NOT NULL, ui2 INT NOT NULL, ui3 INT NOT NULL, ui4 INT NOT NULL, ui5 INT NOT NULL, ui6 INT NOT NULL, co1 INT NOT NULL, co2 INT NOT NULL, co3 INT NOT NULL, co4 INT NOT NULL, co5 INT NOT NULL ); ALTER TABLE adam.tab4 ADD CONSTRAINT tab4fk1 FOREIGN KEY(fk1, fk2, fk3) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab4 ADD CONSTRAINT tab4fk2 FOREIGN KEY(fk4, fk5, fk6) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab4 ADD CONSTRAINT tab4u1 UNIQUE(ui1, ui2, ui3); ALTER TABLE adam.tab4 ADD CONSTRAINT tab4u2 UNIQUE(ui4, ui5, ui6); --nothing, (col5) is PK CREATE TABLE adam.tab5( pk1 INT NOT NULL, fk1 INT NOT NULL, fk2 INT NOT NULL, fk3 INT NOT NULL, fk4 INT NOT NULL, fk5 INT NOT NULL, fk6 INT NOT NULL, ui1 INT NOT NULL, ui2 INT NOT NULL, ui3 INT NOT NULL, ui4 INT NOT NULL, ui5 INT NOT NULL, ui6 INT NOT NULL, co1 INT NOT NULL, co2 INT NOT NULL, co3 INT NOT NULL, co4 INT NOT NULL, co5 INT NOT NULL ); ALTER TABLE adam.tab5 ADD CONSTRAINT tab5fk1 FOREIGN KEY(fk1, fk2, fk3) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab5 ADD CONSTRAINT tab5fk2 FOREIGN KEY(fk4, fk5, fk6) references adam.ref1(pk1, pk2, pk3); --nothing, (co2) is PK, modify PK CREATE TABLE adam.tab6( pk1 INT NOT NULL, fk1 INT NOT NULL, fk2 INT NOT NULL, fk3 INT NOT NULL, fk4 INT NOT NULL, fk5 INT NOT NULL, fk6 INT NOT NULL, ui1 INT NOT NULL, ui2 INT NOT NULL, ui3 INT NOT NULL, ui4 INT NOT NULL, ui5 INT NOT NULL, ui6 INT NOT NULL, co1 INT NOT NULL, co2 INT NOT NULL, co3 INT NOT NULL, co4 INT NOT NULL, co5 INT NOT NULL ); ALTER TABLE adam.tab6 ADD CONSTRAINT tab6fk1 FOREIGN KEY(fk1, fk2, fk3) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab6 ADD CONSTRAINT tab6fk2 FOREIGN KEY(fk4, fk5, fk6) references adam.ref1(pk1, pk2, pk3); --nothing, (allcols) is PK CREATE TABLE adam.tab7( pk1 INT NOT NULL, fk1 INT NOT NULL, fk2 INT NOT NULL, fk3 INT NOT NULL, fk4 INT NOT NULL, fk5 INT NOT NULL, fk6 INT NOT NULL, ui1 INT NOT NULL, ui2 INT NOT NULL, ui3 INT NOT NULL, ui4 INT NOT NULL, ui5 INT NOT NULL, ui6 INT NOT NULL, co1 INT NOT NULL, co2 INT NOT NULL, co3 INT NOT NULL, co4 INT NOT NULL, co5 INT NOT NULL ); ALTER TABLE adam.tab7 ADD CONSTRAINT tab7fk1 FOREIGN KEY(fk1, fk2, fk3) references adam.ref1(pk1, pk2, pk3); ALTER TABLE adam.tab7 ADD CONSTRAINT tab7fk2 FOREIGN KEY(fk4, fk5, fk6) references adam.ref1(pk1, pk2, pk3);
2. Target tables
CREATE TABLE anna.tab1( pk1 INT NULL, tablename varchar(32) NULL, optype varchar(32) NULL, beforafterind varchar(32) NULL, fk1 INT NULL, fk2 INT NULL, fk3 INT NULL, fk4 INT NULL, fk5 INT NULL, fk6 INT NULL, ui1 INT NULL, ui2 INT NULL, ui3 INT NULL, ui4 INT NULL, ui5 INT NULL, ui6 INT NULL, co1 INT NULL, co2 INT NULL, co3 INT NULL, co4 INT NULL, co5 INT NULL, pk1b INT NULL, fk1b INT NULL, fk2b INT NULL, fk3b INT NULL, fk4b INT NULL, fk5b INT NULL, fk6b INT NULL, ui1b INT NULL, ui2b INT NULL, ui3b INT NULL, ui4b INT NULL, ui5b INT NULL, ui6b INT NULL, co1b INT NULL, co2b INT NULL, co3b INT NULL, co4b INT NULL, co5b INT NULL );
3. Test data
INSERT INTO adam.ref1 VALUES(10, 11, 12); INSERT INTO adam.ref1 VALUES(10, 11, 13); COMMIT; INSERT INTO adam.tab0(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5) VALUES( 0, 10, 11, 12, 10, 11, 12, 20, 21 , 22, 20, 21, 22, 30, 31, 32, 33, 34); COMMIT; UPDATE adam.tab0 SET fk2 = 11, fk3 = 13, ui2 = 21, ui3 = 23, co2 = 31, co3 = 33; COMMIT; UPDATE adam.tab0 set pk1 = 1; COMMIT; DELETE FROM adam.tab0; COMMIT; INSERT INTO adam.tab1(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5) VALUES( 0, 10, 11, 12, 10, 11, 12, 20, 21 , 22, 20, 21, 22, 30, 31, 32, 33, 34); COMMIT; UPDATE adam.tab1 SET fk2 = 11, fk3 = 13, ui2 = 21, ui3 = 23, co2 = 31, co3 = 33; COMMIT; UPDATE adam.tab1 set ui4 = 19; COMMIT; DELETE FROM adam.tab1; COMMIT; INSERT INTO adam.tab2(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5) VALUES( 0, 10, 11, 12, 10, 11, 12, 20, 21 , 22, 20, 21, 22, 30, 31, 32, 33, 34); COMMIT; UPDATE adam.tab2 SET fk2 = 11, fk3 = 13, ui2 = 21, ui3 = 23, co2 = 31, co3 = 33; COMMIT; UPDATE adam.tab2 set co5 = 35; COMMIT; DELETE FROM adam.tab2; COMMIT; INSERT INTO adam.tab3(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5) VALUES( 0, 10, 11, 12, 10, 11, 12, 20, 21 , 22, 20, 21, 22, 30, 31, 32, 33, 34); COMMIT; UPDATE adam.tab3 SET fk2 = 11, fk3 = 13, ui2 = 21, ui3 = 23, co2 = 31, co3 = 33; COMMIT; UPDATE adam.tab3 set ui4 = 19; COMMIT; DELETE FROM adam.tab3; COMMIT; INSERT INTO adam.tab4(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5) VALUES( 0, 10, 11, 12, 10, 11, 12, 20, 21 , 22, 20, 21, 22, 30, 31, 32, 33, 34); COMMIT; UPDATE adam.tab4 SET fk2 = 11, fk3 = 13, ui2 = 21, ui3 = 23, co2 = 31, co3 = 33; COMMIT; UPDATE adam.tab4 set co5 = 35; COMMIT; DELETE FROM adam.tab4; COMMIT; INSERT INTO adam.tab5(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5) VALUES( 0, 10, 11, 12, 10, 11, 12, 20, 21 , 22, 20, 21, 22, 30, 31, 32, 33, 34); COMMIT; UPDATE adam.tab5 SET fk2 = 11, fk3 = 13, ui2 = 21, ui3 = 23, co2 = 31, co3 = 33; COMMIT; UPDATE adam.tab5 set co5 = 35; COMMIT; DELETE FROM adam.tab5; COMMIT; INSERT INTO adam.tab6(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5) VALUES( 0, 10, 11, 12, 10, 11, 12, 20, 21 , 22, 20, 21, 22, 30, 31, 32, 33, 34); COMMIT; UPDATE adam.tab6 SET fk2 = 11, fk3 = 13, ui2 = 21, ui3 = 23, co2 = 30, co3 = 33; COMMIT; UPDATE adam.tab6 set co2 = 29; COMMIT; DELETE FROM adam.tab6; COMMIT; INSERT INTO adam.tab7(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5) VALUES( 0, 10, 11, 12, 10, 11, 12, 20, 21 , 22, 20, 21, 22, 30, 31, 32, 33, 34); COMMIT; UPDATE adam.tab7 SET fk2 = 11, fk3 = 13, ui2 = 21, ui3 = 23, co2 = 31, co3 = 33; COMMIT; UPDATE adam.tab7 set co5 = 35; COMMIT; DELETE FROM adam.tab7; COMMIT;
3. ADD TRANDATA commands
--PK, UI, (pk1) is PK ADD TRANDATA adam.tab0, COLS(co4) --PK, UI, (ui4, ui5, ui6) is PK ADD TRANDATA adam.tab1, COLS(co4, ui4, ui5, ui6), NOKEY --PK, UI, (co5) is PK ADD TRANDATA adam.tab2, COLS(co4, co5), NOKEY --UI, (ui4, ui5, ui6) is PK ADD TRANDATA adam.tab3, COLS(co4, ui4, ui5, ui6), NOKEY --UI, (co5) is PK ADD TRANDATA adam.tab4, COLS(co4, co5), NOKEY --nothing, (co5) is PK ADD TRANDATA adam.tab5, COLS(co4, co5), NOKEY --nothing, (co2) is PK, modify PK ADD TRANDATA adam.tab6, COLS(co4, co2), NOKEY --nothing, (allcols) is PK ADD TRANDATA adam.tab7, COLS(pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5), NOKEY
4. Replicat PARAM file
INSERTALLRECORDS MAP adam.tab0, TARGET anna.tab1, KEYCOLS(pk1), & COLMAP(pk1 = pk1, tablename = @GETENV("GGHEADER","TABLENAME"), optype = @GETENV("GGHEADER","OPTYPE"), beforafterind = @GETENV("GGHEADER","BEFOREAFTERINDICATOR"), & fk1 = fk1, fk2 = fk2, fk3 = fk3, fk4 = fk4, fk5 = fk5, fk6 = fk6, & ui1 = ui1, ui2 = ui2, ui3 = ui3, ui4 = ui4, ui5 = ui5, ui6 = ui6, & co1 = co1, co2 = co2, co3 = co3, co4 = co4, co5 = co5, & pk1b = BEFORE.pk1, fk1b = BEFORE.fk1, fk2b = BEFORE.fk2, fk3b = BEFORE.fk3, fk4b = BEFORE.fk4, fk5b = BEFORE.fk5, fk6b = BEFORE.fk6, & ui1b = BEFORE.ui1, ui2b = BEFORE.ui2, ui3b = BEFORE.ui3, ui4b = BEFORE.ui4, ui5b = BEFORE.ui5, ui6b = BEFORE.ui6, & co1b = BEFORE.co1, co2b = BEFORE.co2, co3b = BEFORE.co3, co4b = BEFORE.co4, co5b = BEFORE.co5 & ); MAP adam.tab1, TARGET anna.tab1, KEYCOLS(pk1), & COLMAP(pk1 = pk1, tablename = @GETENV("GGHEADER","TABLENAME"), optype = @GETENV("GGHEADER","OPTYPE"), beforafterind = @GETENV("GGHEADER","BEFOREAFTERINDICATOR"), & fk1 = fk1, fk2 = fk2, fk3 = fk3, fk4 = fk4, fk5 = fk5, fk6 = fk6, & ui1 = ui1, ui2 = ui2, ui3 = ui3, ui4 = ui4, ui5 = ui5, ui6 = ui6, & co1 = co1, co2 = co2, co3 = co3, co4 = co4, co5 = co5, & pk1b = BEFORE.pk1, fk1b = BEFORE.fk1, fk2b = BEFORE.fk2, fk3b = BEFORE.fk3, fk4b = BEFORE.fk4, fk5b = BEFORE.fk5, fk6b = BEFORE.fk6, & ui1b = BEFORE.ui1, ui2b = BEFORE.ui2, ui3b = BEFORE.ui3, ui4b = BEFORE.ui4, ui5b = BEFORE.ui5, ui6b = BEFORE.ui6, & co1b = BEFORE.co1, co2b = BEFORE.co2, co3b = BEFORE.co3, co4b = BEFORE.co4, co5b = BEFORE.co5 & ); MAP adam.tab2, TARGET anna.tab1, KEYCOLS(pk1), & COLMAP(pk1 = pk1, tablename = @GETENV("GGHEADER","TABLENAME"), optype = @GETENV("GGHEADER","OPTYPE"), beforafterind = @GETENV("GGHEADER","BEFOREAFTERINDICATOR"), & fk1 = fk1, fk2 = fk2, fk3 = fk3, fk4 = fk4, fk5 = fk5, fk6 = fk6, & ui1 = ui1, ui2 = ui2, ui3 = ui3, ui4 = ui4, ui5 = ui5, ui6 = ui6, & co1 = co1, co2 = co2, co3 = co3, co4 = co4, co5 = co5, & pk1b = BEFORE.pk1, fk1b = BEFORE.fk1, fk2b = BEFORE.fk2, fk3b = BEFORE.fk3, fk4b = BEFORE.fk4, fk5b = BEFORE.fk5, fk6b = BEFORE.fk6, & ui1b = BEFORE.ui1, ui2b = BEFORE.ui2, ui3b = BEFORE.ui3, ui4b = BEFORE.ui4, ui5b = BEFORE.ui5, ui6b = BEFORE.ui6, & co1b = BEFORE.co1, co2b = BEFORE.co2, co3b = BEFORE.co3, co4b = BEFORE.co4, co5b = BEFORE.co5 & ); MAP adam.tab3, TARGET anna.tab1, KEYCOLS(pk1), & COLMAP(pk1 = pk1, tablename = @GETENV("GGHEADER","TABLENAME"), optype = @GETENV("GGHEADER","OPTYPE"), beforafterind = @GETENV("GGHEADER","BEFOREAFTERINDICATOR"), & fk1 = fk1, fk2 = fk2, fk3 = fk3, fk4 = fk4, fk5 = fk5, fk6 = fk6, & ui1 = ui1, ui2 = ui2, ui3 = ui3, ui4 = ui4, ui5 = ui5, ui6 = ui6, & co1 = co1, co2 = co2, co3 = co3, co4 = co4, co5 = co5, & pk1b = BEFORE.pk1, fk1b = BEFORE.fk1, fk2b = BEFORE.fk2, fk3b = BEFORE.fk3, fk4b = BEFORE.fk4, fk5b = BEFORE.fk5, fk6b = BEFORE.fk6, & ui1b = BEFORE.ui1, ui2b = BEFORE.ui2, ui3b = BEFORE.ui3, ui4b = BEFORE.ui4, ui5b = BEFORE.ui5, ui6b = BEFORE.ui6, & co1b = BEFORE.co1, co2b = BEFORE.co2, co3b = BEFORE.co3, co4b = BEFORE.co4, co5b = BEFORE.co5 & ); MAP adam.tab4, TARGET anna.tab1, KEYCOLS(pk1), & COLMAP(pk1 = pk1, tablename = @GETENV("GGHEADER","TABLENAME"), optype = @GETENV("GGHEADER","OPTYPE"), beforafterind = @GETENV("GGHEADER","BEFOREAFTERINDICATOR"), & fk1 = fk1, fk2 = fk2, fk3 = fk3, fk4 = fk4, fk5 = fk5, fk6 = fk6, & ui1 = ui1, ui2 = ui2, ui3 = ui3, ui4 = ui4, ui5 = ui5, ui6 = ui6, & co1 = co1, co2 = co2, co3 = co3, co4 = co4, co5 = co5, & pk1b = BEFORE.pk1, fk1b = BEFORE.fk1, fk2b = BEFORE.fk2, fk3b = BEFORE.fk3, fk4b = BEFORE.fk4, fk5b = BEFORE.fk5, fk6b = BEFORE.fk6, & ui1b = BEFORE.ui1, ui2b = BEFORE.ui2, ui3b = BEFORE.ui3, ui4b = BEFORE.ui4, ui5b = BEFORE.ui5, ui6b = BEFORE.ui6, & co1b = BEFORE.co1, co2b = BEFORE.co2, co3b = BEFORE.co3, co4b = BEFORE.co4, co5b = BEFORE.co5 & ); MAP adam.tab5, TARGET anna.tab1, KEYCOLS(pk1), & COLMAP(pk1 = pk1, tablename = @GETENV("GGHEADER","TABLENAME"), optype = @GETENV("GGHEADER","OPTYPE"), beforafterind = @GETENV("GGHEADER","BEFOREAFTERINDICATOR"), & fk1 = fk1, fk2 = fk2, fk3 = fk3, fk4 = fk4, fk5 = fk5, fk6 = fk6, & ui1 = ui1, ui2 = ui2, ui3 = ui3, ui4 = ui4, ui5 = ui5, ui6 = ui6, & co1 = co1, co2 = co2, co3 = co3, co4 = co4, co5 = co5, & pk1b = BEFORE.pk1, fk1b = BEFORE.fk1, fk2b = BEFORE.fk2, fk3b = BEFORE.fk3, fk4b = BEFORE.fk4, fk5b = BEFORE.fk5, fk6b = BEFORE.fk6, & ui1b = BEFORE.ui1, ui2b = BEFORE.ui2, ui3b = BEFORE.ui3, ui4b = BEFORE.ui4, ui5b = BEFORE.ui5, ui6b = BEFORE.ui6, & co1b = BEFORE.co1, co2b = BEFORE.co2, co3b = BEFORE.co3, co4b = BEFORE.co4, co5b = BEFORE.co5 & ); MAP adam.tab6, TARGET anna.tab1, KEYCOLS(pk1), & COLMAP(pk1 = pk1, tablename = @GETENV("GGHEADER","TABLENAME"), optype = @GETENV("GGHEADER","OPTYPE"), beforafterind = @GETENV("GGHEADER","BEFOREAFTERINDICATOR"), & fk1 = fk1, fk2 = fk2, fk3 = fk3, fk4 = fk4, fk5 = fk5, fk6 = fk6, & ui1 = ui1, ui2 = ui2, ui3 = ui3, ui4 = ui4, ui5 = ui5, ui6 = ui6, & co1 = co1, co2 = co2, co3 = co3, co4 = co4, co5 = co5, & pk1b = BEFORE.pk1, fk1b = BEFORE.fk1, fk2b = BEFORE.fk2, fk3b = BEFORE.fk3, fk4b = BEFORE.fk4, fk5b = BEFORE.fk5, fk6b = BEFORE.fk6, & ui1b = BEFORE.ui1, ui2b = BEFORE.ui2, ui3b = BEFORE.ui3, ui4b = BEFORE.ui4, ui5b = BEFORE.ui5, ui6b = BEFORE.ui6, & co1b = BEFORE.co1, co2b = BEFORE.co2, co3b = BEFORE.co3, co4b = BEFORE.co4, co5b = BEFORE.co5 & ); MAP adam.tab7, TARGET anna.tab1, KEYCOLS(pk1), & COLMAP(pk1 = pk1, tablename = @GETENV("GGHEADER","TABLENAME"), optype = @GETENV("GGHEADER","OPTYPE"), beforafterind = @GETENV("GGHEADER","BEFOREAFTERINDICATOR"), & fk1 = fk1, fk2 = fk2, fk3 = fk3, fk4 = fk4, fk5 = fk5, fk6 = fk6, & ui1 = ui1, ui2 = ui2, ui3 = ui3, ui4 = ui4, ui5 = ui5, ui6 = ui6, & co1 = co1, co2 = co2, co3 = co3, co4 = co4, co5 = co5, & pk1b = BEFORE.pk1, fk1b = BEFORE.fk1, fk2b = BEFORE.fk2, fk3b = BEFORE.fk3, fk4b = BEFORE.fk4, fk5b = BEFORE.fk5, fk6b = BEFORE.fk6, & ui1b = BEFORE.ui1, ui2b = BEFORE.ui2, ui3b = BEFORE.ui3, ui4b = BEFORE.ui4, ui5b = BEFORE.ui5, ui6b = BEFORE.ui6, & co1b = BEFORE.co1, co2b = BEFORE.co2, co3b = BEFORE.co3, co4b = BEFORE.co4, co5b = BEFORE.co5 & );
5. Results test script
To check the results I am running on the target database the following script:
select case when OPTYPE like 'INSERT%' then 'I' when OPTYPE like 'DELETE%' then 'D' else 'U' end as O, tablename as TB, case when beforafterind like 'BEFO%' then 'B' when beforafterind like 'AFT%' then 'A' else '?' end as I, pk1, fk1, fk2, fk3, fk4, fk5, fk6, ui1, ui2, ui3, ui4, ui5, ui6, co1, co2, co3, co4, co5, pk1b as p1b, fk1b as f1b, fk2b as f2b, fk3b as f3b, fk4b as f4b, fk5b as f5b, fk6b as f6b, ui1b as u1b, ui2b as u2b, ui3b as u3b, ui4b as u4b, ui5b as u5b, ui6b as u6b, co1b as c1b, co2b as c2b, co3b as c3b, co4b as c4b, co5b as c5b from anna.tab1;
6. Test results
To find parameters and their order in a more easy fashion I have used the following codes for them in my tests:
- 4 – NOCOMPRESSUPDATES
- 5 – COMPRESSUPDATE
- 6 – NOCOMPRESSDELETES
- 7 – COMPRESSDELETES
- 8 – IGNOREUPDATEBEFORES
- 9 – GETUPDATEBEFORES
These are the results for total 79 test cases:
Test no. | Order | Parameters | Extract | Results | Result category |
---|---|---|---|---|---|
4 | 4 | NOCOMPRESSUPDATES | PRM | SQL OUT | UPDATE: after DELETE: only PK |
46 | 46 | NOCOMPRESSUPDATES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: full |
46 | 64 | NOCOMPRESSDELETES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: full |
468 | 468 | NOCOMPRESSUPDATES NOCOMPRESSDELETES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: full |
468 | 486 | NOCOMPRESSUPDATES IGNOREUPDATEBEFORES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: full |
468 | 648 | NOCOMPRESSDELETES NOCOMPRESSUPDATES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: full |
468 | 684 | NOCOMPRESSDELETES IGNOREUPDATEBEFORES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: full |
468 | 846 | IGNOREUPDATEBEFORES NOCOMPRESSUPDATES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: full |
468 | 864 | IGNOREUPDATEBEFORES NOCOMPRESSDELETES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: full |
469 | 469 | NOCOMPRESSUPDATES NOCOMPRESSDELETES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
469 | 496 | NOCOMPRESSUPDATES GETUPDATEBEFORES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
469 | 649 | NOCOMPRESSDELETES NOCOMPRESSUPDATES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
469 | 694 | NOCOMPRESSDELETES GETUPDATEBEFORES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
469 | 946 | GETUPDATEBEFORES NOCOMPRESSUPDATES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
469 | 964 | GETUPDATEBEFORES NOCOMPRESSDELETES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
47 | 47 | NOCOMPRESSUPDATES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
47 | 74 | COMPRESSDELETES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
478 | 478 | NOCOMPRESSUPDATES COMPRESSDELETES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
478 | 487 | NOCOMPRESSUPDATES IGNOREUPDATEBEFORES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
478 | 748 | COMPRESSDELETES NOCOMPRESSUPDATES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
478 | 784 | COMPRESSDELETES IGNOREUPDATEBEFORES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
478 | 847 | IGNOREUPDATEBEFORES NOCOMPRESSUPDATES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
478 | 874 | IGNOREUPDATEBEFORES COMPRESSDELETES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
479 | 479 | NOCOMPRESSUPDATES COMPRESSDELETES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
479 | 497 | NOCOMPRESSUPDATES GETUPDATEBEFORES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
479 | 749 | COMPRESSDELETES NOCOMPRESSUPDATES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
479 | 794 | COMPRESSDELETES GETUPDATEBEFORES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
479 | 947 | GETUPDATEBEFORES NOCOMPRESSUPDATES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
479 | 974 | GETUPDATEBEFORES COMPRESSDELETES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
48 | 48 | NOCOMPRESSUPDATES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
48 | 84 | IGNOREUPDATEBEFORES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
49 | 49 | NOCOMPRESSUPDATES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
49 | 94 | GETUPDATEBEFORES NOCOMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
5 | 5 | COMPRESSUPDATES | PRM | SQL OUT | UPDATE: after DELETE: only PK |
56 | 56 | COMPRESSUPDATES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: full |
56 | 65 | NOCOMPRESSDELETES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: full |
568 | 568 | COMPRESSUPDATES NOCOMPRESSDELETES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: full |
568 | 586 | COMPRESSUPDATES IGNOREUPDATEBEFORES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: full |
568 | 658 | NOCOMPRESSDELETES COMPRESSUPDATES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: full |
568 | 685 | NOCOMPRESSDELETES IGNOREUPDATEBEFORES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: full |
568 | 856 | IGNOREUPDATEBEFORES COMPRESSUPDATES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: full |
568 | 865 | IGNOREUPDATEBEFORES NOCOMPRESSDELETES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: full |
569 | 569 | COMPRESSUPDATES NOCOMPRESSDELETES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
569 | 596 | COMPRESSUPDATES GETUPDATEBEFORES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
569 | 659 | NOCOMPRESSDELETES COMPRESSUPDATES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
569 | 695 | NOCOMPRESSDELETES GETUPDATEBEFORES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
569 | 956 | GETUPDATEBEFORES COMPRESSUPDATES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
569 | 965 | GETUPDATEBEFORES NOCOMPRESSDELETES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
57 | 57 | COMPRESSUPDATES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
57 | 75 | COMPRESSDELETES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
578 | 578 | COMPRESSUPDATES COMPRESSDELETES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
578 | 587 | COMPRESSUPDATES IGNOREUPDATEBEFORES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
578 | 758 | COMPRESSDELETES COMPRESSUPDATES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
578 | 785 | COMPRESSDELETES IGNOREUPDATEBEFORES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
578 | 857 | IGNOREUPDATEBEFORES COMPRESSUPDATES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
578 | 875 | IGNOREUPDATEBEFORES COMPRESSDELETES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
579 | 579 | COMPRESSUPDATES COMPRESSDELETES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
579 | 597 | COMPRESSUPDATES GETUPDATEBEFORES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
579 | 759 | COMPRESSDELETES COMPRESSUPDATES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
579 | 795 | COMPRESSDELETES GETUPDATEBEFORES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
579 | 957 | GETUPDATEBEFORES COMPRESSUPDATES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
579 | 975 | GETUPDATEBEFORES COMPRESSDELETES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
58 | 58 | COMPRESSUPDATES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
58 | 85 | IGNOREUPDATEBEFORES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
59 | 59 | COMPRESSUPDATES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
59 | 95 | GETUPDATEBEFORES COMPRESSUPDATES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
6 | 6 | NOCOMPRESSDELETES | PRM | SQL OUT | UPDATE: after DELETE: full |
68 | 68 | NOCOMPRESSDELETES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: full |
68 | 86 | IGNOREUPDATEBEFORES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: full |
69 | 69 | NOCOMPRESSDELETES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
69 | 96 | GETUPDATEBEFORES NOCOMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: full |
7 | 7 | COMPRESSDELETES | PRM | SQL OUT | UPDATE: after DELETE: only PK |
78 | 78 | COMPRESSDELETES IGNOREUPDATEBEFORES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
78 | 87 | IGNOREUPDATEBEFORES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: after DELETE: only PK |
79 | 79 | COMPRESSDELETES GETUPDATEBEFORES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
79 | 97 | GETUPDATEBEFORES COMPRESSDELETES |
PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
8 | 8 | IGNOREUPDATEBEFORES | PRM | SQL OUT | UPDATE: after DELETE: only PK |
9 | 9 | GETUPDATEBEFORES | PRM | SQL OUT | UPDATE: before + after DELETE: only PK |
(none) | PRM | SQL OUT | UPDATE: after DELETE: only PK |
Pingback: What is Oracle GoldenGate Extract writing to the trail file (OGG 12.1) – Bersler
Pingback: What is Oracle GoldenGate Extract writing to the trail file (OGG 12.2 & 12.3) – Bersler