1. Start
  2. Unternehmen
  3. Blog
  4. Replikation mit SharePlex

Replikation mit SharePlex

Ausgangssituation

Im folgenden Blogeintrag sollen die wesentliche Schritte vorgestellt werden, um eine einfache Tabellenreplikation mit dem Tool SharePlex der Firma Quest aufzusetzen.
Als Ausgangspunkt dienen zwei Oracle 19c NONCDB Datenbanken, die jeweils auf einem Oracle Linux 8 Server laufen.
Die Server bzw. Datenbanken werden im Folgenden Source Host/Datenbank bzw. Target Host/Datenbank genannt.

Installation von SharePlex

​Die Installation der SharePlex Software muss auf beiden Hosts erfolgen. Eine Installation kann nur mit einem gültigen Lizenz Key erfolgen, in unserem Fall war eine 30 Tage-Trial-Lizenz vorhanden.
Folgende SharePlex Security Gruppen sind anzulegen, mit denen der Zugriff zu den SharePlex Prozesse ermöglicht wird:

 

# groupadd spadmin 
# groupadd spopr 
# groupadd spview

 

Weiterhin muss ein SharePlex Administrator-Nutzer angelegt werden (hier splex).
Der Nutzer muss sowohl Mitglied der spadmin-Gruppe sein wie auch der Oracle-Gruppe dba.
Auf jedem Source- und Target-System muss es mindestens ein Nutzer mit Administratorrechten geben.

 

# useradd -g spadmin -G dba,oinstall splex

 

Weitere Installationsveraussetzungen für das jeweilige Betriebssystem können in der Quest-Dokumentation nachgelesen werden.
Jetzt kann die Installation von SharePlex auf beiden Hosts erfolgen.

 

# su - splex
$ chmod 755 SharePlex-10.1.2-b45-rhel-amd64-m64.tpm
$ ./SharePlex-10.1.2-b45-rhel-amd64-m64.tpm

SharePlex installation program:
    SharePlex Version: 10.1.2
    Build platform: rhel-amd64
    Target platform: lin-amd64

Please enter the product directory location? /home/splex/splex/prod
Please enter the variable data directory location? /home/splex/splex/var

Please specify the SharePlex Admin group (select a number):
1. [spadmin]
2. dba
3. oinstall

Please enter the TCP/IP port number for SharePlex communications? [2100] 

Preparing to install SharePlex v.10.1.2:
    User:                     splex
    Admin Group:              spadmin
    Product Directory:        /home/splex/splex/prod
    Variable Data Directory:  /home/splex/splex/var

Proceed with installation? [yes]

Do you have a valid SharePlex v. 10.1.2 license? [yes]

Please enter the License key? EGS03WPS1A2F2HHWPAY0FAV3NCZY6853ZF

Please enter the customer name associated with this license key? Robotron Datenbank-Software GmbH

SharePlex v. 10.1.2 license validation successful:
    Customer Name:      Robotron Datenbank-Software GmbH
    License Key:        EGS03WPS1A2F2HHWPAY0FAV3NCZY6853ZF
    Product Name:       SharePlex for Oracle - RAC
    License Key Type:   "Trial Key"
    Expires:            at Midnight of Feb 03, 2022

NOTE: You can upgrade this license key or add license keys for additional machines
      by executing utility /home/splex/splex/prod/install/splex_add_key.

Installation log saved to: /home/splex/.shareplex/INSTALL-SharePlex-10.1.2-2201071520.log
SharePlex v.10.1.2 installation successful.

 

Nach der Installation ist die Umgebung für SharePlex auf beiden Hosts anzupassen.
Hier sieht man einen Ausschnitt aus der .bashrc des Nutzers splex auf dem Source Host:

 

….
export TMP=/tmp
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:/usr/sbin/:$PATH

export TNS_ADMIN=$ORACLE_HOME/network/admin
export SP_SYS_PRODDIR=/home/splex/splex/prod
export SP_SYS_VARDIR=/home/splex/splex/var
export SP_COP_TPORT=2100
export SP_COP_UPORT=2100
export SP_SYS_HOST_NAME=lehrvpc233
export PATH=$PATH:$SP_SYS_PRODDIR/bin
alias spbin='cd $SP_SYS_PRODDIR/bin'
alias spvar='cd $SP_SYS_VARDIR/'
alias splog='cd $SP_SYS_VARDIR/log'
alias spc='$SP_SYS_PRODDIR/bin/sp_ctrl'
alias gocop='$SP_SYS_PRODDIR/bin/sp_cop &'
…

 

Im Verzeichnis $SP_SYS_PRODDIR/bin finden wir wichtige Programme von SharePlex.
Aus diesem Verzeichnis wird das SharePlex mit dem folgenden Kommando auf beiden Hosts gestartet.

$ $SP_SYS_PRODDIR/bin/sp_cop &       

Das "status" Kommando der SharePlex Command Utilities zeigt anfangs, dass nur SharePlex und das Command Utility gestartet sind, es gibt noch keine aktive Konfiguration.

 

[splex@lehrvpc233 bin]$ cd $SP_SYS_PRODDIR/bin
[splex@lehrvpc233 bin]$ ./sp_ctrl

*******************************************************
* SharePlex Command Utility
* Copyright 2021 Quest Software Inc.
* ALL RIGHTS RESERVED.
* Protected by U.S. Patents: 7,461,103 and 7,065,538
*******************************************************

Bad terminal type: "xterm-256color". Will assume vt100.

Anfangs ist nur SharePlex und das Command Utlity gestartet, es gibt keine aktive Konfiguration.

sp_ctrl (lehrvpc233:2100)> status

Brief Status for lehrvpc233
Process          State                             PID     Running   Since     
---------------  ------------------------------  --------  --------------------
Cop              Running                            32582  07-Jan-22 15:33:56  
Cmd & Ctrl       Running                            32631  07-Jan-22 15:44:13  
There are no active configuration files

Konfiguration

Nun werden Source- und Target-Datenbank mit dem Skript "ora_setup" für die Kommunikation mit SharePlex vorbereitet.

 

$ ora_setup

Welcome to the Oracle SharePlex setup process for port 2100.
This process creates tables and user accounts needed to run
Oracle SharePlex replication.

Will the SharePlex install be using a BEQUEATH connection? (Entering 'n' implies a SQL*net connection)  [y] :

Enter the Oracle SID for which SharePlex should be installed [ORCL] : ORCL

Enter a DBA user for ORCL  : system

Enter password for the DBA account, which will not echo :

connecting--This may take a few seconds.

validating user name and password. . . This may take a few seconds.
SharePlex objects will need to be created under a special
account.  You can pick an existing user or create a new one.
Would you like to create a new SharePlex user ? [y] :

Enter username for new user [splex/splex] :

Warning:  This user is now being granted unlimited tablespace.
This privilege will remain in effect until it is explicitly changed.
Granting select on sys.user$ to splex

Do you want to enable replication of tables with TDE? [n] :

To enable replication of tables with TDE in the future, please rerun ora_setup.

Setup will now install SharePlex objects.

These are the existing tablespaces.

SYSTEM SYSAUX UNDOTBS1 TEMP USERS 

Enter the default tablespace for use by SharePlex [USERS] :

Enter the temporary tablespace for use by SharePlex [TEMP] :

Enter the index tablespace for use by SharePlex [ ] : USERS

Creating SharePlex objects [Installation type: Fresh]. . .

Creating SharePlex Oracle-timezone-region map . . . Done.

Creating Conflict Resolution Package . . . Done.

Creating SharePlex Dataequator package . . . 

Loading Compare Package from "/home/splex/splex/prod/util/sp_deq_pkg.plb"...Done.

Loading Compare Varray Package from "/home/splex/splex/prod/util/sp_deq_v_pkg.plb"...Done.

Will the current setup for sid: [ORCL] be used as source (including cases as source for failover or master-master setups)?  [y] :

Setup of SharePlex objects successful . . .

Changing SharePlex connection database . . .

Setup of ORCL completed successfully

-- The datasource identifier in the SharePlex configuration is 'o.ORCL' --

 

