DEV Community

Abhilash Kumar Bhattaram for Nabhaas Cloud Consulting

Posted on • Edited on

OCI - Monitoring Tables for Oracle Golden Gate Service Replicats ( works for On Prem Golden Gate as well )

{ Abhilash Kumar Bhattaram : Follow on LinkedIn }

Many a time as Oracle Golden Gate Engineers/Admins I see people are bit too focussed on the internals of Extracts and Replicats, it's good to work with Sys Admins and MOS to tune it better those lines , but it does not help working with the people owning the data.

For many of my business use cases people are just interested in a handful of tables on how they are replicating ,
i.e. I get to handle questions below

  • Is my Latest Sales Data being replicated ?
  • Are the data for my Quarterly Reports ready ?
  • Is my data in partitions being replicated for a specific table ?
  • I did a large insert do you see it ?
  • I had to archive large data set to anorther table , did that complete ?

These questions are more important to them , I cannot go about answering internals of Golden Gate (like lag /checkpoint) to people who are not interested in them. Each are focussed in what their job needs are.

Explaining the End users of apps like BI , Tableau , they have no understanding of the replications and rightly so , all they need to know is " DO I HAVE MY DATA " ?

To help my users I have come up with a small script , basically the least looked upon sys table called "dba_tab_modifications"

Below is the source code of the script in my GitHub Repo

https://github.com/abhilash-8/ora-tools/blob/master/gg_mon.sql

The below example shows the insert , updates , deletes of tables and partitions , these would help identify which set of tables and partitions are being replicated. I added a LAG column which essentially indicates the data was replicated last 8 minutes ago.

Such analysis would help an OGG Admin understand the business nature of the Apps and work with bussiness users better.

orcl> @gg_mon
  1  select * from
  2  (
  3  select
  4  table_owner,table_name,partition_name,inserts,updates,deletes,truncated TRUNC,
  5  timestamp,round((sysdate-timestamp)*1440) LAG_MINS
  6  from dba_tab_modifications where table_owner in
  7  (
  8  'BUSS_USER',
  9  'MOBI_USER'
 27  )
 28  and timestamp > sysdate-(1/24)
 29  order by TIMESTAMP
 30  );


TABLE_OWNER         |TABLE_NAME                            |PARTITION_NAME                     |    INSERTS|    UPDATES|    DELETES|TRU|TIMESTAMP           |  LAG_MINS
--------------------|--------------------------------------|-----------------------------------|-----------|-----------|-----------|---|--------------------|----------
BUSS_USER           |SAMPLING_DATA                         |                                   |    2501779|    1705168|       2282|NO |29-APR-2023 13:20:29|         8
BUSS_USER           |SEC_DATA                              |                                   |        112|          0|          0|NO |29-APR-2023 13:20:29|         8
MOBI_USER           |SALES_DATA                            |APR_2023_PART                      |    3088793|    2310528|      50940|NO |29-APR-2023 13:20:29|         8


Enter fullscreen mode Exit fullscreen mode

NOTE : The data in timestamp column in dba_tab_modifications would be populated due to the auto stats functionality to help get the required objective.

#oracle #oci #oracledatabase #goldengate #oraclecloud #oracledba #nabhaas

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay