Comment vérifier si un lien de base de données est valide dans Oracle?
J'ai une base de données principale avec seulement les données de configuration au siège et plusieurs bases de données à différentes branches.J'ai créé un lien de base de données pour chaque branche serveur.
Dans certains cas, je voudrais interroger tous les liens valides (comme certains liens pourraient être invalide en raison de problèmes de connexion ou autre chose),donc ma question est Comment faire pour vérifier si le lien de base de données est valide, sans se mettre en attente de la Connexion des problèmes. Est-il une instruction SQL pour laisser l'oracle du serveur principal, le faire vérifier et de ne renvoyer que la validité de la base de données de liens?
OriginalL'auteur Khaled | 2010-10-03
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr que vous pouvez créer une requête pour vérifier vivre db liens.
Une chose que vous pourriez faire est de créer un tableau mis à jour par un processus d'arrière-plan avec la liste de db liens et pour chacun d'eux une "dernière fois vu en vie" timestamp
OriginalL'auteur vc 74
Vous pouvez vérifier db lien en exécutant:
De pouvez créer la fonction qui vérifie db lien:
Enfin, vous pouvez créer la table my_db_links(id, nom, statut(0,1)) et de le mettre à jour:
OriginalL'auteur Pawel Solarski
Tout lien pourrait avoir un problème en raison des différentes catégories de questions:
lien invalide définition: faux
nom d'utilisateur, mot de passe (si utilisé), service de
nom
à distance compte verrouillé
distance db configuration (par exemple, des sessions par utilisateur dépassé)
distance db d'hôte ou d'indisponibilité
Compte tenu de la nature changeante de ces modes de défaillance, il ne peut pas être un dictionnaire de vue (par exemple) qui décrit l'état de la liaison. Un processus asynchrone qui vérifie en arrière-plan est également une chance d'être out-of-date. Probablement le plus léger de poids de test que vous pouvez faire est de délivrer une "select sysdate from dual@remote_db" avant, vous devez utiliser le lien dans votre code
OriginalL'auteur dpbradley
Vous pouvez écrire un niveau de l'OS script qui effectue un tnsping, depuis db liens dépendent généralement de la tnsnames.ora de toute façon.
Pour Windows... tnsping <tnsname> ... vérifier l' %errorlevel% de la valeur immédiatement après la tnsping. Si c'est 0 == OK, 1 == ERREUR. Pour UNIX code de retour est de $? (niveau équivalent).
je vais essayer ça,merci
Le dblink pourrait avoir un mauvais mot de passe et tnsping ne sais pas.
OriginalL'auteur Stellios
Vous pouvez utiliser
WITH FUNCTION
et faire le chèque simple:Comme résultat, vous obtiendrez
OK
ou un message d'erreur.OriginalL'auteur Lukasz Szozda
Je ne sais pas si vous avez réussi à obtenir ce fait, mais je voulais faire quelque chose comme cela et vérifier les liens de base de données est actif. J'ai trouvé ceci sur un autre forum
qui affiche uniquement les actifs dblinks. Encore une fois, cela ne fonctionnera que si vous avez la permission d'accéder à
v$dblink
.OriginalL'auteur Sushant Nayak