Der zuletzt ausgegeben Datasource Identifier 'o.ORCL'  wird in der Konfiguration benötigt.

Für beide Datenbanken muss das "Minimal supplemental logging" aktiviert werden.

 

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (Primary key, Foreign Key, unique) columns; 
SQL> ALTER SYSTEM SWITCH LOGFILE;

 

Jetzt kann die SharePlex Konfiguration durchgeführt werden.
Im entsprechenden Verzeichnis gibt es bereits Konfigurationen.

 

$ ls -l /home/splex/splex/var/config
…
-rw-rw-r-- 1 splex spadmin    151 Jan  7 15:22 ORA_config
…

Anzeige der Konfigurationen:

sp_ctrl (lehrvpc233:2100)> list config

File   Name                                         State       Datasource     
--------------------------------------------------  ----------  ---------------
ORA_config                                          Inactive    o.SOURCE_SID   
Last Modified At: 07-Jan-22 15:22    Size: 151   
…

 

Die vorhandene Konfiguration ist derzeit inaktiv.

Jetzt wird die neue Konfigurationsdatei scott_config_eine_table.lst erstellt.
Dabei soll die Tabelle MY_DEPT des Nutzers scott unter analogem Nutzer und Tabellennamen auf die Target-Datenbank repliziert werden.

 

$ cat /home/splex/splex/var/config/scott_config_eine_table.lst

Datasource:o.ORCL
#Source Table       Destination Table        Routing Map
scott.MY_DEPT       scott.MY_DEPT            lehrvpc234@o.ORCL                 

 

Quell- und Ziel-Tabellennamen sind im Beispiel gleich, über den Routing Map wird der Ziel Host definiert.

Jetzt ist die neue Datei im Standardverzeichnis auch sichtbar:

 

sp_ctrl (lehrvpc233:2100)> list config

File   Name                                         State       Datasource     
--------------------------------------------------  ----------  ---------------
scott_config_eine_table.lst                         Inactive    o.ORCL         
Last Modified At: 19-Jan-22 09:08    Size: 120   

ORA_config                                          Inactive    o.SOURCE_SID
…

 

Noch sind beide Konfigurationen inaktiv.
Über das SharePlex Command Utility können verschiedene DDL Replikationsmöglichkeiten eingestellt werden.
Beim folgenden Parameter SP_OCT_REPLICATE_DDL bedeutet der Wert 3, dass auch alle DDL für die in der Konfiguration verwendeten Tabellen repliziert werden, also auch drop und create.

Das ist auch die in der Praxis am meisten eingesetzte Variante.

 

sp_ctrl (lehrvpc233:2100)> list param capture
…
SP_OCT_REPLICATE_DDL            3                                              Live     
…

 

Mit "verify" wird die syntaktische Richtigkeit der Konfiguration geprüft.
Nach erfolgreichem Test wird die Konfiguration mit "activate" aktiviert.

 

sp_ctrl (lehrvpc233:2100)> verify config scott_config_eine_table.lst detail

  1:  Datasource:o.ORCL
  2:  #Source Table       Destination Table        Routing Map
  3:  "SCOTT"."MY_DEPT"	"SCOTT"."DEPT"	lehrvpc234@o.ORCL

  Config scott_config_eine_table.lst is valid
  View detailed config in /home/splex/splex/var/temp/scott_config_eine_table.lst


sp_ctrl (lehrvpc233:2100)> activate config scott_config_eine_table.lst

sp_ctrl (lehrvpc233:2100)> list config

File   Name                                         State       Datasource     
--------------------------------------------------  ----------  ---------------
scott_config_eine_table.lst                         Active    o.ORCL         
Last Modified At: 19-Jan-22 09:08    Size: 120   

ORA_config                                          Inactive    o.SOURCE_SID
…

 

Das folgende Kommando gibt einen Überblick der replizierten Objekte.

 

sp_ctrl (lehrvpc233:2100)> show config

Tables Replicating with no key:

  "SCOTT"."MY_DEPT"

File Name  :scott_config_eine_table.lst
Datasource :ORCL
Activated  :19-Jan-22 13:23:18
Actid      :6

