web-dev-qa-db-fra.com

copie d'une base de données vers une autre à l'aide du développeur Oracle SQL - la connexion a échoué

J'essaie de copier une table d'une base de données vers une autre à l'aide du développeur Oracle SQL. J'ai le nom d'utilisateur, mot de passe et SID.

copy from uname1/password1@SID1 to uname2/pwd2@SID2 insert table1 (*) using (select * from message_table);

Cependant, je reçois le connection failed Erreur.

Les deux bases de données sont présentes dans des hôtes différents (le nom d'hôte est différent dans les propriétés de connexion).

Le tableau contient 5 millions d’enregistrements et est trop encombrant pour exporter/importer.

23
user2133404

La commande copy est une commande SQL * Plus (et non une commande SQL Developer). Si vous avez configuré vos entrées tnsname pour SID1 et SID2 (par exemple, essayez un tnsping), vous devriez pouvoir exécuter votre commande.

Une autre hypothèse est que table1 a les mêmes colonnes que message_table (et que les colonnes ne contiennent que les types de données suivants: CHAR, DATE, LONG, NUMBER ou VARCHAR2). De plus, avec une commande d'insertion, vous devez vous préoccuper des clés primaires (par exemple, vous n'insérez pas d'enregistrements en double).

J'ai essayé une variante de votre commande comme suit dans SQL * Plus (sans erreur):

copy from scott/tiger@db1 to scott/tiger@db2 create new_emp using select * from emp;

Après avoir exécuté l'instruction ci-dessus, j'ai également tronqué la table new_emp et exécuté cette commande:

copy from scott/tiger@db1 to scott/tiger@db2 insert new_emp using select * from emp;

Avec SQL Developer, vous pouvez procéder comme suit pour appliquer une approche similaire à la copie d’objets:

  1. Dans la barre d'outils, sélectionnez Outils> Copie de base de données.

  2. Identifiez les connexions source et de destination avec les options de copie souhaitées. enter image description here

  3. Pour le type d'objet, sélectionnez une ou plusieurs tables. enter image description here

  4. Spécifiez la ou les tables spécifiques (par exemple, table1). enter image description here

L'approche de la commande copy est ancienne et ses fonctionnalités ne sont pas mises à jour avec la publication de nouveaux types de données. Il existe un certain nombre d'approches plus courantes à cet égard, comme la pompe de données d'Oracle (même pour les tables).

44
Patrick Bacon