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 :

Requêtes étranges : OpiQuery et autres


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Par défaut Requêtes étranges : OpiQuery et autres
    Bonjour !

    Je maintiens une appli java qui tournait sur TOmcat 4 avec Oracle 8i.
    Suite au passage de la BD en Oracle 9i, Tomcat 4 tombe en java out of memory error...
    Nous avons donc migré en Tomcat 5 (est-ce judicieux?) et mené un audit transactionnel.
    Je remarque dans les résultats que toutes mes requêtes SQL métier sont entourées de requêtes SQL intempestives telles que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Oracle: Execute OpiQuery=OOPEN 
    Oracle: Prepare&Execute SqlQuery=requete métier'
    Oracle: Execute OpiQuery=ODNY
    Oracle: Execute OpiQuery=OALL7 Fetch RowRequested=10
    Oracle: Execute OpiQuery=OALL7 Fetch RowRequested=10
    Oracle: Execute OpiQuery=OCANCEL
    Oracle: Execute OpiQuery=OCLOSE
    Oracle: Execute OpiQuery=OROLL
    Oracle: Execute OpiQuery=OCOMON
    ou alors ce genre de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Oracle: Prepare&Execute SqlQuery='ALTER SESSION SET isolation_level = READ committed'
    Oracle: Execute OpiQuery=OOPEN
    Oracle: Prepare&Execute SqlQuery='ALTER SESSION SET isolation_level = READ committed'
    Oracle: Execute OpiQuery=OCLOSE
    Oracle: Prepare&Execute SqlQuery='SET TRANSACTION READ write'
    Oracle: Execute OpiQuery=OOPEN
    Oracle: Prepare&Execute SqlQuery='SET TRANSACTION READ write'
    Oracle: Execute OpiQuery=OCLOSE
    Qu'est-ce qu'une OpiQuery ?....

    Voici comment sont appelées mes requêtes dans mon code Java :

    - POUR UN SELECT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
     
    String sql = "select  ... from ... where ..."; 
    try{
         conn = ds.getConnection();
         stmt = conn.createStatement ();
     
         rs = stmt.executeQuery(sql);
            if ( rs.next() ) {
                return true;
            }
     
            return false;
         }
    }
    ...
    - POUR UN UPDATE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
     
    String sql = "update ... set ... where ..."; 
    try{
         conn = ds.getConnection();
         stmt = conn.createStatement ();
     
         int rowsAffected = 0;
         rowsAffected = stmt.executeUpdate (sql);
    }
    ...

    Est-ce que qqun peut m'aider ?
    D'avance merci

  2. #2
    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
    Par défaut
    Les fonctions O<quelque chose> sont probablement des fonctions OCI (Oracle Call Interface = interface C utilisée par tous les clients Oracle directement ou indirectement) appelées par JDBC: cela doit être normal.

    Les commandes:
    'ALTER SESSION SET isolation_level = READ committed'
    'SET TRANSACTION READ write'
    me semblent inutiles car ce sont les options par défaut d'une transaction Oracle.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Par défaut
    Merci Pifor,

    Les commandes:


    'ALTER SESSION SET isolation_level = READ committed'
    'SET TRANSACTION READ write'

    me semblent inutiles car ce sont les options par défaut d'une transaction Oracle.
    Je suis d'accord avec toi, mais ces ordres SQL sont lancés sans que je le demande explicitement.. Est-ce que cela peut provenir du paramétrage de la base de données ?

    Merci

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    non, c'est Tomcat qui fait ça. Faut pas s'inquiéter

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Par défaut
    OK mais cela apparait énormément de fois dans mon audit...
    Ces requetes prennent entre 36 et 54% du temps total d'éxécution des requêtes, c'est normal ?....

  6. #6
    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
    Par défaut
    Non, ce n'est pas normal. Comment obtenez-vous ces chiffres ? Avec quel outil ? Combien de fois sont executées ces requêtes ?
    Avez-vous essayé la trace SQL et TKPROF ?

Discussions similaires

  1. Lire une requête existante dans une autre base
    Par nicolas2603 dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/02/2008, 17h38
  2. Distribuer les requêtes SQL vers d'autres serveurs BD
    Par mega_info dans le forum Requêtes
    Réponses: 3
    Dernier message: 11/10/2007, 16h51
  3. Requêtes étranges : OpiQuery et autres
    Par babylone7 dans le forum Oracle
    Réponses: 14
    Dernier message: 17/08/2007, 14h01
  4. [Requête + VBA] INSERT INTO autre base
    Par Zartak dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/05/2007, 14h29
  5. [MySQL] Une requête fonctionne et l'autre pas vraiment...
    Par gazouza dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/03/2006, 10h49

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