Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como copiar dados de um banco de dados/tabela para outro banco de dados/tabela


Em um ambiente Oracle típico, você tem nomes TNS configurados. Esse é um serviço para pesquisar os parâmetros de conexão para instâncias do Oracle com um SID ou nome de serviço. Em sua forma mais simples, os nomes TNS são um arquivo chamado tnsnames.ora localizado pela variável de ambiente TNS_ADMIN (que aponta para o diretório onde está o arquivo).

Dados os SIDs PROD e SANDBOX , você pode copiar as tabelas do utilitário de linha de comando SQLPLUS:
COPY FROM username1/[email protected] to username2/[email protected]
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Observe que este comando COPY suporta apenas um conjunto limitado de tipos de dados Oracle:char, date, long, varchar2, number.

Se você não tiver nomes TNS configurados, precisará saber o nome do host ou endereço IP, o número da porta e o nome do serviço. A sintaxe então se torna:
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);

Para determinar o SID e/ou o nome do serviço, é melhor dar uma olhada no arquivo TNSNAMES.ORA no próprio servidor de banco de dados. Se você conseguir fazer login no banco de dados, poderá usar as seguintes consultas para determinar o SID e o nome do serviço (mas não me pergunte qual é qual):
select name from v$database;

select * from global_name;

select instance_number, instance_name, host_name from v$instance;