Oracle Database/Quelques requêtes utiles/Dictionnaire de données

Un livre de Wikilivres.

Le dictionnaire de données Oracle est un ensemble de tables système, qui contiennent les informations de fonctionnement de la base de données comme :

  • Les utilisateurs
  • Les tables
  • Les contraintes d'intégrité
  • etc.

Ces informations sur les informations sont appelées méta données.

Les informations du dictionnaire de données sont consultables par l'administrateur SYSTEM. De nombreuses vues permettent d'accéder à des contenus spécifiques (comme ceux énumérés précédemment)[1][2].

Afficher toutes les vues du dictionnaire[modifier | modifier le wikicode]

La requête suivante, adaptable en commentant/décommentant les éléments souhaités, permet de lister divers éléments du dictionnaire

SELECT  *

FROM  dict

WHERE table_name LIKE 
'%USER_%' --vues user
--'%DBA_%'    -- 7 vues dba
--'C%'  -- 10 vues débutent par la lettre C
--'G%'  -- 492 vues débutent par la lettre G
--'V%'  -- 618 vues débutent par la lettre V
--'V%' and comments not like 'Syno%'  -- Toutes les vues en V sont des Synonymes
--1830 vues en tout

ORDER BY TABLE_NAME

Afficher quelques vues dynamiques utiles au DBA[modifier | modifier le wikicode]

La requête suivante, adaptable en commentant/décommentant les éléments souhaités, permet d'obtenir quelques informations et statistiques

-- Vues dynamiques utiles au DBA

SELECT  *

FROM
-- V$VERSION      -- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
--V$DATABASE      -- DBID                   NAME      CREATED                   RESETLOGS_CHANG etc...
--V$SESSION       -- 30 sessions ouvertes, multiples informations comme la machine etc...
--V$LOCK          -- Infos sur les verrous
--V$SGA             -- Fixed Size           2230768, Variable Size        1275069968, Database Buffers     1912602624, Redo Buffers         16932864
--V$SQL           -- non accessible
V$SYSSTAT       -- 628 statistiques

Afficher toutes les tables dynamiques[modifier | modifier le wikicode]

Les tables dynamiques correspondent à des zones de la mémoire SGA lorsqu'Oracle est en activité (elles disparaissent à l'arrêt de la base)

-- Les tables dynamiques correspondent à des zones de la mémoire SGA lorsqu'Oracle est en activité (elles disparaissent à l'arrêt de la base)
-- La vue v$fixed_table permet d'avoir toutes les tables et les vues PUREMENT dynamiques
--
-- DROITS REQUIS: SYS

SELECT  *

FROM  v$fixed_table

WHERE type='TABLE';

Travailler sur les méta-informations des tables[modifier | modifier le wikicode]

Le dictionnaire de données permet de collecter des informations par introspectif.

Classer les tables par nombre croissant de lignes[modifier | modifier le wikicode]

-- Classement des tables de la moins chargée en ligne à celle comptant le plus d'enregistrements

SELECT
table_name, num_rows

FROM  user_tables

ORDER BY num_rows

Classer les tables par nombre croissant de colonnes[modifier | modifier le wikicode]

-- Classement des tables par nombre croissant de colonnes

SELECT
table_name,
count(*) as Nb_Cols

FROM  user_tab_columns

WHERE
--table_name = 'POOL'
--table_name like 'FOOTBALL_CLUB_%'

GROUP BY table_name

ORDER BY Nb_Cols

Lister les colonnes d'une table[modifier | modifier le wikicode]

-- Liste des colonnes de la table

SELECT
column_name
--count(column_name)


FROM  user_tab_columns

WHERE
table_name = 'MATCH'
--'REFEREE'
--'PLAYER'

--table_name like 'POOL%'
--table_name like 'FOOTBALL_CLUB_%'
--GROUP BY table_name
  1. http://www.commentcamarche.net/contents/700-oracle-le-dictionnaire-de-donnees
  2. http://didier.deleglise.free.fr/dba/dictionnaire/dict_main.htm