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 :

[10g] gestion de l'activation des HINT


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 78
    Points
    78
    Par défaut [10g] gestion de l'activation des HINT
    Bonjour

    sous ORACLE 10g, comment fait on pour savoir la prise en compte des HINTS est activée ou non ??

    Merci

  2. #2
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    C'est à dire ?
    Si tu mets un HINT dans une requête, s'il n'y a pas d'erreur (de syntaxe), alors il y a de forte chance qu'il soit pris en compte. Aucun paramétrage particulier n'est à faire.

    Nicolas.

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par tchoimars
    Bonjour

    sous ORACLE 10g, comment fait on pour savoir la prise en compte des HINTS est activée ou non ??

    Merci
    Bonjour

    Les directives d'optimisation (hints) étant destinées à imposer un plan d'exécution particulier, la façon la plus évidente de vérifier leur prise en compte est d'afficher le plan d'exécution obtenu.

    Car ces directives n'étant pas autre chose que des commentaires (entre /* */ ), elles sont ignorées sans provoquer la moindre erreur si elles ne sont pas rigoureusement conformes à la syntaxe attendue.

    Exemples :
    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
     set autotrace on explain
    -- pas de directive
    select * from dual;
     
    -- inopérant : nom de table manquant
    select /*+ PARALLEL */ * from dual;
     
    -- correct
    select /*+ PARALLEL(dual) */ * from dual;
     
    -- inopérant: il faut utiliser le nom de l'alias
    select /*+ PARALLEL(dual) */ * from dual d;
     
    -- inopérant : n'est pas une directive reconnue
    select /*+ BIDON */ * from dual;
    Et les résultats :

    SQL> set autotrace on explain
    SQL> select * from dual;

    D
    -
    X


    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 272002086

    --------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    --------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
    | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
    --------------------------------------------------------------------------

    SQL> select /*+ PARALLEL */ * from dual;

    D
    -
    X


    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 272002086

    --------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    --------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
    | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
    --------------------------------------------------------------------------

    SQL> select /*+ PARALLEL(dual) */ * from dual;

    D
    -
    X


    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 1494853933

    ----------------------------------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
    ----------------------------------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 | | | |
    | 1 | PX COORDINATOR | | | | | | | | |
    | 2 | PX SEND QC (RANDOM)| :TQ10000 | 1 | 2 | 2 (0)| 00:00:01 | Q1,00 | P->S | QC
    | 3 | PX BLOCK ITERATOR | | 1 | 2 | 2 (0)| 00:00:01 | Q1,00 | PCWC | |
    | 4 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 | Q1,00 | PCWP | |
    ----------------------------------------------------------------------------------------------------

    SQL> select /*+ PARALLEL(dual) */ * from dual d;

    D
    -
    X


    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 272002086

    --------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    --------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
    | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
    --------------------------------------------------------------------------

    SQL> select /*+ BIDON */ * from dual;

    D
    -
    X


    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 272002086

    --------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    --------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
    | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
    --------------------------------------------------------------------------
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 78
    Points
    78
    Par défaut
    Ben disons en fait que j'ai forcé l'utilisation d'un index sur une requete et que le plan d'execution a quand meme fait un full access

    Alors comme on m'a dit qu'en 10g on pouvait désactiver l'utilisation des HINTS, je me demandais comment vérifier cela ... à moins qu'on m'ait raconté n'importe quoi

  5. #5
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Jamais entendu parler de possibilité de désactiver les HINTs au niveau global

    Par contre comme l'explique Pomalaix, les HINTs sont tres sensibles et il est tres facile de se tromper.

    Voici issue d'une doc Oracle quelques raisons pour que cela ne marche pas

    if you specify hints incorrectly, Oracle ignores them but does not return an error:

    * Oracle ignores hints if the Comment containing them does not follow a DELETE, SELECT, or UPDATE keyword.
    * Oracle ignores hints containing syntax errors, but considers other correctly specified hints within the same Comment.
    * Oracle ignores combinations of conflicting hints, but considers other hints within the same Comment.

    Oracle also ignores hints in all SQL statements in environments which use PL/SQL Version 1.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/12/2009, 21h08
  2. Réponses: 1
    Dernier message: 24/07/2007, 09h43
  3. Installation oracle 10g: gestion des acces disques
    Par dobinator dans le forum Oracle
    Réponses: 7
    Dernier message: 10/05/2007, 20h08
  4. [SWT] Afficher des hints
    Par FranT dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 09/02/2005, 23h21
  5. probleme de gestion de clients avec des sockets....
    Par ludvo dans le forum Réseau
    Réponses: 6
    Dernier message: 25/09/2003, 12h37

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