Skip to Content
Jan 15, 2020 at 10:47 AM

Smart Data Integration - Oracle Log Reader Adapter - Exact technical working way?


Hi Experts,

We want to use this SDI Oracle Log Reader feature to perform real-time data loads of some tables of a source Oracle database in BW4/HANA without adding any extra load on that source database, and we are working on a Proof of Concept about it.

We have in fact already installed the Data Provisioning Server at HANA side and the Data Provisioning Agent (in our case in the same server where the source Oracle database is located, not apart), setting up the Oracle Log Reader.

We have completed the setup, and it seems to be working fine, so that as soon as we update a record in that source Oracle database we see the change at Hana Virtual table level, and if we create an extraction request we see the extraction retrieves one single data record.

But, our doubt is about how exactly this Oracle Log Reader technically works; how it reads the information from the redo logs, where it saves it until the BW extraction is launched, as we cannot be sure if the created LogReader user at Oracle level is not in fact reading the own database and not the redo logs (because we had to grant the "select" permission for the tables we want to capture), and we cannot find anywhere how this process exactly works.

My personal theory is that the Oracle Log Reader is in fact checking the online redo logs of the Oracle database, and when it detects a change there that affects the tables we have selected in BW4/HANA it saves this change information into a different location, probably in the file structures we see the agent has created under /usr/sap/dataprovagent/ds-lite/sqla/tmp/dslite_repo_<process_id> or in the file called dslite_repo.db, but it might also do it at Oracle level, in the other set of tables that the Oracle Log Reader user has created as owner in the database.

Can someone please confirm how this work?

And then, another doubt arises to us: How did the initial full load of the HANA virtual tables happened? Because for sure all the existing change records of the tables we have selected were not part of the redo logs (even more when we have a script that compresses the offline redo log files moving them to a different location every hour).
Was perhaps that initial load done by using a direct "select" sentence on the real table at Oracle level? Or how exactly?

Thank you very much, and best regards
Jose Sanz