[phpBB Debug] PHP Notice: in file /var/www/vhosts/programmez.com/httpdocs/include/autopromo.inc.php on line 43: main(include/connect.inc.php) [function.main]: failed to open stream: No such file or directory
[phpBB Debug] PHP Notice: in file /var/www/vhosts/programmez.com/httpdocs/include/autopromo.inc.php on line 43: main(include/connect.inc.php) [function.main]: failed to open stream: No such file or directory
[phpBB Debug] PHP Notice: in file /var/www/vhosts/programmez.com/httpdocs/include/autopromo.inc.php on line 43: main() [function.include]: Failed opening 'include/connect.inc.php' for inclusion (include_path='.')
[phpBB Debug] PHP Notice: in file /var/www/vhosts/programmez.com/httpdocs/include/autopromo.inc.php on line 44: mysql_query() [function.mysql-query]: Access denied for user 'apache'@'localhost' (using password: NO)
[phpBB Debug] PHP Notice: in file /var/www/vhosts/programmez.com/httpdocs/include/autopromo.inc.php on line 44: mysql_query() [function.mysql-query]: A link to the server could not be established
[phpBB Debug] PHP Notice: in file /var/www/vhosts/programmez.com/httpdocs/include/autopromo.inc.php on line 45: mysql_close(): no MySQL-Link resource supplied
[phpBB Debug] PHP Notice: in file /var/www/vhosts/programmez.com/httpdocs/include/autopromo.inc.php on line 46: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource


Recherche :

Base de donnée répartie sous oracle

Modérateurs: webmaster, fredericmazue

Base de donnée répartie sous oracle

Messagede cynthia » Mar Fév 02, 2010 5:39

Bonjour,
J'ai un petit problème de compréhension sur les bases de donnée répartie et j'espère que quelqu'un pourra m'enlever tout ce brouillard. Au départ j'ai 2 bases de donnée : S1 avec ip 192.168.200.1 et S2 avec ip 192.168.200.2 :
Je sais que le listener.ora connait les bases de donnée qui sont sur sa machine et que tnsnames.ora permet d'établir la liste des serveur accessible. Moi je veux lui dire à S1 par son tnsname qu'il peut aller voir sur s2:
S1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.1)(PORT = 1520))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = chop1)
)
)
et dans le listener de s2, est ce que je dois lui dire :
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.1)(PORT = 1520))
)
)
??
J'avoue être perdue et ne plus comprendre comment le listener va pouvoir se établir la connexion. J'ai tout faux ou est ce qu'il y a des choses que je n'ai pas compris ? merci
cynthia
Membre
Membre
 
Messages: 5
Inscription: Mar Juin 30, 2009 9:39

Re: Base de donnée répartie sous oracle

Messagede fredericmazue » Mer Fév 03, 2010 11:51

Je vais essayer de t'aider un petit peu, bien que tout ça soit très lointain dans mes souvenir.
Comme tu le dis très bien, le listener sait qu'il y a uyne base sur sa machine, donc normalement tu n'as pas besoin de mettre celle-ci dans le tnsnames.ora. Même si la mettre ne dois pas nuire je pense. Tu dois obligatoirement y mettre la deuxième par contre.

Je ne me souviens plus de directives DESCRIPTION_LIST.

J'ai plutôt souvenir de quelque chose comme ceci

