Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate

Σε αυτό το άρθρο θα δούμε πως μπορούμε να αντιγράφουμε εγγραφές πινάκων από Oracle Database που είναι σε Unix πρός SQL Server που είναι σε Windows με την χρήση του Oracle GoldenGate.

Τι είναι το GoldenGate

Το Oracle GoldenGate είναι ένα εργαλείο που μας επιτρέπει να αντιγράφουμε και να διαμορφώνουμε δεδομένα μεταξύ βάσεων δεδομένων, χωρίς να μας επηρεάζει το λειτουργικό σύστημα ή το RDBMS που γίνεται χρήση. Η ενημέρωση των πινάκων μπορεί να είναι είτε προς μία κατεύθυνση με ένα target (unidirectional), είτε πρός πολλά targets (broadcast), είτε αμφίδρομα (bidirectional).

Για παράδειγμα μπορούμε να μεταφέρουμε δεδομένα πινάκων με την χρήση GoldenGate από Oracle σε Oracle, από Oracle προς SQL Server, από SQL Server πρός SQL Server, είτε από Oracle ταυτόχρονα προς SQL Server, MySQL, DB2 και PostgreSQL.

Πώς λειτουργεί το GoldenGate

Το GoldenGate κάνει χρήση τριών processes: Extract, Data Pump (σε περίπτωση που κάνουμε χρήση απομακρυσμένου server) και του Replicat.

Το Extract είναι υπεύθυνο για να καταγράφει τις committed συνναλλαγές από τους πίνακες που έχουμε ορίσει και να τις αποθηκεύει σε ένα αρχείο που ονομάζεται local trail. Στη συνέχεια το Data Pump στέλνει τα δεδομένα από το local trail αρχείο στον απομακρυσμένο server μέσω TCP/IP και γράφει τα δεδομένα στο αρχείο που ονομάζεται remote trail. Στο τέλος το Replicat διαβάζει το remote trail και εφαρμόζει τις αλλαγές στις target βάσεις δεδομένων.

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
docs.oracle.com

Τα προαπαιτούμενα

Για αρχή θα πρέπει να έχουμε στήσει το Oracle Database Software στον primary και στον standby server και Oracle Database στον primary σε archivelog mode. Το πώς κάνουμε αυτές τις εγκαταστάσεις μπορούμε να το δούμε βήμα βήμα στο άρθρο εδώ.

Θα πρέπει να κατεβάσουμε την έκδοση Oracle GoldenGate ξεχωριστά για το κάθε σύστημα από εδώ. Την έκδοση Oracle on Linux x86-64 για τον Oracle Server και την έκδοση SQL Server on Windows x86-64 για τον SQL Server.

Στον Windows Server που έχει τον SQL Server θα πρέπει να κατεβάσουμε και να κάνουμε εγκατάσταση τον Oracle Database Client από εδώ.

Η εγκατάσταση / παραμετροποίηση στο source

Στον Unix Oracle Database server (source)

Για το παράδειγμα έχω φτιάξει μία Oracle Database που θα είναι η source με το όνομα oracledb:

su oracle
dbca
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
01

Αφού ολοκληρωθεί η εγκατάσταση συνδέουμε στην βάση δεδομένων με sqlplus και κάνω τις απαραίτητες αλλαγές για να λειτουργήσει το GoldenGate:

export ORACLE_SID=oracledb

sqlplus / as sysdba
shutdown immediate;
startup mount;

alter database archivelog;
alter database add supplemental log data;
alter database force logging;
alter database open;
alter system switch logfile;
alter system set enable_goldengate_replication=true scope=both;

Στην συνέχεια παραμένουμε στο sqlplus και φτιάχνουμε τον χρήστη που θα συνδέεται το GoldenGate στην βάση:

create user ggadmin
  identified by passw0rd
  default tablespace USERS
  temporary tablespace TEMP
  quota unlimited on users;
