Débutant oracle

Fermé
tux_oracle Messages postés 7 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 22 mars 2009 - 26 janv. 2009 à 02:08
tux_oracle Messages postés 7 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 22 mars 2009 - 27 janv. 2009 à 14:36
Bonjour,
je suis nouveau et je voudrais savoir comment partager mes bases de données avec une architecture client/Serveur (Windows XP/Mandriva 2008)
sous oracle 10g , l'un (linux) tourne avec 10g XE et l'autre (Xp) avec 10g client
merci

5 réponses

Voila, utilise le client pour te connecter au serveur. C'est ça.
2
dmganges Messages postés 150 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 25 novembre 2013 19
26 janv. 2009 à 18:38
Bjr,
Je me suis arrêté à la 9i et j'ai commencé avec la 5, autant dire que je ne suis pas tout jeune.

Je ne comprends pas ce que tu entends par partager la base de données entre le serveur et le client.

Si tu as une base sur Linux et une autre sur XP, les DEUX font office de serveur et les DEUX PEUVENT faire office de client.

Les process DBWR, PMON, SMON, RECO... sont (pour faire court) le serveur.
Si tu as une instance sur Linux et une instance sur XP tu as là DEUX serveurs.

Si tu as installé uniquement la partie cliente d'Oracle sur XP, et que TOUTES les données sont sur Linux, là tu as une architecture classique client/serveur.

Le client fournissant un environnement permettant à des outils aussi différents que SQL*PLUS, PRO*C, PHP, TOAD... d'accéder aux données qui sont sur le serveur.

Pour accéder à un serveur Oracle un client à besoin :
- de l'adresse IP du serveur ou du nom de la machine
- du SID de la base

et bien sûr :
- d'un compte sur la base et de son mot de passe.

Côté serveur il te faut configurer le listener, en 9i cela se faisait en lançant la commande netca
Moi qui ai toujours été un réfractaire des interfaces graphiques, je modifiais le fichier /etc/listener.ora à la mimine...
Pour la première fois, passe par l'interface graphique, ça permet de comprendre...
En fait le fichier listener.ora indique à Oracle sur quels ports TCP il va écouter les demandes des clients.
Voici un vieil exemple :

# cat listener.ora
LISTENER=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=IPC)
(KEY=prod)
)
(ADDRESS=
(PROTOCOL=IPC)
(KEY=prod.world)
)
(ADDRESS=
(PROTOCOL=IPC)
(KEY=info)
)
(ADDRESS=
(PROTOCOL=IPC)
(KEY=info.world)
)
(ADDRESS=
(PROTOCOL=TCP)
(HOST=anaconda)
(PORT=1521)
)
)

STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10
TRACE_LEVEL_LISTENER=ADMIN
TRACE_DIRECTORY_LISTENER=/ORACLE/product/7.3/network/trace
TRACE_FILE_LISTENER=listener.trc
LOG_DIRECTORY_LISTENER=/ORACLE/product/7.3/network/log
LOG_FILE_LISTENER=listener.log

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=prod)
(ORACLE_HOME=/ORACLE/product/7.3)
)
(SID_DESC=
(SID_NAME=info)
(ORACLE_HOME=/ORACLE/product/7.3)
)
)
PASSWORD_LISTENER = (99AA639E2C5F7DA9)


Ci-dessus le serveur Unix s'appelle anaconda
Il y a sur ce serveur 2 instances de base qui tournent prod et info


Coté client tu vas trouver essentiellement :
- un fichier hosts qui donne la correspondance adresse IP / nom de machine
- un fichier tnsnames.ora qui va contenir les infos permettant de se connecter à la base.

La plupart des outils clients n'utilisent que le fichier tnsnames.ora qui a cette forme (là aussi c'est un très vieux) :

