Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment copier des données d'une base de données/table vers une autre base de données/table

Dans un environnement Oracle typique, vous avez configuré des noms TNS. Il s'agit d'un service permettant de rechercher les paramètres de connexion des instances Oracle à partir d'un SID ou d'un nom de service. Dans sa forme la plus simple, les noms TNS sont un fichier appelé tnsnames.ora localisé par la variable d'environnement TNS_ADMIN (qui pointe vers le répertoire où se trouve le fichier).

Étant donné les SID PROD et SANDBOX , vous pouvez ensuite copier les tables à partir de l'utilitaire de ligne de commande SQLPLUS :

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

Veuillez noter que cette commande COPY ne prend en charge qu'un ensemble limité de types de données Oracle :char, date, long, varchar2, number.

Si vous n'avez pas configuré de noms TNS, vous devez connaître le nom d'hôte ou l'adresse IP, le numéro de port et le nom du service. La syntaxe devient alors :

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

Pour déterminer le SID et/ou le nom du service, il est préférable de consulter le fichier TNSNAMES.ORA sur le serveur de base de données lui-même. Si vous parvenez à vous connecter à la base de données, vous pouvez utiliser les requêtes suivantes pour déterminer le SID et le nom du service (mais ne me demandez pas lequel est lequel) :

select name from v$database;

select * from global_name;

select instance_number, instance_name, host_name from v$instance;