-- Grant/Revoke role privileges 
grant connect to ggadmin;
grant resource to ggadmin;
-- Grant/Revoke system privileges 
grant select any table to ggadmin;
grant select any dictionary to ggadmin;
grant flashback any table to ggadmin;
grant create session to ggadmin;
grant alter session to ggadmin;
exec dbms_goldengate_auth.grant_admin_privilege('ggadmin');

Για τις ανάγκες το παραδείγματος έχω φτιάξει στην βάση δεδομένων τον χρήστη STRATOS με τον πίνακα CUSTOMERS και είναι αυτός που θέλω να γίνεται replicate:

create user STRATOS IDENTIFIED BY PASSW0RD
  default tablespace USERS
  temporary tablespace TEMP
  profile DEFAULT
  password expire
  quota unlimited on users;
-- Grant/Revoke role privileges 
grant connect to STRATOS;
grant resource to STRATOS;
-- Table Creation
create table stratos.customers (id int, name varchar(50));
insert into stratos.customers values (1,'Stratos');
insert into stratos.customers values (2,'Nikos');
insert into stratos.customers values (3,'George');
commit;

Έπειτα προσθέτουμε στο tnsnames.ora την παρακάτω εγγραφή με τις πληροφορίες σύνδεσης στο instance βάζοντας ως host το όνομα του μηχανήματος και ως service_name το όνομα της βάσης δεδομένων:

vi $ORACLE_HOME/network/admin/tnsnames.ora

oracledb=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracledev2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracledb)
    )
  )

Αν δεν έχουμε DNS server θα πρέπει να πάμε στο hosts file και να ορίσουμε μια εγγραφή με την IP του απομακρυσμένου SQL Server:

su root
vi /etc/hosts
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
02

Φτιάχνουμε τον φάκελο που θα βρίσκεται η εγκατάσταση του GoldenGate, πάμε στον φάκελο που κατεβάσαμε το setup του GoldenGate και το κάνουμε unzip:

su oracle

mkdir /oracle/app/oracle/goldengate

cd $HOME/Downloads

unzip *.zip

Αφού ολοκληρωθεί το unzip πάμε μέσα στα αρχεία του φακέλου και τρέχουμε τον installer:

cd fbo_ggs_Linux_x64_Oracle_shiphome/Disk1

./runInstaller
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
03

Στο Software Location βάζουμε τον φάκελο που δημιουργήσαμε πριν για να περιέχει την εγκατάσταση και ορίζουμε την πόρτα, ή default είναι η 7809:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
04

Όταν ολοκληρωθεί η εγκατάσταση για να είναι δηλωμένο πάντα το path του GoldenGate και του tnsnames.ora πάμε στο bash_profile και προσθέτουμε τα παρακάτω:

vi $HOME/.bash_profile

export GGHOME=/oracle/app/oracle/goldengate
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin:$GGHOME

Για να φορτώσει τις αλλαγές κάνουμε είτε logout login είτε τρέχουμε το παρακάτω:


source ~/.bash_profile

Τώρα μπορούμε να συνδεθούμε στο GoldenGate interface τρέχοντας το παρακάτω:

ggsci
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
05

Γράφουμε να δημιουργήσει τους φακέλους σε περίπτωση που δεν το έχει κάνει ήδη ο installer:

create subdirs
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
06

Τροποποιούμε το parameter file του GoldenGate Manager και προσθέτουμε τα παρακάτω:

edit params mgr