# cat tnsnames.ora
anaconda_prod.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 128.96.146.101)
(Port = 1521)
)
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 128.96.146.101)
(Port = 1526)
)
)
(CONNECT_DATA = (SID = prod)
)
)
anaconda_info.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 128.96.146.101)
(Port = 1521)
)
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 128.96.146.101)
(Port = 1526)
)
)
(CONNECT_DATA = (SID = info)
)
)

Dans un client comme TOAD, il suffit d'indiquer le tnsname de la base à accéder, ici soit anaconda_prod.world, soit anaconda_prod.world.

Voici à partir d'un outil client, PHP qui se trouve sur XP, quelques fonctions :
- une pour se connecter à la base
- une pour ouvrir la base
- une pour préparer une requête
- une pour exécuter une requête :

# cat Ora.php
<?php
/* Fonction ORA
**
** Fonction --LogonOra-- Logon � Oracle par ORA
*/

if (!isset($SemLogonOra)) {
$SemLogonOra = 1;
function LogonOra($Base, $Passwd) {
if (!$Log = ora_logon($Base, $Passwd)) {
echo "<B>Logon � la base $Base impossible.</B><BR>";
echo ora_error();
exit;
}
return $Log;
}
}

/*
** Fonction --OpenOra-- Open � Oracle par ORA
*/

if (!isset($SemOpenOra)) {
$SemOpenOra = 1;
function OpenOra($Log) {
if (!$Ope = ora_open($Log)) {
echo "<B>Open du curseur $Curse sur la base $Base impossible.</B><BR>";
echo ora_error();
exit;
}
return $Ope;
}
}

/*
** Fonction --ParseOra-- Parse une requ�te Oracle par ORA
*/
if (!isset($SemParseOra)) {
$SemParseOra = 1;
function ParseOra($Ope, $Query) {
if (@!$Par = ora_parse($Ope, $Query)) {
echo "<B>Parse de la requ�te '$Query' impossible\n";
echo ora_error();
exit;
}
return $Par;
}
}

/*
** Fonction --ExecOra-- Ex�cute une requ�te Oracle par ORA
*/
if (!isset($SemExecOra)) {
$SemExecOra = 1;
function ExecOra($Par) {
if (@!$Exe = ora_exec ($Par)) {
echo "<B>Ex�cution de la requ�te '$Query' impossible\n";
echo ora_error();
exit;
}
return $Exe;
}
}

/*
** Fin des fonctions ORA
*/
?>

En gros tu dois configurer un fichier listener.ora sur tous tes serveurs et un fichier tnsnames.ora sur tous tes clients.

Si tu as une instance sur Linux et une sur XP autrement dit si tu as des données des DEUX côtés, il te faut les 2 fichiers sur les DEUX machines, chacune étant à la fois serveur et cliente de l'autre.

NB, généralement on installe le client Oracle également sur le serveur, cela permet, entre autre, d'accéder aux données de la base en passant par le listener (c-à-d en passant par la couche réseau (TCP/IP) sans sortir de la machine).

Bon je ne pourrais guère t'aider d'avantage, je n'ai plus de base Oracle sous la main.
Tu vas voir le couple Unix/Oracle est d'une puissance époustouflante !

Bon courage !
1
salut merci de m'avoir répondu "Albuferque" mais le truc c'est que je c'est pas comme partager la base de donnée entre serveur et le client sur oracle 10g
0
$ /etc/init.d/oracle-xe configure

$ /etc/init.d/oracle-xe start

$ /etc/init.d/oracle-xe stop

Apres affiche la page(Dans le serveur):
http://127.0.0.1:8080/apex/

Crée tes clients (utilisateurs) via explorateur.

Apres dans le client windows via ligne de commande(cmd):

sqlplus nom_utilisateur@la_addresse_du_serveur (par exemple: favicon_oracle@192.168.75.100)

Enter password: password_de_utilisateur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tux_oracle Messages postés 7 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 22 mars 2009
27 janv. 2009 à 14:36
merci bcp (y)
0