Oracle: ORA-12170: TNS: Connect timeout

Oracle: ORA-12170: TNS: Connect timeout - SQL/NoSQL - Programmation

Marsh Posté le 10-05-2011 à 13:25:28    

Bonjour,
 
Actuellement en train de mettre en place un système de calcul de statistiques sur une large sélection de bases de données, je sollicite votre aide.
Tout d'abord, je vous explique le contexte: Je possède 3 fichiers.cmd (que j'appellerais 1.cmd, 2.cmd, 3.cmd) et 1 fichier.SQL.
 
==> 1.cmd fait juste un call de 2.cmd
==> 2.cmd fait quand à lui un call de 3.cmd mais pour chacune de mes bases avec leurs identifiants (%1 et %2) ==> call 3.cmd %1 %2 nomdemabase
J'obtiens donc un certain nombre de lignes correspondants à chaque base de données.
 
==>3.cmd lance mon fichier sql: sqlplus %1 %2 blabla.sql %3 qui lui même lance une procédure stockée calculant les statistiques.
 
Jusque la, tous va bien, tous ce système est lancé tous les jours et fonctionnais jusqu'à ce jour, jour ou une des bases a été arrêtée.
Ainsi, au lancement du système, celui-ci s'est bloqué au 2.cmd au moment du call de la base arrêtée. Puisque la base ne fonctionnais pas, 3.cmd n'a pas pu s'y connecter avec SQLPLUS et est resté bloqué sur la demande d'un autre identifiant, ainsi les statistiques sur les bases restantes n'ont pas été calculées.  
 
Je chercherais donc un moyen lorsqu'une erreur de ce type arrive à cause d'une base arrêtée, que le système passe à la base suivante et donc ne reste pas bloqué, et pourquoi pas au passage que ça m'enregistre le nom de la base arrêtée dans une table que j'aurais crée préalablement.
 
Voila, j'espère avoir été clair, et que vous puissiez m'aider  :).
 
Bonne journée!
 

Reply

Marsh Posté le 10-05-2011 à 13:25:28   

Reply

Marsh Posté le 11-05-2011 à 00:21:46    

:D  
 
C'est windows ?
je connais pas SQLPlus.
 
sqlplus %1 %2 blabla.sql %3
(ca doit etre : sqlplus base1 base2 blabla.sql sproc )
 
 
// tu peut avoir le resultat par ret code de sql
// ou grep/find sur le message d'erreur
verification phase (en cas il n ya pas de timeout par sqlplus)
sqlplus some_verifaction_proc base1
sqlplus some_verifaction_proc base2
 
si base1 available :
sqlplus base1 blabla.sql sproc
else
 log error
 
si base2 available :
sqlplus base2 blabla.sql sproc
else
 log error
 
 
 
 
 
 
 
 
 

Reply

Marsh Posté le 11-05-2011 à 00:34:31    

Plusieurs manières de le faire :
- ne pas utiliser SQLPlus, et encapsuler tes commandes PL/SQL dans un langage qui te permettra d'avoir le contrôle, comme Perl ou VBS
- utiliser un ordonnanceur qui te permettra de mieux contrôler l'enchaînement de tes jobs
 
Pour ce qui est de l'ordonnanceur, à mon boulot on en utilise un payant mais qui permet de faire pas mal de contrôles
Sinon tu peux très bien utiliser l'ordonnanceur interne d'Oracle, de mémoire c'est dans le package dbms_jobs


Message édité par couak le 11-05-2011 à 00:34:58
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed