Qu'est ce que vous risquez de casser dans votre base Oracle ?

Analyser l’impact d’une modification, à l’intérieur de votre base de données n’est pas compliqué grace à la table temporaire DEPTREE ! Rien à voir avec DEPT, bien sur ! Il s’agit de l’arbre des dépendances complet alors que ALL_DEPENDENCIES ne présente que la partie code.

Vous trouverez ci-dessous un exemple d’utilisation ; et voici un premier pointeur dans la documentation d’Oracle 11g.

1ere et seule difficulté

Il est très probable que la table temporaire DEPTREE n’existe pas dans votre base de données. Allez savoir pourquoi ça fait partie de ces utilitaires avec DBMS_SHARED_POOL et le script dbmspool.sql qui ne sont pas installés par défaut. Bonne nouvelle, si vous pouvez vous connectez à un des comptes SYSDBA de votre serveurs, ça va vite :

sqlplus "/ as sysdba"
@?/rdbms/admin/utldtree

Et les messages d’erreurs sur le fait que la table ou la procédure n’existe pas sont attendus.

Et d’ailleurs, c’est installé !

Première étape – Charger la table DEPTREE

La procédure deptree_fill est à cet effet. Pour l’utiliser, vous devez préciser :

  • le type de l’objet (par exemple ‘table’ ou ‘view’)
  • le schéma de l’objet
  • le nom de l’objet

Ça donne pour la table SCOTT.EMP :

exec deptree_fill('table', 'scott', 'emp')

Deuxième étape – Visualiser le résultat

Comme on s’en doutait, il suffit de faire un select sur la table DEPTREE comme ci-dessous :

col seq# format 999
col name format a20

select * from deptree
order by seq#;

NESTED_LEVEL TYPE SCHEMA NAME SEQ#
------------ ------------------- --------------- -------------------- ----
0 TABLE SCOTT EMP 0
1 PROCEDURE SCOTT TEST 1

Faut-il préciser que bien sur les appels via du SQL dynamique (EXECUTE IMMEDIATE ou DBMS_SQL) et le code de l’application ne sont pas affichés ? non ! En même temps si vous cherchez à savoir ce qui pourrait être invalidé par votre modification, c’est exactement ce qu’il faut !