Load balancing - Comment savoir sur quelle "machine" ou "instance" on est connecté ?
Bonjour à tous,
-le contexte:
ma société développe et installe des applications avec des bases de données ORACLE (8i ou 10g).
Quelques-fois la base de données est "installée" sur 2 machines avec un LOAD-BALANCING.
Ainsi le tnsmames.ora client est du type:
Code:
1 2 3 4 5 6 7 8 9 10
| MADB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = machine01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = machine02)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = LaBD.Clientdb.CLIENT)
)
) |
-la problématique:
Quelquefois une des 2 machines tombe en panne, ou bien un conflit d'adresse IP entraine le fait que la connexion ORACLE ne marche plus - listener KO-, et personne ne s'en apercoit... jusqu'à ce qu'un problème intervienne sur la 2ème machine, et là c'est la catastrophe puisqu'aucune des 2 instances de la BD ne répond plus...
-la solution envisagée, mais comment faire ?
la solution envisagée, c'est, après s'être connecté à la base de données (pour info: soit sous WINDEV, soit sous SQLPLUS), de tester si toutes les autres instances (auxquelles on aurait pu éventuellement se connecter si le load-balancing en avait décidé autrement, et qui doivent être opérationnelles !) sont OK...
-les résultats de mes recherches:
sont bien maigres...
j'ai trouvé la table DBA_RESOURCE_INCARNATIONS qui me semble intéressante
ainsi je pourrais peut-être pour chaque ligne de DBA_RESOURCE_INCARNATIONS tester la commande connect user/pwd@//HostNameDeDBA_RESOURCE_INCARNATIONS/ServiceNameRenvoyeParLaCommandeGlobalName
Bon j'avoue que je galère pas mal...
Merci d'avance de votre aide.
Patrick.
LOAD-BALANCING - comment vérifier que toutes les instances sont OK ?
-préambule:
le titre de mon topic ne devrait pas être "LOAD-BALANCING - comment savoir sur quelle "machine" ou "instance" on est connecté ?" mais plutot "LOAD-BALANCING - comment vérifier que toutes les instances sont OK ?"
-en réponse à OraFrance:
oui v$instance m'est utile.
Code:
1 2 3 4 5
|
select instance_name,host_name from v$instance;
INSTANCE_NAME HOST_NAME
---------------- ---------------------------------------------------------
Ladb2 Machine2 |
-de plus j'ai l'impression que DBA_RESOURCE_INCARNATIONS peut être la solution à mon pb:
Code:
1 2 3 4 5 6 7
|
SQL> select * from DBA_RESOURCE_INCARNATIONS;
RESOURCE_TYPE RESOURCE_NAME DB_UNIQUE_NAME DB_DOMAIN INSTANCE_NAME HOST_NAME STARTUP_TIME
------------------------------ ------------------ -----
INSTANCE Ladb1 Ladb Ladb.XXXX Ladb1 Machine1 05-AUG-08 02.46.14.000000000 PM +02:00
INSTANCE Ladb2 Ladb Ladb.XXXX Ladb2 Machine2 14-AUG-08 01.30.45.000000000 PM +02:00 |
-Ainsi j'ai l'impression qu'il me "suffit", une fois connecté à la BD, de chercher dans DBA_RESOURCE_INCARNATIONS quelles sont les autres connexions par lesquelles j'aurais pu me connecter, et de les "tester"...
Mais je me mélange un peu les pinceaux entre les noms d'instances, de services. Et puis je ne sais pas DU TOUT de ce que veut dire DBA_RESOURCE_INCARNATIONS et je ne suis donc pas certain que son contenu est ce que je cherche.
De plus, comment "tester" une connexion à une instance quand on est connecté sur une BD ?
J'espère avoir été + clair dans la présentation de mon objectif et de mes tests.
Merci d'avance pour toute aide ou petit renseignement.
Amicalement. Patrick.