X$ utilisées par les vues V$

Préférez-vous contruire des requêtes sur les tables X$ plutôt que sur les vues V$ ? Voila pourquoi vous faites ça :

  • « kgcl » est beaucoup plus facile à retenir que « file_name » ; après tout, il y a 5 lettres de moins !
  • Les vues V$ ne sont pas performantes. Oracle ne vous fournit ces vues que pour que vous ne consommiez toujours plus de CPU et ainsi gagner beaucoup plus d’argent. D’ailleurs Oracle est obligé de résoudre toutes les vues pour résoudre vos requêtes.
  • C’est quand même cool de pouvoir réviser ses requêtes à chaque patch. En effet, la condition « where kgcl in (‘zX’,’Fs’,’Ba’) » de votre requête n’envisage pas le fix de 5823456 que vous devez appliquer.
  • Vous cherchez à m’embrouiller…

Voilà plusieurs bonnes nouvelles : (1) pas besoin d’utiliser X$ pour m’embrouiller ; (2) Ces vues peuvent être mise à contribution pour révéler des informations passionnantes. Regardez ce que Luca Canali à propos d’ASM ou Alex Gorbachev à propos du BCTF en font ; (3) Si vous descendez jusqu’à la cause première de nombreux bugs, vous arrivez à une table X$.

Alors si vous ne connaissez pas les requêtes associées aux vues V$, je vous propose d’exécuter le script SQL ci-dessous :

set pages 1000

accept v_view default 'V$SESSION' prompt "Enter the V$ View [V$SESSION] : "

select VIEW_DEFINITION
from V$FIXED_VIEW_DEFINITION
where VIEW_NAME=upper('G&v_view');

Remarquez qu’il faut en fait interroger le contenu des vues « GV$ » et pas « V$ » pour connaitre les tables X$ associées. Une preuve de plus que RAC est partout.

Au fait, si vous n’utilisez pas les tables X$, tous les jours, continuez !

1 réflexion sur “X$ utilisées par les vues V$”

  1. Les X$ permettent des requêtes plus fines que le V$,GV$,O$ & GO$
    liste des x$ et de leurs colonnes:
    select t.kqftanam , c.kqfconam
    from x$kqfco c, x$kqfta t where t.indx = c.kqfcotab
    order by t.kqftanam , c.kqfcoidx
    /

    Attention aux columns dupliquées!
    select t.kqftanam , c.kqfconam
    from x$kqfco c, x$kqfta t where t.indx = c.kqfcotab
    group by t.kqftanam , c.kqfconam having count(1)> 1

    KQFTANAM KQFCONAM
    X$KQRFP KGRFPTN2
    X$KMGSCT LASTTIME

    Example ou cela est utile:
    La liste de TOUS les paramêtres ( y compris les paramêtres cachés qui ont leur valeur par défaut) . En se basant sur la requête de la vue de base pour GV$PARAMETER et en retirant la partie qui empêche de voire les paramêtres cachés.  » and ((translate(ksppinm,’_’,’#’) not like ‘##%’) and ((translate(ksppinm,’_’,’#’) not like ‘#%’) or (ksppstdf = ‘FALSE’) or (bitand(ksppstvf,5) > 0))) »

    Pour toutes les versions:
    Vérifiez si la vue gv_$parameter existe d’abord.
    descr gv_$parameter
    sinon
    create view gv_$parameter as select * from gv$parameter ;

    select ‘create or replace mygv$parameter (‘
    from dual
    union all
    select decode ( column_id , 1 , ‘ ‘ , ‘,’ ) || column_name
    from user_tab_columns where table_name = ‘GV_$PARAMETER’
    union all
    select ‘)’ || substr(view_definition, 1 , instr ( upper ( view_definition ) , ‘ AND ‘ ) ) view_definition
    from v$fixed_view_definition
    where view_name = ‘GV$PARAMETER’
    /

Les commentaires sont fermés.