PORT 7809
PURGEOLDEXTRACTS ./dirdat/*, MINKEEPHOURS 2
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 10, WAITMINUTES 5, RESETMINUTES 60
  • PORT: Είναι η minimum μεταβλητή που πρέπει να έχει το αρχείο και ορίζει την πόρτα του Manager.
  • PURGEOLDEXTRACT: Είναι η τοποθεσία που αποθηκεύοται το trail αρχείο με τα δεδομένα και ορίζουμε να τα κρατάει τουλάχιστον 2 ώρες.
  • AUTOSTART : Ορίζουμε ποια processes να ξεκινήσουν αυτόματα όταν ξεκινάει ο Manager.
  • AUTORESTART: Ορίζουμε ποια processes να γίνουν επανεκκίνηση μετά από σφάλμα.

Στη συνέχεια ξεκινάμε τον GoldenGate Manager:

start manager

Με την παρακάτω εντολή μπορούμε να δούμε το status των processes:

info all
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
07

Στο επόμενο βήμα φτιάχνουμε το Credentialstore. Εκεί μπορούμε να ορίζουμε χρήστες της βάσης δεδομένων κρατώντας τον κωδικό τοπικά κρυπτογραφημένο. Στην εντολή θα πρέπει να ορίσουμε το όνομα του χρήστη που φτιάξαμε πριν (ggadmin), το όνομα της εγγραφής που περάσαμε στο tnsnames.ora (oracledb) με το connection της βάσης και ως alias το όνομα με το οποίο θα το καλούμε:

add credentialstore 
alter credentialstore add user ggadmin@oracledb alias ggadmin

Για να συνδεθούμε τρέχουμε το παρακάτω:

dblogin useridalias ggadmin
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
08

Αφού συνδεθούμε με τον χρήστη ορίζουμε για τον κάθε πίνακα που θέλουμε να κάνουμε replicate να είναι ενεργοποιημένο το supplemental logging:

add trandata stratos.customers
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
09

Στην περίπτωση που θέλουμε να ενεργοποιήοσμυε το supplemental logging σε όλους τους πίνακες ενός schema τότε μπορούμε αντί για trandata να κάνουμε schematrandata:

add schematrandata stratos

Δημιουργία του Extract process στο source

Τώρα φτιάχνουμε το Extract process που θα εξάγει τα δεδομένα προς το local trail file:

register extract ora_ext database

Έπειτα το τροποποιούμε και προσθέτουμε τα παρακάτω:

edit param ora_ext
EXTRACT ora_ext
USERIDALIAS ggadmin
RMTHOST sqlserverhost.mshome.net, MGRPORT 7809
RMTTRAIL ./dirdat/aa
TABLE STRATOS.*;
  • EXTRACT: Ορίζουμε το όνομα του process.
  • USERIDALIAS: Ορίζουμε το όνομα του alias που φτιάξαμε για τον χρήστη της βάσης στο Credentialstore.
  • RMTHOST: Ορίζουμε το hostname του απομακρυσμένου SQL Server. Αν δεν κάνουμε χρήση DNS server, βάζουμε την εγγραφή που περάσαμε στο /etc/hosts.
  • MGRPORT: Ορίζουμε την πόρτα που έχει ο GoldenGate Manager στον απομακρυσμένο SQL Server.
  • RMTTRAIL: Ορίζουμε το path και το όνομα που θα έχουν τα trail files.
  • TABLE: Ορίζουμε τους πίνακες που θέλουμε να μεταφέρει, στην προκειμένη περίπτωση βάζουμε το σχήμα του χρήστη και * αφού το σχήμα περιέχει μόνο τον πίνακα που θέλουμε.
  • TRANLOGOPTIONS: Ορίζουμε προαιρετικά ρυθμίσεις για την εξαγωγή όπως την παράμετρο MINEFROMACTIVEDG που μας επιτρέπεται σε περιβάλλον Active Data Guard να κάνουμε χρήση του Standby αντί του Primary (η συγκεκριμένη λειτουργία δεν είναι συμβατή με το integrated process και λειτουργεί μόνο στο classic configuration).

Για να προστεθεί το process ως integrated, θα πρέπει να τρέξουμε τα παρακάτω με το όνομα του extract process:

add extract ora_ext, integrated tranlog, begin now
 
add rmttrail ./dirdat/aa, ext ora_ext

Εγκατάσταση / παραμετροποίηση στο target

Στον Windows SQL Server (target)

Για αρχή πάμε στο Windows Firewall και θα το κάνουμε disable στις κάρτες δικτύου που έχουν internal επικοινωνία μεταξύ τους. Για να το κάνουμε αυτό πάμε Windows Defender Firewall with Advanced Security, Action, Properties, Domain Profile, Customize… και βγάζουμε αυτές τις συνδέσεις. Ακολουθούμε τα ίδια βήματα για τις καρτέλες Private Profile και Public Profile:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
10

Στην περίπτωση που δεν κάνουμε χρήση DNS Server πρέπει να προσθέσουμε εγγραφή στο C:\Windows\System32\drivers\etc\hosts με την IP και το όνομα του απομακρυσμένου Oracle Database server.

Έπειτα δοκιμάζουμε ότι γίνεται ping:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
11

Στη συνέχεια και αφού έχουμε κάνει εγκατάσταση τον Oracle Database Client όπως αναφέραμε στα προαπαιτούμενα, πάμε και προσθέτουμε στο tnsnames.ora την εγραφή για την σύνδεση προς την απομακρυσμένη Oracle Database:

*Στο παράδειγμα βρίσκεται στο path C:\app\client\user\product\19.0.0\client_1\network\admin

oracledb=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracledev2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracledb)
    )
  )

Κάνουμε tnsping ώστε να δούμε ότι η εγραφή που προσθέσαμε στο tnsnames.ora λειτουργεί:

tnsping oracledb

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
12

Τώρα για να φτιάξουμε τον χρήστη της βάσης δεδομένων που θα διαχειρίζεται το GoldenGate, ανοίγουμε το Microsoft SQL Server Management Studio, συνδεόμαστε στο instance και κάτω από το security επιλέγουμε δεξί κλικ New Login…:

Επιλέγουμε SQL Server authentication, την επιλογή enforce password policy και ως default database ορίζουμε αυτήν που θέλουμε να πηγαίνουν οι εγγραφές του πίνακα:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
13

Στην καρτέλα User Mapping κάνουμε επιλέγουμε αυτή τη βάση δεδομένων, ως ρόλο db_owner και OK:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
14

Τώρα για να μπορούμε να συνδεθούμε στη βάση από το GoldenGate πρέπει να φτιάξουμε ODBC. Οπότε ανοίγουμε το πρόγραμμα ODBC Data Source Administrator (64-bit), πάμε System DSN, Add… και επιλέγουμε ODBC Driver 17 for SQL Server:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
15

Ορίζουμε το όνομα με το οποίο θα καλούμε την σύνδεση στη βάση και ως server βάζουμε το όνομα του server που είμαστε αυτή τη στιγμή:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
16

Έπειτα επιλέγουμε With SQL Server authentication using a login ID and password entered by the user και προσθέτουμε το όνομα του χρήστη και τον κωδικό που φτιάξαμε πριν:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
17

Στην επόμενη οθόνη επιλέγουμε Change the default database to και ορίζουμε την βάση δεδομένων που θέλουμε να πηγαίνουν οι εγγραφές του πίνακα:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
18

Για την εγκατάσταση του GoldenGate στα Windows πρώτα κάνουμε unzip τα αρχεία του setup στον φάκελο C:\goldengate .

Ανοίγουμε Command Prompt ως Administrator και πάμε στον φάκελο:

cd C:\goldengate

Για συνδεθούμε στο GoldenGate interface τρέχουμε το παρακάτω:

ggsci.exe

Για να δημιουργήσει τον φακέλους που απαιτείται τρέχουμε την παρακάτω εντολή:

create subdirs
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
19

Τροποποιούμε το parameter file του GoldenGate Manager και προσθέτουμε τα παρακάτω:

edit param mgr
PORT 7809
PURGEOLDEXTRACTS ./dirdat/*, MINKEEPHOURS 2
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 10, WAITMINUTES 5, RESETMINUTES 60
  • PORT: Είναι η minimum μεταβλητή που πρέπει να έχει το αρχείο και ορίζει την πόρτα του Manager.
  • PURGEOLDEXTRACT: Είναι η τοποθεσία που αποθηκεύοται το trail αρχείο με τα δεδομένα και ορίζουμε να τα κρατάει τουλάχιστον 2 ώρες.
  • AUTOSTART : Ορίζουμε ποια processes να ξεκινήσουν αυτόματα όταν ξεκινάει ο Manager.
  • AUTORESTART: Ορίζουμε ποια processes να γίνουν επανεκκίνηση μετά από σφάλμα.

Τροποποιούμε το GLOBALS parameter file που ισχύει για όλα τα processes του GoldenGate, ώστε να ορίσουμε ένα όνομα στο στο local Windows Service account, και τον πίνακα checkpoint που θα περιέχει τις πληροφορίες με το apply του replication στον SQL Server:

edit param ./GLOBALS
MGRSERVNAME GOLDENGATEsrv
CHECKPOINTTABLE dbo.CHECKPOINTTABLE

Για να προστεθεί το service στα Windows εκτελούμε το παρακάτω:

shell install addservice addevents
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
20

Για να ξεκινήσουμε το local service του GoldenGate από Command Prompt τρέχουμε το παρακάτω:

net start GOLDENGATEsrv
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
21

Στο επόμενο βήμα ανοίγουμε πάλι το GoldenGate interface και φτιάχνουμε το Credentialstore. Όπως είπαμε πριν εκεί μπορούμε να ορίζουμε χρήστες της βάσης δεδομένων κρατώντας τον κωδικό τοπικά κρυπτογραφημένο. Στην εντολή θα πρέπει να ορίσουμε το όνομα του χρήστη που φτιάξαμε πριν (ggadmin), το ODBC που φτιάξαμε (sqlserverdb) με το connection της βάσης και ως alias το όνομα με το οποίο θα το καλούμε:

ggsci.exe
add credentialstore

alter credentialstore add user ggadmin alias ggadmin

Συνδεόμαστε τώρα τρέχοντας την παρακάτω εντολή:

dblogin sourceDB sqlserverdb useridalias ggadmin
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
22

Προσθέτουμε τον checkpoint πίνακα για το replication:

add checkpointtable

Δημιουργία του Replicat process στο destination

Τώρα φτιάχνουμε το Replicat process που θα εισάγει τα δεδομένα από το trail file προσθέτοντας τις παρακάτω παραμέτρους:

edit param sql_rep
REPLICAT sql_rep
TARGETDB sqlserverdb, USERIDALIAS ggadmin
DISCARDFILE ./dirrpt/ora_discard.txt, APPEND, MEGABYTES 50
BATCHSQL
REPERROR(60,TRANSABORT, MAXRETRIES 10, DELAYSECS 10)
FUNCTIONSTACKSIZE 500
SOURCECHARSET PASSTHRU
DISCARDROLLOVER AT 03:00 ON TUESDAY
REPORTROLLOVER AT 03:00 ON TUESDAY
HANDLECOLLISIONS
MAP STRATOS.CUSTOMERS, TARGET DBO.CUSTOMERS;
  • REPLICAT: Ορίζουμε το όνομα του process.
  • TARGETDB: Ορίζουμε το ODBC που φτιάξαμε με την target βάση δεδομένων.
  • USERIDALIAS: Ορίζουμε το όνομα του alias που φτιάξαμε για τον χρήστη της βάσης στο Credentialstore.
  • DISCARDFILE: Ορίζουμε το αρχείο που περιέχει τις εγγραφές του πίνακα που δεν κατάφεραν να περάσουν
  • DISCARDROLLOVER: Ορίζουμε κάθε πότε θα καθαρίζονται τα discard files.
  • REPORTROLLOVER: Ορίζουμε κάθε πότε θα καθαρίζονται τα report files.
  • BATCHSQL: Ορίζουμε να ομαδοποιεί τα statements σε groups (select,insert,update,delete) ώστε να τα τρέχει παράλληλα με μεγαλύτερη απόδοση.
  • TRANSABORT: Μας βοηθάει στον έλεγχο των deadlocks. Στην περίπτωση που δεν πετύχει μια συναλλαγή, γίνεται abort και την εκτελεί ξανά από την αρχή.
  • FUNCTIONSTACKSIZE: Ορίζουμε το όριο στο πόσα παράλληλα arguments μπορεί να δεχτεί το process στη μνήμη.
  • SOURCECHARSET PASSTHRU: Ορίζουμε να μην κάνει convert το character set ώστε να μην υπάρχει κίνδυνος να αλλοιωθούν δεδομένα.
  • HANDLECOLLISIONS – NOHANDLECOLLISIONS: Παράμετρος που αναλαμβάνει την διαχείριση σε διπλότυπες και λάθος εγγραφές. Την γυρνάμε σε HANDLECOLLISIONS σε περίπτωση που αποτυγχάνει να ξεκινήσει το Replicat Process λόγο των παραπάνω περίπτωσεων, αν δεν θέλουμε ή δεν μπορούμε να λύσουμε τα προβλήματα manual (οι εγγραφές αυτές θα εμφανίζονται στο DISCARDFILE).
  • MAP: Ορίζουμε την σχέση μεταξύ των source και target πινάκων. Στην προκειμένη περίπτωση θέλουμε οι πίνακες να πηγαίνουν στο σχήμα DBO.

Για να φτιαχτεί το Replicat process τρέχουμε το παρακάτω:

add replicat sql_rep, exttrail ./dirdat/aa

Εκκίνηση του Extract process στο source

Στον Oracle Database server (source)

Συνδεόμαστε πάλι στο GoldenGate interface από τον Unix server:

su oracle
ggsci

Βλέπουμε το status των processes και ξεκινάμε το Extract process που έχουμε φτιάξει:

info all

start ora_ext
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
23

Σε αυτό το σημείο θα δούμε ότι στον Windows SQL Server που είναι το target θα έχει φτιάξει το remote trail file στο παρακάτω path C:\goldengate\dirdat:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
24

Μεταφορά των πινάκων από την Oracle Database (source) στον SQL Server (target)

Στον Windows SQL Server (target)

Πριν ξεκινήσουμε το Replicat process θα πρέπει να μεταφέρουμε τους πίνακες που θέλουμε από την Oracle Database στον SQL Server.

Για να μεταφέρουμε τον αρχικό πίνακα από την Oracle Database ανοίγουμε το πρόγραμμα SQL Server 2019 Import and Export Data (64-bit) και επιλέγουμε ως Data source: Oracle Provider for OLE DB:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
25

Πριν πατήσουμε Next στα Properties ως Data Source ορίζουμε την εγγραφή που προσθέσαμε στο tnsnames.ora (oracledb) και τα credentials που φτιάξαμε στην Oracle Database ως διαχειριστή του GoldenGate:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
26

Στην επόμενη οθόνη ως Destination ορίζουμε SQL Server Native Client 11.0 , local, Use Windows Authentication και ως Database την βάση δεδομένων που θέλουμε να πηγαίνουν οι εγγραφές του πίνακα:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
27

Ψάχνουμε τον πίνακα που θέλουμε να κάνουμε replicate, τον επιλέγουμε και στο Destination αλλάζουμε το σχήμα σε DBO:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
28

Στο τέλος επιλέγουμε Run immediately:

Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
29

Εναλλακτικά για πολύ μεγάλους πίνακες μπορούμε να σώσουμε την διαδικασία ως SSIS πακέτο και να το εκτελέσουμε από το Command Prompt με την παρακάτω εντολή:

dtexec /file transferpackage.dtsx

Καθώς όμως όταν τελειώσει δεν θα δημιουργήσει μόνο του το Primary Key με μοναδικές τιμές στον πίνακα, θα πρέπει να τρέξουμε το παρακάτω query:

alter table dbo.customers add primary key (id);

Εκκίνηση του Replicat process στο target

Είναι ώρα να ξεκινήσουμε το Replicat process στον target Windows SQL Server.

Συνδεόμαστε στο GoldenGate και τρέχουμε τα παρακάτω:

cd c:\goldengate

ggsci.exe
start sql_rep
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
30

Η δοκιμή

Για να δοκιμάσουμε αν λειτουργεί, το μόνο που έχουμε να κάνουμε είναι να αλλάξουμε μία εγγραφή στον πίνακα στην Oracle Database:

insert into stratos.customers values (11,'Maria');
commit;
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
31

Τώρα αν κάνουμε SELECT τον πίνακα στον SQL Server θα δούμε ότι έχει περάσει η εγραφή:

select * from dbo.customers;
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
32

Monitoring

Μπορούμε να δούμε την εξέλιξη του Replicat process στον target SQL Server κάνοντας SELECT τον checkpoint πίνακα:

select * from dbo.checkpointtable;
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
33

Μπορούμε να βρούμε πληροφορίες για το Extract process για το status του, πότε έτρεξε και την καθυστέρηση που έχει τρέχοντας μέσα από το GoldenGate interface του source server το παρακάτω:

info extract ora_ext, detail
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
34

Επίσης μπορούμε να βγάλουμε αναλυτικό report για process που περιέχει το log τρέχοντας μέσα από το GoldenGate interface του source server το παρακάτω:

view report ora_ext
Πώς κάνουμε replicate πίνακες από την Oracle Database πρός τον SQL Server με την χρήση GoldenGate
35

Σε περίπτωση που δεν γνωρίζουμε αν έχει κολλήσει το process και την κατάσταση στην οποία βρίσκεται τρέχουμε το παρακάτω για να δούμε το status του:

send extract ora_ext, status
Sending STATUS request to EXTRACT ORA_EXT ...
EXTRACT ORA_EXT (PID 18940028)
  Current status: In recovery[1]: Processing data

  Current read position:
  Redo thread #: 1
  Sequence #: 740643
  RBA: 5722361548
  Timestamp: 2022-01-25 03:49:51.000000
  SCN: 10.49577561 (42999250521)
  Current write position:
  Sequence #: 3870
  RBA: 1300
  Timestamp: 2022-01-25 15:34:32.843931
  Extract Trail: ./dirdat/aa

Μπορούμε επίσης να δούμε το performance ενος extract ή replicat με την παρακάτω εντολή:

stats ora_rep
Replicating from STRATOS.CUSTOMERS to DBO.CUSTOMERS:

*** Total statistics since 2022-05-03 23:42:59 ***

    Total inserts                                17.00
    Total updates                                0.00
    Total deletes                                0.00
    Total discards                               0.00
    Total operations                             17.00

 
*** Daily statistics since 2022-05-03 23:42:59 ***

    Total inserts                                17.00
    Total updates                                0.00
    Total deletes                                0.00
    Total discards                               0.00
    Total operations                             17.00



*** Hourly statistics since 2022-05-03 23:42:59 ***

    Total inserts                                17.00
    Total updates                                0.00
    Total deletes                                0.00
    Total discards                               0.00
    Total operations                             17.00

*** Latest statistics since 2022-05-03 23:42:59 ***
    Total inserts                                17.00
    Total updates                                0.00
    Total deletes                                0.00
    Total discards                               0.00
    Total operations                             17.00

Τέλος μπορούμε να δούμε μέχρι ποιο trailfile μπορεί να γίνει auto purge και με τι ρυθμίσεις έχουμε για το auto purging :

SEND MGR GETPURGEOLDEXTRACTS 
Sending GETPURGEOLDEXTRACTS request to MANAGER ...

PurgeOldExtracts Rules
Fileset                              MinHours  MinFiles   UseCP
/goldengate/dirdat/*                    1         1         Y
OK	
Extract Trails
Filename                        Oldest_Chkpt_Seqno  
/goldengate/dirdat/aa                          45

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση