Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So kopieren Sie Daten von einer Datenbank/Tabelle in eine andere Datenbank/Tabelle

In einer typischen Oracle-Umgebung haben Sie TNS-Namen eingerichtet. Das ist ein Dienst zum Suchen der Verbindungsparameter für Oracle-Instanzen mit einer SID oder einem Dienstnamen. In seiner einfachsten Form sind TNS-Namen eine Datei namens tnsnames.ora befindet sich in der Umgebungsvariable TNS_ADMIN (der auf das Verzeichnis zeigt, in dem sich die Datei befindet).

Gegeben sind die SIDs PROD und SANDBOX , können Sie die Tabellen dann aus dem SQLPLUS-Befehlszeilendienstprogramm kopieren:

COPY FROM username1/[email protected] to username2/[email protected]
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Bitte beachten Sie, dass dieser COPY-Befehl nur einen begrenzten Satz von Oracle-Datentypen unterstützt:char, date, long, varchar2, number.

Wenn Sie keine TNS-Namen eingerichtet haben, müssen Sie den Hostnamen oder die IP-Adresse, die Portnummer und den Dienstnamen kennen. Die Syntax lautet dann:

COPY FROM username1/[email protected]//192.168.3.17:1521/PROD_SERVICE to username2/[email protected]//192.168.4.17:1521/SANDBOX_SERVICE
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Um die SID und/oder den Dienstnamen zu ermitteln, werfen Sie am besten einen Blick in die Datei TNSNAMES.ORA auf dem Datenbankserver selbst. Wenn Sie sich bei der Datenbank anmelden können, können Sie die folgenden Abfragen verwenden, um die SID und den Dienstnamen zu ermitteln (aber fragen Sie mich nicht, welcher welcher ist):

select name from v$database;

select * from global_name;

select instance_number, instance_name, host_name from v$instance;