Vergleichen Sie Millionen von Datensätzen von Oracle mit SQL Server

8

Ich habe eine Oracle-Datenbank und eine SQL Server-Datenbank. Es gibt eine Tabelle, die Inventory enthält, die Millionen von Zeilen in beiden Datenbanktabellen enthält und weiter wächst.

Ich möchte die Oracle-Tabellendaten mit den SQL Server-Daten vergleichen, um herauszufinden, welche Datensätze in der SQL Server-Tabelle täglich fehlen.

Was ist der beste Ansatz dafür?

  1. Erstellen Sie das SSIS-Paket.
  2. Windows-Dienst erstellen.

Ich möchte weniger Ressourcen verbrauchen, um diese Funktionalität zu erreichen, die weniger Zeit und Ressourcen benötigt.

ZB: 18 Millionen Datensätze in Oracle und 16/17 Millionen in SQL Server

Diese Situation von zwei verschiedenen Datenbanken entstehen, weil zwei verschiedene Anwendungen online und offline

BEARBEITEN : Wie wäre es, SQL Server von Oracle über Oracle Gateway mit SQL Server zu verbinden

1) Direktabfrage von Oracle an den SQL-Server, um den fehlenden Datensatz im SQL-Server zum ersten Mal zu aktualisieren.

2) Erstellen Sie einen Trigger für Oracle, der ausgeführt wird, wenn der Datensatz von Oracle gelöscht wird und gelöschter Datensatz in die neue Oracle-Tabelle eingefügt wird.

3) Erstellen Sie das SSIS-Paket, um die neu erstellte Oracle-Tabelle mit SQL Server zuzuordnen, um den SQL Server-Datensatz zu aktualisieren. Auf diese Weise müssen nur wenige Datensätze täglich über SSIS verarbeitet werden.

Was halten Sie von diesem Ansatz?

    
Mahajan344 15.01.2016, 06:09
quelle

5 Antworten

1

Ich würde ein SSIS-Paket erstellen und die Daten aus der Oracle-Tabelle mithilfe einer Datenfluss- / OLE DB-Datenquelle laden. Wenn Sie SQL Enterprise haben, sind die Attunity Connectors etwas schneller.

Dann würde ich den Schlüssel aus der SQL Server-Tabelle in eine Lookup-Umwandlung laden, wo ich die 2 Quellen des Schlüssels abgleichen und die nicht übereinstimmenden Zeilen in eine separate Ausgabe leiten würde.

Schließlich würde ich die Ausgabe der nicht übereinstimmenden Zeilen an einen OLE DB-Befehl leiten, um die SQL Server-Tabelle zu aktualisieren.

Dieses SSIS-Paket benötigt viel Speicher, aber da das Matching im Speicher mit minimalem IO erfolgt, wird es wahrscheinlich schneller als andere Lösungen sein. Es benötigt genügend freien Speicher, um alle Schlüssel aus der SQL Server-Tabelle zwischenzuspeichern.

SSIS hat auch den Vorteil, dass es viele andere Transformationsfunktionen zur Verfügung stellt, wenn Sie sie später brauchen.

    
Mike Honey 17.01.2016 21:51
quelle
1

Was Sie im Grunde tun möchten, ist die Replikation von Oracle zu SQL Server.

Sie können dies in SSIS, einem Windows-Dienst oder einer Vielzahl von Plattformen tun. Der wahre Trick ist die Verwendung des richtigen Entwurfsmusters.

Es gibt zwei allgemeine Entwurfsmuster

  1. Snapshot-Replikation

Sie nehmen alle Datensätze von beiden Systemen und vergleichen sie irgendwo (bisher haben wir Vorschläge zum Vergleichen in SSIS oder Vergleichen auf Oracle, aber noch keinen Vorschlag zum Vergleichen auf SQL Server, obwohl dies gültig ist )

Sie vergleichen hier 18 Millionen Datensätze, das ist eine Menge Arbeit

  1. Differenzielle Replikation

Sie erfassen die Änderungen im Verleger (d. h. Oracle) seit der letzten Replikation, dann übernehmen Sie diese Änderungen für den Abonnenten (d. h. SQL Server)

Sie können dies manuell tun, indem Sie Trigger und Protokolltabellen auf der Oracle-Seite implementieren und dann einen regulären ETL-Prozess (SSIS, Befehlszeilentools, Textdateien usw.) verwenden, der wahrscheinlich im SQL-Agent geplant ist, um diese auf den SQL Server anzuwenden .

Alternativ können Sie die Replikationsfunktion verwenden, um Oracle als Publisher und SQL als Abonnenten einzurichten: Ссылка

Sie müssen einige davon ausprobieren und sehen, was für Sie funktioniert.

Angesichts dieses Ziels:

  
    

Ich möchte weniger Ressourcen verbrauchen, um diese Funktionalität zu erreichen, die weniger Zeit und weniger Ressourcen benötigt

  

Transaktionsreplikation ist viel effizienter, aber kompliziert. Zu Wartungszwecken, mit welchen Plattformen (.Net, SSIS, Python usw.) sind Sie am besten vertraut?

    
Nick.McDermaid 20.01.2016 01:33
quelle
0

Andere Alternativen:

Wenn Sie das Oracle-Gateway für SQL Server verwenden können, müssen Sie keine Daten übertragen und können die Abfrage direkt durchführen.

Wenn Sie das Oracle-Gateway nicht verwenden können, können Sie die Pentaho-Datenintegration oder ein anderes ETL-Tool verwenden, um Tabellen zu vergleichen und Ergebnisse zu erhalten. Ist einfach zu bedienen.

    
JLC 17.01.2016 17:10
quelle
0

Ich denke, der beste Ansatz ist die Verwendung von Oracle Gateway. Folgen Sie einfach den Schritten. Ich habe ähnliche Erfahrung.

  1. Installieren und konfigurieren Sie Oracle Database Gateway für SQL Server. Ссылка
  2. Jetzt können Sie einen dblink von Oracle auf SQL Server erstellen.
  3. Erstellen Sie eine Prozedur, die die fehlenden Datensätze in der Oracle-Datenbank vergleicht und in die SQL Server-Datenbank einfügt.

Sie können diese Anweisung beispielsweise in Ihrer Prozedur verwenden.

%Vor%
  1. Erstellen Sie einen Scheduler, der die Prozedur täglich ausführt.

Wenn beide Datenbanken online sind, werden fehlende Datensätze in den SQL-Server eingefügt. Andernfalls schlägt der Scheduler fehl oder Sie können die Prozedur manuell ausführen. Es braucht minimale Ressourcen.

    
Md. Shamim Al Mamun 19.01.2016 16:59
quelle
0

Ich werde vorschlagen, eine hausgemachte ETL-Lösung zu haben.

  1. Planen Sie einen Oracle-Job , um Quellentabelle-Daten zu exportieren (täglich Art und Weise auf der Grundlage der Anwendungslogik) zu einfachen CSV Format.
  2. Planen Sie einen SQL-Server-Job (mit akzeptabler Verzögerung vom ersten Oracle-Job), um ihn zu lesen diese CSV-Datei und importieren Sie sie zu einer mittleren Tabelle in sql-servter mit BULK INSERT .
  3. Der letzte Teil des SQL-Server-Jobs liest mittlere Tabellendaten und mache die Logik (füge ein, aktualisiere Zieltabelle). Ich schlage vor, eine weitere Tabelle zu haben, um Berichte über dieses tägliche Arbeitsergebnis zu speichern.
Mohsen Heydari 24.01.2016 07:03
quelle

Tags und Links