IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

dblink / session persistante


Sujet :

SQL Oracle

  1. #1
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    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
    => joomla addict.

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    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 ?

  3. #3
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    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.

    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
    => joomla addict.

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    j'ai pas de quoi tester sous la main, mais ça me semble un fonctionnement anormal

    quelles sont les versions ? (cible et source)

  5. #5
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    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
    => joomla addict.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER SESSION CLOSE DATABASE LINK db_link_name
    Consultant et formateur Oracle

  7. #7
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    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.

    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
    => joomla addict.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    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.
    Consultant et formateur Oracle

  9. #9
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    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.

    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
    => joomla addict.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Points : 436
    Points
    436
    Par défaut
    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
    Consultant et formateur Oracle

  11. #11
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    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

  12. #12
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from v$transaction
    ne retourne rien.

    De plus Tom Kyte dit clairement:

    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é ?

  13. #13
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    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

    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.

  14. #14
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut


    Bien vu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. IOException" lors du chargement des sessions persistantes?
    Par info007 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 12/11/2008, 10h02
  2. gestion des sessions persistantes
    Par jacques mayol dans le forum JOnAS
    Réponses: 3
    Dernier message: 18/04/2008, 08h22
  3. VNC avec session persistante sous FEDORA
    Par arnaudperfect dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 26/03/2008, 10h51
  4. Tomcat 6 session persistante - Exception
    Par MooGle dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/05/2007, 23h16
  5. [Tomcat 5.5] Sessions persistantes / non sérialisables
    Par Gildas Huart dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 24/05/2007, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo