Extract can now be used in integrated capture mode with an Oracle database. Extract integrates with an Oracle database log mining server to receive change data from that server in the form of logical change records (LCR).All of that just rings too many bells so I've decided to find out what exactly have happened. This feature requires database patches to be installed (described in Note:1411356.1).
Stack dumps
Stack dump reveals a lot of interesting information already (I've left only relevant pieces in place):
... #10 0x00002b08f2ba21b7 in knxoutReceiveLCR () from /u01/app/oracle/ggs/libclntsh.so.11.1 #11 0x00002b08f2ae1048 in OCIXStreamOutLCRReceive () from /u01/app/oracle/ggs/libclntsh.so.11.1 #12 0x0000000000721a96 in IXAsyncReader::ProcessBatchNonCallbackArray() () #13 0x0000000000722dbc in IXAsyncReader::ReaderThread(void*) () #14 0x0000003ce8a0673d in start_thread () from /lib64/libpthread.so.0 ...The first point of entry into libclntsh.so.11.1 library is nothing else but OCIXStreamOutLCRReceive. This is a function to receive LCR (Logical Change Record) from an outbound XStream server. Let's confirm that we have an outbound server in our database:
SQL> select server_name, capture_name from dba_xstream_outbound; SERVER_NAME CAPTURE_NAME ------------------------------ ------------------------------ OGG$TEST_EXT OGG$CAP_TEST_EXTAn Oracle Streams Capture process itself:
SQL> select capture_name, rule_set_name, purpose 2 from dba_capture; CAPTURE_NAME RULE_SET_NAME PURPOSE ------------------------------ ------------------------------ ------------------- OGG$CAP_TEST_EXT OGG$TEST_EXT_CAPTURE_I GoldenGate CaptureAnd we can see all the familiar Oracle Streams rules:
SQL> select rsr.rule_name, r.rule_condition from dba_rule_set_rules rsr, dba_rules r where rsr.rule_set_owner = r.rule_owner and rsr.rule_name = r.rule_name and rsr.rule_set_name='OGG$TEST_EXT_CAPTURE_I'; 2 3 4 5 RULE_NAME RULE_CONDITION --------------- ---------------------------------------------------------------------- TEST21 (((:ddl.get_source_database_name() = 'TEST' )) and (:ddl.get_source_da tabase_name() != '$')) GGS_TRACE20 (((:dml.get_object_owner() = 'GGEXT' and :dml.get_object_name() = 'GGS _TRACE')) and :dml.get_source_database_name() = 'TEST' ) TEST19 ((:dml.get_object_owner() = 'TEST') and :dml.get_source_database_name( ) = 'TEST' )These rules got generated based on the parameter file I have for my Extract.
XStream
Oracle GoldenGate Extract process became nothing else but an XStream client which receives LCRs from Streams Capture process and converts these to GoldenGate trail files. Anybody who was worried about Oracle Streams future because GoldenGate was supposed to be the new strategic direction (and so on and so forth) can stop worrying now. Oracle GoldenGate is Oracle Streams. The only part left are trail files and I wouldn't be surprised if that will eventually go away as well.
Oracle Streams have won the tech battle.
Thank You for that useful information.
ReplyDeleteRegards
GregG
But Oracle Streams is defeated in the commercial war:)
ReplyDelete