La recherche d'une chaine de caractère dans le corps des vues peut être utile par exemple pour déterminer toutes les vues qui utilisent un db_link.
Or, le corps de la vue étant codé en long, il est impossible de l'afficher avec un select. On passe donc par une conversion en LOB dans une table intermédiaire.
Exemple :
SQL> CREATE FORCE VIEW v_test AS SELECT * FROM all_users@dblink;
Warning: View created with compilation errors.
SQL> SELECT * FROM user_views WHERE text LIKE '%@%';
SELECT * FROM user_views WHERE text LIKE '%@%'
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
SQL> CREATE TABLE toto AS SELECT view_name, TO_LOB(text) AS text FROM user_views;
Table created.
SQL> SELECT * FROM toto WHERE text LIKE '%@%';
VIEW_NAME TEXT
------------------------------ -------------------------------
V_TEST SELECT * FROM all_users@dblink
On parvient ainsi à identifier une vue ayant un db_link dans sa définition.
Aucun commentaire:
Enregistrer un commentaire