Everything Changes
1 week ago
SQL> select capture_name, rule_set_name, purpose from dba_capture order by 1; CAPTURE_NAME RULE_SET_NAME PURPOSE ------------------------------ ------------------------------ ------------------- OGG$CAP_GG1_EXT1 OGG$GG1_EXT1_CAPTURE_I GoldenGate Capture OGG$CAP_GG1_EXT2 GoldenGate CaptureOGG$CAP_GG1_EXT1 was created using GoldenGate 11.2.1.0.3 while OGG$CAP_GG1_EXT2 was created using 11.2.1.0.6BP3. Notice how RULE_SET_NAME is empty for the second one? Without the rule set the Capture process will just capture everything that's happening in the database so my first concern was whether it's going to negatively affect the performance?
SID CAPTURE_NAME STARTUP_TIME TOTAL_PREFILTER_DISCARDED TOTAL_MESSAGES_ENQUEUED ---------- ---------------- --------------------- ------------------------- ----------------------- 33 OGG$CAP_GG1_EXT1 23/07/2013 2:21:56 PM 47 71 147 OGG$CAP_GG1_EXT2 23/07/2013 2:21:56 PM 28 2589...notice a big difference in TOTAL_MESSAGES_ENQUEUED. Both processes were started at exactly the same time and they are capturing from exactly the same objects. This difference makes sense -- without a rule set in place the second process will enqueue every change it sees. By itself, this change would be pretty bad, but something else has happened as well:
SQL> select capture_name, v.program 2 from v$streams_capture c, v$session v 3 where c.SID = v.SID; CAPTURE_NAME PROGRAM ------------------------------ ------------------------------------------------ OGG$CAP_GG1_EXT1 oracle@gg1.quadro.com (CP01) OGG$CAP_GG1_EXT2 extract@gg1.quadro.com (TNS V1-V3)Notice how OGG$CAP_GG1_EXT1 is an Oracle shadow process (a Streams Capture process) while OGG$CAP_GG1_EXT2 is the Extract process itself! What we had before is the Extract process acting as an XStreams client to the Streams Capture process. With this change it is no longer required and we can see that the XStreams client is now detached from the server:
SQL> select server_name, capture_name, status from dba_xstream_outbound order by 1; SERVER_NAME CAPTURE_NAME STATUS ------------------------------ ------------------------------ -------- OGG$GG1_EXT1 OGG$CAP_GG1_EXT1 ATTACHED OGG$GG1_EXT2 OGG$CAP_GG1_EXT2 DETACHEDThat clears the concern of an empty rule set -- the Extract can now filter the records internally because nothing needs to be shipped out anyways where before it would have resulted in a massive traffic between the Capture process, buffered queue and the XStreams client.