Oracle
 sql >> Database >  >> RDS >> Oracle

Come copiare i dati da un database/tabella a un altro database/tabella

In un tipico ambiente Oracle, hai nomi TNS impostati. Questo è un servizio per cercare i parametri di connessione per le istanze Oracle a cui è stato assegnato un SID o un nome di servizio. Nella sua forma più semplice, i nomi TNS sono un file chiamato tnsnames.ora individuato dalla variabile di ambiente TNS_ADMIN (che punta alla directory in cui si trova il file).

Dati i SID PROD e SANDBOX , puoi quindi copiare le tabelle dall'utilità della riga di comando SQLPLUS:

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

Tieni presente che questo comando COPY supporta solo un set limitato di tipi di dati Oracle:char, date, long, varchar2, number.

Se non disponi di nomi TNS impostati, dovrai conoscere il nome host o l'indirizzo IP, il numero di porta e il nome del servizio. La sintassi diventa quindi:

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);

Per determinare il SID e/o il nome del servizio, è meglio dare un'occhiata al file TNSNAMES.ORA sul server del database stesso. Se sei in grado di accedere al database, puoi utilizzare le seguenti query per determinare il SID e il nome del servizio (ma non chiedermi quale sia quale):

select name from v$database;

select * from global_name;

select instance_number, instance_name, host_name from v$instance;