Total Objects                 :1
Total Objects Replicating     :1
Total Objects Not Replicating :0

View config summary in /home/splex/splex/var/log/ORCL_config_log

 

Auf Source Host lehrvpc233 wurden weitere Prozesse gestartet, z.B. Capture,
ebenso auf dem Target Host lehrvpc234, z.B. Post.

 

sp_ctrl (lehrvpc233:2100)> status

Brief Status for lehrvpc233
Process          State                             PID     Running   Since     
---------------  ------------------------------  --------  --------------------
Cop              Running                           113119  20-Jan-22 09:33:31  
Cmd & Ctrl       Running                           113135  20-Jan-22 09:34:28  
Capture          Running                           113210  20-Jan-22 09:42:43  
Read             Running                           113219  20-Jan-22 09:42:44  
Export           Running                           113237  20-Jan-22 09:42:47  

System is used as a source machine
There is 1 active configuration file

sp_ctrl (lehrvpc234:2100)> status

Brief Status for lehrvpc234
Process          State                             PID     Running   Since     
---------------  ------------------------------  --------  --------------------
Cop              Running                           109165  20-Jan-22 09:33:36  
Cmd & Ctrl       Running                           109169  20-Jan-22 09:34:26  
Import           Running                           109199  20-Jan-22 09:42:32  
Post             Running                           109200  20-Jan-22 09:42:32  
There are no active configuration files

 

 

Test der Replikation

Damit sind alle Voraussetzungen erfüllt, um die Replikation zu testen.
Die Ausgangssituation auf Source und Target sieht so aus:

 

SYS@ORCL> conn scott/tiger
Connected.
SCOTT@ORCL>select table_name from user_tables;

TABLE_NAME
----------
DEPT
SALGRADE
BONUS
EMP

 

Im ersten DDL Test wird die Tabelle auf der Source-Datenbank neu angelegt.
Die Tabelle wird erfolgreich auf der Target-Datenbank angelegt.

 

$ sqlplus scott/tiger

SCOTT@ORCL> create table my_dept as select * from dept;

-> Tabelle wird auf Target übertragen….

SCOTT@ORCL>select table_name from user_tables;

TABLE_NAME
----------
…
MY_DEPT
….

 

Im zweiten Test wird DML getestet.
Auch hier wurde der neue Datensatz erfolgreich repliziert.

 

SCOTT@ORCL>insert into my_dept values ( 60,'Schulung', 'Leipzig');
SCOTT@ORCL>commit;

-> Target - Daten angekommen !!

select * from my_dept

    DEPTNO DNAME	  LOC
---------- --------   -------
…
	60     Schulung	  Leipzig

 

Damit hat die logische Replikation fehlerfrei und schnell funktioniert.

Zusammenfassung

In diesem Blogeintrag wurden die wesentlichen Schritte vorgestellt, um mit SharePlex eine logische Tabellenreplikation initial zwischen zwei Oracle Datenbanken aufzusetzen. Die Replikation nutzt dabei auch Informationen der aktuellen Redo Log Gruppe. Die Konfiguration der zu replizierten Objekte über eine Textdatei ist sehr einfach.

Dabei erfolgt Steuerung der Replikation immer von der Quelle aus. Die Zieldatenbank ist dabei vollständig read / write geöffnet (im Unterschied z.B. zu Oracle Data Guard Konfigurationen). Falls also (versehentlich) manuell replizierten Daten auf dem Target verändert werden, so bekommt die Quelle diese Veränderung nicht mit und die Daten sind "Out of Sync". Eine Möglichkeit der Korrektur ist das komplette Löschen und Neuanlegen der betroffenen Tabelle auf Source und Target sowie das Aktivieren der vorhandenen Konfiguration, wie im Blog gezeigt.

Eine zweite Möglichkeit ist die Synchronisation der Tabellen, die "Out of Sync" sind.
Diese Funktionalität stellen wir Ihnen noch in einem kommenden Blogeintrag vor.

Kommentare

Keine Kommentare

Kommentar schreiben

* Diese Felder sind erforderlich