SQLServer-Publikation von Oracle

9

Einer unserer Kunden hat einen Oracle 10.2.0.5 RAC (HPUX) und zwei SQL Server 2012 ( Windows server 2008R2 ). Und wir helfen ihnen, Daten von Oracle auf SQL Server zu veröffentlichen. Sie müssen auch wissen, welche Zeilen hinzugefügt, aktualisiert und gelöscht werden, aber sie möchten ihre Apps nicht ändern.

Das Ganze funktioniert so:

  

Oracle als Herausgeber - & gt; SQL Server A als Distributor - & gt; SQL Server B als   Abonnent

Unser DBA hatte alle DBs über SSMS (SQL Server Management Studio) wie folgt konfiguriert: Erstellen Sie eine Publikation aus einer Oracle-Datenbank . Es hat mehrere Tage sehr gut funktioniert. Aber die Leistung von Oracle wird immer schlechter. Endlich müssen wir die Datenveröffentlichung von Oracle stoppen.

Es stellt sich heraus, dass SSMS in Oracle ein Paket namens "HREPL" erstellt, das eine Prozedur namens " PollEnd " hat. " PollEnd " wird sehr häufig ausgeführt, um Daten in der Tabelle " HREPL_ARTICLE1LOG_1 " zu löschen. Aber die Ausführungszeit von " PollEnd " erhöht sich mit der Zeit. Endlich ist die Ausführungszeit länger als die auszuführende Zeitspanne, und die Tabelle ist gesperrt, und die Leistung von Oracle wird sehr schlecht sein.

Und wir stecken hier fest.

Hat jemand eine Idee, wie man das beheben kann? Bitte helfen Sie!

Die Prozedur "PollEnd":

%Vor%

Bearbeiten 01:

Das vollständige Paket finden Sie hier: HREPL

Bearbeiten 02:

Endlich geben wir auf. MS und Oracle beschuldigen sich gegenseitig.

Wir haben versucht, ogg zu verwenden, um Daten von Oracle auf den SQL-Server zu kopieren, was auch ein Durcheinander ist.

Jetzt versuchen wir, ogg zu verwenden, um Daten von oracle nach oracle zu kopieren.

Danke für die Hilfe.

    
neohope 25.08.2016, 10:32
quelle

2 Antworten

0

Konvertieren Sie Ihre DELETE ... WHERE EXISTS (...) -Abfragen so, dass sie die Syntax zum Löschen mehrerer Tabellen verwenden.

%Vor%

Erstellen Sie für jede betroffene Tabelle einen Funktionsindex:

%Vor%

Und dann weiter unten:

%Vor%

Löschen Sie schließlich vollständig LOOP over dual - es tut absolut überhaupt nichts; Führen Sie einfach den Code darin mit CurrentPollid direkt aus.

    
Bohemian 07.02.2017 13:58
quelle
0

Einige Join-Bedingungen scheinen unvernünftig zu sein, Sie könnten mit dieser Version mehr Glück haben - wenn Sie es bei der Produktion versuchen, tun Sie das auf Ihr eigenes Risiko!

%Vor%     
Erich Kitzmueller 07.02.2017 14:22
quelle

Tags und Links