Code: Tout sélectionner
(DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS =
           (Host = 192.168.1.2)   * adresse ip de la seconde machine
           (Port = 1521)


Attention! Autant que je me souvienne, le port utilisé par défaut par Oracle ets 1521, pas 1520 !

En espérant t'avoir aidé un petit peu
Frédéric Mazué
fmazue[at]programmez.com
frederic[at]solutions-logiciels.com
fredericmazue
Equipe Programmez!
Equipe Programmez!
 
Messages: 1926
Inscription: Sam Mar 25, 2006 12:42

Re: Base de donnée répartie sous oracle

Messagede cynthia » Mer Fév 03, 2010 3:02

merci pour la réponse mais cela reste toujours aussi obscure.
Oui effectivement le port par défaut sur oracle est 1521 mais on peut créer un nouveau listener qui écoute sur un autre port et c'est ce que je tentais de faire.
Si sur le site S2, j'ai une base de donnée site2 qui posséde les tables A et B avec un utilisateur user1. Je voulais que quand je suis sur S1 et que je fasse connect system/mdp@site2:1520 . Alors il va voir dans son tnsname.ora pour résoudre le nom du service site2 :
Code: Tout sélectionner
DESCRIPTION=(ADRESS=(PROTOCOL=TCP)(HOST=192.168.200.2)(PORT=1520)) (CONNECT_DATA = (SERVICE_NAME=site2))

qu'il parle sur ce port S2 à l'adresse donné par le tnsname et que par l'intermédiaire d'un listener, il y est établissement d'une connection. Mais je n'arrive plus à savoir ce que je dois mettre dans mon listener.ora pour que cela fonctionne.
J'ai vérifier que le ping sur la machine distante passé mais je n'ai jamais réussi à faire passer le tnsping par exemple donc j'ai un soucis soit dans listener.ora soit dans tnsname.
cynthia
Membre
Membre
 
Messages: 5
Inscription: Mar Juin 30, 2009 9:39

Re: Base de donnée répartie sous oracle

Messagede abel_a » Ven Fév 05, 2010 9:43

Bonjour,

Je ne suis pas sur de bien comprendre votre problématique, mais veuillez trouver quelques éléments de réponse:

Fonctionnement d’un Listener :
A chaque fois qu’un client distant (sqlplus, emagent, … ) effectue une connexion à une instance Oracle, un listener reçoit la demande initiale. Lorsque le lien entre le client et le listener a été effectué, ce dernier va sélectionner le bon « service handler». Le listener oracle écoute sur un port défini par l’administrateur (par défaut il s’agira du port 1521). Il est tout à fait possible de modifer ce numéro de port.

Dans la plupart des cas, on va donc démarrer un listener par machine (sauf configuration particulière). Dans votre cas, un listener pour le serveur S1 (gérant toutes les instances de S1), un second listener pour le serveur S2. Le premier va permettre d’établir les connexions des clients distants sur l’instance « baseS1 » démarrée sur le serveur S1. De la même manière, le second listener assurera les connexions sur l’instance « baseS2 » sur le serveur S2.

Echange et réplication de données :
Le listener ne permet donc pas d’échange de données entre deux bases de données. Cependant, les techniques d’échanges du type "database link" vont s’appuyer sur la configuration SQLNET (listener.ora, sqlnet.ora, tnsnames.ora,…). Pour rappel, un DB Link permettra d'atteindre des données se trouvant sur la baseS2 en étant connecté sur la base baseS1 ou inversement. Dans le cas d’un échange S1-> S2 via Db link par exemple. Il est primordial d’être capable de faire un « tnsping baseS2 » depuis la machine S1 et réciproquement.

En synthèse:
Si l'objectif consiste à se connecter à la base "BaseS2" depuis le serveur S1. Il est nécessaire d'indiquer via le fichier tnsnames.ora où se trouve la base "baseS2" sur le serveur S1.

Si l'objectif est d'executer des requêtes SQL sur des tables hébergées sur BaseS1 et BaseS2 en étant connecté sur la baseS1 par exemple, il faudra créer un DB Link ("create database link ....") sur la BaseS1. Il sera alors possible d'accèder aux tables de BaseS1 mais aussi aux tables de BaseS2.

Dans tous les cas, le plus simple consiste à declarer dans tous les fichiers tnsnames.ora (des serveurs S1, S2 et des éventuels clients impactés), toutes les bases. Il faudra ensuite vérifier les différentes combinaisons de connexions.

Cdt,
Abel
abel_a
Membre
Membre
 
Messages: 1
Inscription: Ven Fév 05, 2010 9:41


Retourner vers Bases de données

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

Programmez.com - - Tous droits réservés
Développement - WEB - ASP - PHP - C++ - Delphi - Java - Magazines - Ressources - Forum - Télécharger - Video - Emploi - Campus - .Net - Tutoriels

Le portail du décideur informatique en entreprise : Solutions & Logiciels