2016-07-19 12 views
1

Ich habe 2 Oracle-Datenbanken auf verschiedenen Servern:Eine Verbindung mit verschiedenen Oracle-Datenbank und Transfertisch durch Stored Procedure

Oracle 1 Oracle 2

Ich möchte eine gespeicherte Prozedur auszuführen, die in Oracle ausführt 1 und wie folgt vorgehen:

a) eine Verbindung mit Oracle 2 b) db Link in Oracle 2 erstellen Sie mit Oracle 1 OR verwenden, um eine Verbindung eines bestehenden wenn bereits c) Kopieren Sie die Tabelle erstellt 1 von Oracle 1 bis Oracle 2

Ich bin in der Lage, es zu tun mit:

CREATE PUBLIC DATABASE LINK mylink 
    CONNECT TO source_user IDENTIFIED BY source_password 
    USING source_entry_in_tnsnames'; 

Kopieren der Daten:

INSERT INTO mytable SELECT * FROM [email protected]; 

ich eine gespeicherte Prozedur und enthalten diese geschrieben, aber ich bin nicht in der Lage mit Oracle 2. Wie können wir verbinden Herstellen einer Verbindung zu einer anderen Oracle-Datenbank von gespeicherten Prozedur?

+0

Sofern Sie keine autonomen Transaktionen verwenden, sollte es überhaupt keine Probleme geben, sich mit mylink mit Oracle 2 zu verbinden. Könnten Sie bitte irgendwelche Fehlermeldungen teilen? Ich glaube nicht, dass Sie Ihren zweiten DB-Link erstellen müssen - verwenden Sie einfach mylink, um die Daten zu übertragen. –

Antwort

1

Es könnte ein Rechtsproblem sein. Ihr Datenbanklink auf der Oracle-Zieldatenbank, auf der die gewünschte Prozedur ausgeführt wird. Es muss Ausführungsrechte für dieses Paket/proc haben.

Auch ich habe gefunden, dass ich diese Zielprozeduren mit dem Schemanamen aufrufen muss. Wie zum Beispiel [email protected] (parms). Wenn ich das Schema für den Aufruf von proc nicht hätte, würde das Paket nicht kompiliert.

Seite Hinweis ... Wenn Sie eine Prozedur über einen Link aufrufen, für den refCursor zurückgegeben wurde, funktioniert es nicht. (zumindest auf Oracle 10 und 11). In diesen Fällen musste ich einen Tisch zurückgeben.