it-swarm.com.de

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

Ich habe die folgende Abfrage mit der Dokumentation geschrieben: Oracle Documentation , um einige Daten aus einer Datenbank/Tabelle auf meinem Produktionsserver in eine Datenbank/Tabelle auf einem Sandbox-Server zu kopieren.

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

Ich bin jedoch ständig auf Connection failed Fehler gestoßen. Stimmt die Abfrage nicht?

11
name_masked

In einer typischen Oracle-Umgebung haben Sie TNS-Namen eingerichtet. Dies ist ein Dienst zum Nachschlagen der Verbindungsparameter für Oracle-Instanzen mit einer SID oder einem Servicenamen. In der einfachsten Form handelt es sich bei TNS-Namen um eine Datei mit dem Namen tnsnames.ora, die sich in der Umgebungsvariablen TNS_ADMIN befindet (die auf das Verzeichnis verweist, in dem sich die Datei befindet).

In Anbetracht der 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 eine begrenzte Anzahl 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, schauen Sie am besten in die Datei TNSNAMES.ORA auf dem Datenbankserver. Wenn Sie sich bei der Datenbank anmelden können, können Sie die folgenden Abfragen verwenden, um die SID und den Servicenamen zu ermitteln (fragen Sie mich jedoch nicht, welche ist welche):

select name from v$database;

select * from global_name;

select instance_number, instance_name, Host_name from v$instance;
17
Codo

Kopieren Sie gpl_project/[email protected] in gpl_project/[email protected]. Ersetzen Sie BGROUPMASTER mit select * from BGROUPMASTER.

1
susheel