W typowym środowisku Oracle masz skonfigurowane nazwy TNS. Jest to usługa sprawdzająca parametry połączenia dla instancji Oracle z podanym identyfikatorem SID lub nazwą usługi. W swojej najprostszej postaci nazwy TNS to plik o nazwie tnsnames.ora
zlokalizowany przez zmienną środowiskową TNS_ADMIN
(która wskazuje katalog, w którym znajduje się plik).
Biorąc pod SID PROD
i SANDBOX
można następnie skopiować tabele z narzędzia wiersza poleceń SQLPLUS:
COPY FROM username1/[email protected] to username2/[email protected]
INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);
Należy pamiętać, że to polecenie COPY obsługuje tylko ograniczony zestaw typów danych Oracle: char, data, długi, varchar2, liczba.
Jeśli nie masz skonfigurowanych nazw TNS, musisz znać nazwę hosta lub adres IP, numer portu i nazwę usługi. Składnia wówczas postać:
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);
Aby określić Sid i/lub nazwę usługi, najlepiej zajrzeć do pliku TNSNAMES.ORA na samym serwerze bazy danych. Jeśli jesteś w stanie zalogować się do bazy danych, można użyć następujących zapytań do określenia nazwy Sid i usług (ale nie pytaj mnie, co jest czym):
select name from v$database;
select * from global_name;
select instance_number, instance_name, host_name from v$instance;
Czy tabela docelowa już istnieje? – tallybear
Czy "production_IP" oznacza adres IP? Jeśli tak, to nie wystarczy. Musisz mieć ustawione nazwy TNS i używać identyfikatora SID lub nazwy usługi lub użyć nazwy łatwego połączenia (która zawiera również identyfikator SID lub nazwę usługi). – Codo
@tallybear: Tak –