In un tipico ambiente Oracle, sono stati impostati i nomi di TNS. Questo è un servizio per cercare i parametri di connessione per le istanze Oracle dato un SID o un nome di servizio. Nella sua forma più semplice, i nomi di TNS sono un file chiamato tnsnames.ora
situato nella variabile di ambiente TNS_ADMIN
(che punta alla directory in cui si trova il file).
Date le SID PROD
e SANDBOX
, è quindi possibile copiare le tabelle dalla linea di comando SQLPLUS:
COPY FROM username1/[email protected] to username2/[email protected]
INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);
Si prega di notare che questo comando COPY supporta solo un set limitato di tipi di dati Oracle: char, la data, lungo, varchar2, numero.
Se non sono stati impostati i nomi di TNS, è necessario conoscere il nome host o l'indirizzo IP, il numero di porta e il nome del servizio. La sintassi diventa allora:
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 avere uno sguardo al file tnsnames.ora sul server di database stesso. Se siete in grado di accedere al database, è possibile utilizzare le seguenti query per determinare il nome SID e il servizio (ma non mi chiedete che cosa si tratta):
select name from v$database;
select * from global_name;
select instance_number, instance_name, host_name from v$instance;
La tabella di destinazione esiste già? – tallybear
'production_IP' rappresenta un indirizzo IP? Se sì, non è sufficiente. È necessario impostare i nomi di TNS e utilizzare un SID o un nome di servizio o utilizzare un nome di connessione facile (che include anche un SID o un nome di servizio). – Codo
@tallybear: Sì –