Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2007, 09h36   #1
Responsable WinDev
 
Avatar de Emmanuel Lecoester
 
Emmanuel Lecoester
Inscription : février 2003
Messages : 1 384
Détails du profil
Informations personnelles :
Nom : Emmanuel Lecoester
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2003
Messages : 1 384
Points : 2 407
Points : 2 407
Envoyer un message via MSN à Emmanuel Lecoester Envoyer un message via Skype™ à Emmanuel Lecoester
Par défaut dblink / session persistante

Bonjour,

Soit 2 bases A et B.
Un dblink existe entre A et B (A accès à B au travers du dblink).

Dans une transaction utilisateur sur la base A on doit aller chercher une info sur la base B. Si on passe par le dblink, on ouvre une session persistante sur la base B jq deconnexion de l'utilisateur.

Connaissez vous un moyen ORACLE pour éviter cet écueil de session persistante ?

Merci d'avance.
__________________
Emmanuel Lecoester
=> On recrute des rédacteurs WinDev
Emmanuel Lecoester est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2007, 10h21   #2
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
http://download.oracle.com/docs/cd/B....htm#sthref479
SQLNET.EXPIRE_TIME ?

le problème est quoi ? quand vous faites un select via un dblink, la connexion sur la base remote reste jusqu'à ce que la session sur la base locale se termine ?
en quoi est-ce gênant ?
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2007, 12h12   #3
Responsable WinDev
 
Avatar de Emmanuel Lecoester
 
Emmanuel Lecoester
Inscription : février 2003
Messages : 1 384
Détails du profil
Informations personnelles :
Nom : Emmanuel Lecoester
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2003
Messages : 1 384
Points : 2 407
Points : 2 407
Envoyer un message via MSN à Emmanuel Lecoester Envoyer un message via Skype™ à Emmanuel Lecoester
Citation:
Envoyé par LeoAnderson Voir le message
L'inconvénenient de cette technique c'est que c'est valable quelque soit la connexion (directe ou via dblink). Mais merci pour l'info.

Citation:
le problème est quoi ? quand vous faites un select via un dblink, la connexion sur la base remote reste jusqu'à ce que la session sur la base locale se termine ?
en quoi est-ce gênant ?
Ben oui c'est exactement çà. Quand tu as 500 utilisateurs qui ont une connexion persistante sur une autre base via dblink avec 100 curseurs oracle actifs celà fait un peut beaucoup pour un max_open_cursor. Sans compter que la base distante à ses propres connexions cela commence à faire beaucoup de connexions simultanées...
__________________
Emmanuel Lecoester
=> On recrute des rédacteurs WinDev
Emmanuel Lecoester est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2007, 12h19   #4
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
j'ai pas de quoi tester sous la main, mais ça me semble un fonctionnement anormal

quelles sont les versions ? (cible et source)
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2007, 12h28   #5
Responsable WinDev
 
Avatar de Emmanuel Lecoester
 
Emmanuel Lecoester
Inscription : février 2003
Messages : 1 384
Détails du profil
Informations personnelles :
Nom : Emmanuel Lecoester
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2003
Messages : 1 384
Points : 2 407
Points : 2 407
Envoyer un message via MSN à Emmanuel Lecoester Envoyer un message via Skype™ à Emmanuel Lecoester
Je t'assure que c'est un fonctionnement tout à fait normal.

Version 9i de chaque coté, bientot 10G.

Application forms => bouton qui déclenche une P/S sur la base distante.

La session sur la base distante reste active jq déconnexion de l'utilisateur ce qui est tout à fait normal. Le but est de réduire la bande passante réseau entre ces deux bases et l'activité autour des deux bases.
__________________
Emmanuel Lecoester
=> On recrute des rédacteurs WinDev
Emmanuel Lecoester est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2007, 21h15   #6
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
Citation:
Envoyé par elecoest Voir le message
Bonjour,

