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?
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;
Copiez gpl_project/gpl_project@gpldatar
dans gpl_project/gpl_project@gplrdp
. Remplacez BGROUPMASTER
en utilisant select * from BGROUPMASTER
.