oracle synchronization strategy

Started by Randall Smithover 21 years ago4 messagesgeneral
Jump to latest
#1Randall Smith
randall@tnr.cc

I am going to sync a schema in postgres with one in an oracle db. The
tables are simple, but there are 200 of them. I would like to try to
keep the sync lag < 1 minute. Here is my idea. Please critique/suggest.

1. Set up stored proc on oracle that records a INSERT, UPDATE, DELETE
SQL action taken on a table into a log table.
2. Program reads the log table on oracle and issues the same SQL command
on the postgres db. In the same transaction, postgres writes to a log
showing the command has been executed.
3. The program will query the oracle log table on some frequency ~30
seconds.

What are your thoughts?

Randall

#2Joachim Wieland
joe@mcknight.de
In reply to: Randall Smith (#1)
Re: oracle synchronization strategy

Hi Randall,

On Sun, Oct 31, 2004 at 11:25:46PM -0600, Randall Smith wrote:

1. Set up stored proc on oracle that records a INSERT, UPDATE, DELETE
SQL action taken on a table into a log table.
2. Program reads the log table on oracle and issues the same SQL command
on the postgres db. In the same transaction, postgres writes to a log
showing the command has been executed.
3. The program will query the oracle log table on some frequency ~30
seconds.

It depends on what you're trying to achieve.

Your way might work if you only want to mirror oracle -> pgsql but not vice
versa.

Furthermore you need to do manual maintenance on the pgsql side if you
change your schema on the oracle side (create/drop/change tables, ...)

I've done something similar with MS SQL -> pgsql and perl some years ago.
Shout if you're interested.

There's also dbmirror in contrib/ that works in a similar way.

Joachim

#3Randall Smith
randall@tnr.cc
In reply to: Joachim Wieland (#2)
Re: oracle synchronization strategy

Thanks Joachim,

The mirror only has to go from oracle to pgsql and the schema/tables
never change. I'm going to take a look at dbmirror. Thanks for the advice.

Randall

Joachim Wieland wrote:

Show quoted text

Hi Randall,

On Sun, Oct 31, 2004 at 11:25:46PM -0600, Randall Smith wrote:

1. Set up stored proc on oracle that records a INSERT, UPDATE, DELETE
SQL action taken on a table into a log table.
2. Program reads the log table on oracle and issues the same SQL command
on the postgres db. In the same transaction, postgres writes to a log
showing the command has been executed.
3. The program will query the oracle log table on some frequency ~30
seconds.

It depends on what you're trying to achieve.

Your way might work if you only want to mirror oracle -> pgsql but not vice
versa.

Furthermore you need to do manual maintenance on the pgsql side if you
change your schema on the oracle side (create/drop/change tables, ...)

I've done something similar with MS SQL -> pgsql and perl some years ago.
Shout if you're interested.

There's also dbmirror in contrib/ that works in a similar way.

Joachim

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

#4Randall Smith
randall@tnr.cc
In reply to: Randall Smith (#1)
Re: oracle synchronization strategy

For anyone interested, the below procedure worked well.

Randall

Randall Smith wrote:

Show quoted text

I am going to sync a schema in postgres with one in an oracle db. The
tables are simple, but there are 200 of them. I would like to try to
keep the sync lag < 1 minute. Here is my idea. Please critique/suggest.

1. Set up stored proc on oracle that records a INSERT, UPDATE, DELETE
SQL action taken on a table into a log table.
2. Program reads the log table on oracle and issues the same SQL command
on the postgres db. In the same transaction, postgres writes to a log
showing the command has been executed.
3. The program will query the oracle log table on some frequency ~30
seconds.

What are your thoughts?

Randall