Soit 2 bases A et B.
Un dblink existe entre A et B (A accès à B au travers du dblink).

Dans une transaction utilisateur sur la base A on doit aller chercher une info sur la base B. Si on passe par le dblink, on ouvre une session persistante sur la base B jq deconnexion de l'utilisateur.

Connaissez vous un moyen ORACLE pour éviter cet écueil de session persistante ?

Merci d'avance.
Je suis en désaccord total avec la description de la session persistante comme étant un écueil. C'est même un mécanisme indispendable ...
En plus, il est possible de fermer cette session prématurément avec l'instruction suivante
Code :
1
2
ALTER SESSION CLOSE DATABASE LINK db_link_name
Michel SALAIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 09h07   #7
Responsable WinDev
 
Avatar de Emmanuel Lecoester
 
Emmanuel Lecoester
Inscription : février 2003
Messages : 1 384
Détails du profil
Informations personnelles :
Nom : Emmanuel Lecoester
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2003
Messages : 1 384
Points : 2 407
Points : 2 407
Envoyer un message via MSN à Emmanuel Lecoester Envoyer un message via Skype™ à Emmanuel Lecoester
Citation:
Envoyé par Michel SALAIS Voir le message
Je suis en désaccord total avec la description de la session persistante comme étant un écueil. C'est même un mécanisme indispendable ...
Là va falloir que tu rencontres mes DBA alors . J'ai jamais dit que c'était un "écueil", j'ai dit que c'était un "écueil" pour nous. Pour t'assurer de l'écueil pour nous : Tu prends 3 instances sur 3 machines différentes, tu créer les dblink et tu simules 10 sessions sur chaque instances qui font un accès via le dblink. Tu audites la mémoire de chaque machine et le réseau et tu multiples par 50 ton résultat.

Citation:
En plus, il est possible de fermer cette session prématurément avec l'instruction suivante
ALTER SESSION CLOSE DATABASE LINK db_link_name
Ca çà m'interesse par contre . Reste à voir les impacts avec le comiit implicite mais çà m'interesse grandement. Merci l'ami.
__________________
Emmanuel Lecoester
=> On recrute des rédacteurs WinDev
Emmanuel Lecoester est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 10h14   #8
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
Citation:
Envoyé par elecoest Voir le message
Là va falloir que tu rencontres mes DBA alors . J'ai jamais dit que c'était un "écueil", j'ai dit que c'était un "écueil" pour nous. Pour t'assurer de l'écueil pour nous : Tu prends 3 instances sur 3 machines différentes, tu créer les dblink et tu simules 10 sessions sur chaque instances qui font un accès via le dblink. Tu audites la mémoire de chaque machine et le réseau et tu multiples par 50 ton résultat.



Ca çà m'interesse par contre . Reste à voir les impacts avec le comiit implicite mais çà m'interesse grandement. Merci l'ami.
Quelle alternative aurions nous si ça ne fonctionnait pas comme ça?
As-tu pensé par exemple aux transactions? Comment faire des transactions sans session persistante?

En ce qui concerne la fermeture, elle nécessite de terminer explicitement la transaction avant de pouvoir lancer avec succès l'instruction alter session.
Michel SALAIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 12h21   #9
Responsable WinDev
 
Avatar de Emmanuel Lecoester
 
Emmanuel Lecoester
Inscription : février 2003
Messages : 1 384
Détails du profil
Informations personnelles :
Nom : Emmanuel Lecoester
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2003
Messages : 1 384
Points : 2 407
Points : 2 407
Envoyer un message via MSN à Emmanuel Lecoester Envoyer un message via Skype™ à Emmanuel Lecoester
Citation:
Envoyé par Michel SALAIS Voir le message
Quelle alternative aurions nous si ça ne fonctionnait pas comme ça?
As-tu pensé par exemple aux transactions? Comment faire des transactions sans session persistante?
J'ai du mal à te suivre. Ce sont des questions concernant l'avantage d'avoir une session persistante ? si oui, je te remercie de me les rappeler malgré le fait que je connaisse ces avantages. Maintenant tu as très bien résumé mon besoin : arreter la session persistante que je n'ai plus besoin de la connexion avec la base distante. Ton ALTER SESSION me convient pleinement.

