El objeto de metadatos donde encontramos las dependencias entre objectos de una BD Oracle es la vista ALL_DEPENDENCIES
Con ayuda de esta vista es posible encontrar dependecias entre objetos de forma cómoda, veamos un par de ejemplos:
Que objetos usan una misma tabla.
En ocasiones es útil conocer en que objetos de código PL/SQL se usa una tabla que queremos por ejemplo modificar.
Supongamos que interesa conocer esto sobre la tabla MI_TABLA del esquema MI_ESQUEMA
Para ello podemos pedir al SGBD Oracle la siguiente consulta:
- Código: Seleccionar todo
select owner, name, type
from all_dependencies
where referenced_owner = 'MI_ESQUEMA'
and referenced_name = 'MI_TABLA'
Esto nos devolvera los objetos de BD que usan esta tabla.
----------------------------------------
Que tablas o vistas usa un objeto PL/SQL
Otro caso que puede resultar útil es conocer que tablas o vistas se usan en un package, procedimiento o función PL/SQL,
Supongamos que nos interesa el packge MI_PACKAGE del esquema MI_ESQUEMA
Para ello podemos pedir al SGBD Oracle la siguiente consulta:
- Código: Seleccionar todo
select referenced_owner, referenced_name, referenced_type
from all_dependencies
where owner = 'MI_ESQUEMA'
and name = 'MI_PACKAGE'
and referenced_type in( 'TABLE' , 'VIEW')
order by 1,2
Esto nos devolvera las tablas y vistas que se usan dentro el package.
----------------------------------------
En general
Jugando con los filtros podemos construir consultas sobre la vista de sistema ALL_DEPENDENCIES para obtener informacion relativa a las dependencias existentes en la BD, tales como:
- Que vistas usan una tabla concreta
- Que tablas usa una vista
- En que porcedimientos se usa tal objeto
- etc...
Espero os resulte útil...