2010-08-12 5 views
2

J'ai été invité à documenter une base de données Oracle. Je n'ai pas besoin de diagrammes EER ou de quoi que ce soit de fantaisiste: un simple document imprimable avec une description des tables et des colonnes fera l'affaire. Cependant, je préfèrerais ne pas taper les noms des colonnes pour toutes les 79 tables. Existe-t-il un outil pour extraire cette information du serveur de base de données, éventuellement avec quelques informations de base comme les types de données et les commentaires?Document Base de données Oracle

Table: Foo 
Comment: Definition of system foo 
Columns: 
    Name  | Data type | Default value | Allow NULL | Key   | Comment 
    ----------------------------------------------------------------------------------------- 
    FOO_ID  | NUMBER(*,0) | -    | NOT NULL | Primary Key | Value from FOO_SEQ 
    DATE_ADDED | DATE   | SYSDATE  | NOT NULL | -   | - 
    FOO_NAME | VARCHAR2(50) | -    | NOT NULL | Unique  | Foo identifier 

Je suis sous Windows XP et le serveur est 11g.

Aftermath

Je ne pouvais pas trouver un indice approprié de vue dans la documentation Oracle en ligne donc je finalement attrapé la version PDF et cherchai à travers elle jusqu'à ce que je suis arrivé ces requêtes:

/* 
* Tables and views 
*/ 
SELECT UO.OBJECT_NAME, UO.OBJECT_TYPE, UO.TEMPORARY, TC.COMMENTS 
FROM USER_OBJECTS UO 
LEFT JOIN USER_TAB_COMMENTS TC ON UO.OBJECT_NAME=TC.TABLE_NAME 
WHERE UO.OBJECT_TYPE IN ('TABLE', 'VIEW') 
ORDER BY UO.CREATED, UO.OBJECT_ID 

/* 
* Columns 
*/ 
SELECT TC.TABLE_NAME, TC.COLUMN_NAME, 
    TC.DATA_TYPE, TC.DATA_LENGTH, TC.DATA_PRECISION, TC.DATA_SCALE, TC.CHAR_USED, 
    TC.DATA_DEFAULT, TC.NULLABLE, CC.COMMENTS 
FROM USER_TAB_COLUMNS TC 
LEFT JOIN USER_COL_COMMENTS CC ON TC.TABLE_NAME=CC.TABLE_NAME AND TC.COLUMN_NAME=CC.COLUMN_NAME 
ORDER BY TC.TABLE_NAME, TC.COLUMN_ID 

/* 
* Restrictions 
*/ 
SELECT UC.TABLE_NAME, UC.CONSTRAINT_NAME, UC.CONSTRAINT_TYPE, /*UC.SEARCH_CONDITION, UC.R_CONSTRAINT_NAME, UC.DELETE_RULE,*/ 
    CC.COLUMN_NAME, CC.POSITION 
FROM USER_CONSTRAINTS UC 
LEFT JOIN USER_CONS_COLUMNS CC ON UC.CONSTRAINT_NAME=CC.CONSTRAINT_NAME 
ORDER BY UC.TABLE_NAME, UC.CONSTRAINT_TYPE, UC.CONSTRAINT_NAME, CC.POSITION 

tables Être ordre chronologique (l'ordre dans lequel l'installateur les a créés) me permet de les documenter dans un ordre logique (I a écrit l'installateur après tout).

+0

voir aussi: http://stackoverflow.com/questions/711575/oracle-documentation-generation-tool –

+0

@bunting, SQL Developer génère de la documentation sur presque tout (index, vues, jobs ...) à l'exception des tables; au moins dans mon ordinateur. –

+0

A travaillé pour moi. Faites un clic droit sur la connexion et choisissez Generate DB Doc –

Répondre

1

Les métadonnées peuvent être extraites de ALL_TABLES et de ALL_TAB_COLUMNS. TOAD offre la possibilité d'extraire des rapports comme ci-dessus, mais je le ferais probablement en langage SQL si c'est un cas unique.

+0

Si je ne trouve rien d'autre, je peux probablement écrire un script rapide avec info de ces vues ou d'autres. –

Questions connexes