none
Sql Server Replication sinnvoll/möglich? - Synchronisation zwischen DB's mit verschiedenen Schemas RRS feed

  • Frage

  • Hallo,

     

    eine Frage bzgl. Replication:

    Ich habe 2 Oracle Datenbanken die fachlich (inhaltlich) gesehen einen nahezu gleichen Bereich abdecken jedoch im Unternehmen von verschidenen Gruppen genutzt und entwickelt wurden. Somit sind die Daten in komplett verschiedenen DB-Schemas abgelegt. Es soll nun eine neue DB mittels SqlServer erstellt werden, die die beiden anderen Datenbanken irgendwann ablösen soll. 

    Es ist zunächst eine initiale Synchronisation der beiden Oracle Datenbanken in die Sql Server DB durchzuführen und anschließend eine laufende (nach Möglichkeit Ad-Hoc) Synchronisation aller 3 Datenbanken untereinander zu implementierten.

    Ist es möglich in diesem Fall Replication zu nutzen. 

    - verscheidene Db-Schema (ein Mapping ist nötig)

    - Synchronisation muß mit Businisslogik 'angereichert' werden

    - Datenbestände sehr inkonsistent ( inhaltliche Wiedersprüche zuwischen Daten, Dubletten, ect...)

     

    Oder ist hier eher eine selbstgebaute synchronisation die bessere Lösung?

     

    Vielen Dank

     

    Chris

    Montag, 27. Juni 2011 07:07

Alle Antworten

  • Hallo Chris,
    aufgrund der Inkonsistenzen und der notwendigen Business-Logik würde ich den Transfer der Daten mittels SSIS machen. Das Ergebnis landet dann in einer Staging-Datenbank (mit verschiedenen Schemata) und wird von dort aus mittels T-SQL aufbereitet in die Ziel-Datenbank (ein Schema) eingepflegt.

    Falls möglich, sollten die Tabellen auf Oracle über Trigger die Änderungen protokollieren, damit nur diese übertragen werden müssen.

    Falls auch wieder Daten zurück übertragen werden sollen, ist dies auch per SSIS oder Verbindungsserver möglich.

    Einen schönen Tag noch,
    Christoph


    Microsoft SQL Server MVP
    http://www.insidesql.org/blogs/cmu

    Montag, 27. Juni 2011 08:51
  • Hi Christoph,

     

    an SSIS hab ich auch schon gedacht - das macht aber für Ad-Hoc Synchronisation eher wenig Sinn bzw. ist nicht praktikabel!?

     

    Mein derzeitiger Ansatz ist, dass ich per Trigger auf allen Tabellen in allen DB's in eine 'SyncTabelle' die Tabelle und den PK des Datensatzes eintrage.

    Weiterhin läuft ein Job, der diese Datensätze ausliest und per #c code die Synchronisation (in Verteilter Transaction alle Datenbanken entsprechend updaten) durchführt.

    Bei solch einer eigenen Lösung laufe ich aber in sehr viele Problem, die wahrscheinlich per Sql Server Replikation abgedeckt sind.

     

    Chris


    Montag, 27. Juni 2011 11:27
  • Hi Chris,
    hier ist die Frage, was Du genau mit Ad hoc meinst. Du könntest das Paket auch alle 5 Minuten laufen lassen, wenn es Dir reicht.
    Was mir auch nicht ganz klar ist, welche Datenbank (Oracle 1, Oracle 2, SQL Server) die führende Rolle übernehmen soll, bzw. wie Du die alle drei unter einen Hut kriegen willst.

    Einen schönen Tag noch,
    Christoph


    Microsoft SQL Server MVP
    http://www.insidesql.org/blogs/cmu

    Montag, 27. Juni 2011 11:49
  • Hi Christoph,

     

    ad-hoc meint möglichst sofort - sprich Änderung in A ist quasi zum gleichen Zeitpunkt in B sichtbar - aber das ist evt. 'verhandelbar'...


    Master ist der SqlServer der kann per LinkedServer auf die Oracle Instzanzen zugreifen. Diese wiederum haben Zugriff auf die 'SyncTask' Tabelle am Sqlserver.

    Per Trigger wird dort jede initiale DB Operation vermerkt und ein Job arbeitet dann jeden SyncTask ab.


    Ich schaue mir gerade SqlServer Replication an - ich fürchte da mal schnell eine selbstgestrikte Synchronisation zu bauen ist dann, wenn es vernünftig gelöst werden soll, doch mit enormen Aufwand verbunden!


    Hast du Erfahrung mit Replication: kann man 1ne Oracle Tabelle die im SqlServer über mehrere Tabellen in normalisierter From abgebildet ist, eine bidirektionale Synchronisation implementieren?

    (wird sowas prinzipiell unterstützt)


    Vielen Dank

    Chris

    Montag, 27. Juni 2011 12:41
  • Hi Chris,
    bei weiteren Fragen zu Replikation muss ich leider passen. Wir setzen Mirroring und LogShipping und SSIS ein.

    Du bastelst Dir mit der Sync-Tabelle einige Abhängigkeiten rein, die Stillstand bedeuten könnten, falls ein beteiligtes System ausfällt.

    Einen schönen Tag noch,
    Christoph


    Microsoft SQL Server MVP
    http://www.insidesql.org/blogs/cmu

    Montag, 27. Juni 2011 13:46
  • Ok, hab Dank für dein feedback!

     

    Gruß

     

    chris

     

    Montag, 27. Juni 2011 14:16