Citation:
En ce qui concerne la fermeture, elle nécessite de terminer explicitement la transaction avant de pouvoir lancer avec succès l'instruction alter session.
Sans vouloir jouer sur les mots le alter session etant pour moi un ordre DDL il y aura commit implicite. Mais il va de soi que j'aurais gérer ma transaction de manière explicite.
__________________
Emmanuel Lecoester
=> On recrute des rédacteurs WinDev
Emmanuel Lecoester est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 13h19   #10
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
Citation:
Envoyé par elecoest Voir le message
J'ai du mal à te suivre. Ce sont des questions concernant l'avantage d'avoir une session persistante ? si oui, je te remercie de me les rappeler malgré le fait que je connaisse ces avantages. Maintenant tu as très bien résumé mon besoin : arreter la session persistante que je n'ai plus besoin de la connexion avec la base distante. Ton ALTER SESSION me convient pleinement.



Sans vouloir jouer sur les mots le alter session etant pour moi un ordre DDL il y aura commit implicite. Mais il va de soi que j'aurais gérer ma transaction de manière explicite.
Bonjour,

Ce que j'ai essayé de dire est que la gestion transactionnelle nécessite l'utilisation de session persistente et je ne vois point d'alternative à cette solution.


En ce qui conecrne l'instruction ALTER SESSION, ce n'est pas une instruction LDD (DDL) et donc il n'y a pas de commit implicite. Mais la fermeture du lien ne peut se faire que si la transaction est terminée même si elle ne fait que des instructions SELECT!

En fait, ALTER SESSION fait partie d'une catégorie d'instructions à part et constitue avec SET ROLE la catégorie des instructions de contrôle de session.

J'espère que j'ai réussi à être plus claire cette fois ...

Michel
Michel SALAIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 14h00   #11
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Je n’ai jamais utilisé, mais il y a aussi une notion de « share database link » que je pense qu’elle pouvait aider dans ce cas. http://download-west.oracle.com/docs...s.htm#i1007763
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 19h20   #12
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Citation:
Envoyé par Michel SALAIS Voir le message
Mais la fermeture du lien ne peut se faire que si la transaction est terminée même si elle ne fait que des instructions SELECT!

Michel
Est-ce qu'on peut parler de transaction si la session n'exécute que des SELECT (sans clause FOR UPDATE). ? A priori, je dirais non: si je fais un test avec un SELECT COUNT(*) sur un grande table qui dure quelque minutes;

Code :
SELECT * FROM v$transaction
ne retourne rien.

De plus Tom Kyte dit clairement:

Citation:
a select does not begin a transaction in read committed mode. a modification will. In serializable the "set" command marks the beginning of the transaction (IT would be the first statement).
Est-ce que le comportement est différent en mode distribué ?
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 19h47   #13
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Citation:
Envoyé par pifor Voir le message
Est-ce qu'on peut parler de transaction si la session n'exécute que des SELECT (sans clause FOR UPDATE). ? A priori, je dirais non: si je fais un test avec un SELECT COUNT(*) sur un grande table qui dure quelque minutes;
...
Est-ce que le comportement est différent en mode distribué ?
C'est peut être ça qui induit l'idée de transaction

Citation:
Oracle9i Database Administrator's Guide Release 2 (9.2)

The connections and sessions established to remote databases persist for the duration of the local user's session, unless the application or user explicitly terminates them. Note that when you issue a SELECT statement across a database link, a transaction lock is placed on the rollback segments. To re-release the segment, you must issue a COMMIT or ROLLBACK statement.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 20h04   #14
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462


Bien vu !
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h12.


 
 
 
 
Partenaires

Hébergement Web