web-dev-qa-db-fra.com

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

J'ai écrit la requête suivante en utilisant la documentation à l'adresse: Documentation Oracle pour copier des données d'une base de données/table sur mon serveur de production vers une base de données/table sur un serveur Sandbox.

COPY FROM username1/passwd1@<production_IP> to username2/passwd2@<sandbox_IP> INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Cependant, je rencontre constamment l'erreur Connection failed. Y a-t-il un problème avec la requête?

11
name_masked

Dans un environnement Oracle typique, vous avez configuré les noms TNS. C'est un service permettant de rechercher les paramètres de connexion des instances Oracle à l'aide d'un SID ou d'un nom de service. Dans sa forme la plus simple, les noms TNS sont un fichier appelé tnsnames.ora situé 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/passwd1@PROD to username2/passwd2@SANDBOX
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

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

Si les noms TNS ne sont pas configurés, 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/passwd1@//192.168.3.17:1521/PROD_SERVICE to username2/passwd2@//192.168.4.17:1521/SANDBOX_SERVICE
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Pour déterminer le nom du SID et/ou du service, consultez 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;
17
Codo

Copiez gpl_project/gpl_project@gpldatar dans gpl_project/gpl_project@gplrdp. Remplacez BGROUPMASTER en utilisant select * from BGROUPMASTER.

1
susheel