sql >> Database teknologi >  >> RDS >> Oracle

Script til at finde afhængigheder på flere niveauer af en pakke

Du kan bruge en connect by på user_dependencies i de fleste tilfælde.

Bestemmelse af afhængigheder

Eksempel, der fungerer for enhver Oracle-bruger, siden PUBLIC har fået udvalgt adgang på user_dependencies:

select name
,      type
,      prior name
,      prior type
from   user_dependencies
start 
with   name='BUBS#MUNT_EENHEDEN'
and    type='PACKAGE'
connect 
by     nocycle 
       name = prior referenced_name
and    type = prior referenced_type

Eksempeloutput

Level 1: BUBS#MUNT_EENHEDEN   PACKAGE
Level 2: BUBS_MUNT_EENHEDEN_V VIEW    BUBS#MUNT_EENHEDEN    PACKAGE
Level 3: BUBS#VERTALINGEN     PACKAGE BUBS_MUNT_EENHEDEN_V  VIEW
Level 4: ITGEN_LANGUAGES_V    VIEW    BUBS#VERTALINGEN      PACKAGE

Komplekse scenarier

For komplekse scenarier har jeg fundet det nødvendigt at bruge en egen visning direkte på dataordbogen. Gør kun dette, når du ved, hvad du laver, og hvilken RDBMS-version du vil understøtte! For eksempel introducerede datamodelversioner store ændringer i dataordbogen.

Eksempel:

create or replace force view itgen_object_tree_changes_r
as 
select o_master.obj#        ojt#
,      o_master.name        ojt_name
,      o.mtime              ojt_ref_mtime
,      o.name               ojt_ref_name
,      o.owner#             ojt_ref_owner#
,      decode
       ( o.type#
       , 0, 'NEXT OBJECT'
       , 1, 'INDEX'
       , 2, 'TABLE'
       , 3, 'CLUSTER'
       , 4, 'VIEW'
       , 5, 'SYNONYM'
       , 6, 'SEQUENCE'
       , 7, 'PROCEDURE'
       , 8, 'FUNCTION'
       , 9, 'PACKAGE'
       , 11, 'PACKAGE BODY'
       , 12, 'TRIGGER'
       , 13, 'TYPE'
       , 14, 'TYPE BODY'
       , 19, 'TABLE PARTITION'
       , 20, 'INDEX PARTITION'
       , 21, 'LOB'
       , 22, 'LIBRARY'
       , 23, 'DIRECTORY'
       , 24, 'QUEUE'
       , 28, 'JAVA SOURCE'
       , 29, 'JAVA CLASS'
       , 30, 'JAVA RESOURCE'
       , 32, 'INDEXTYPE'
       , 33, 'OPERATOR'
       , 34, 'TABLE SUBPARTITION'
       , 35, 'INDEX SUBPARTITION'
       , 40, 'LOB PARTITION'
       , 41, 'LOB SUBPARTITION'
       , 42, nvl
       ( ( select 'REWRITE EQUIVALENCE'
       from    sys.sum$ s
       where   s.obj# = o.obj#
       and     bitand ( s.xpflags, 8388608 ) = 8388608 ), 'MATERIALIZED VIEW'
       )
       , 43, 'DIMENSION'
       , 44, 'CONTEXT'
       , 46, 'RULE SET'
       , 47, 'RESOURCE PLAN'
       , 48, 'CONSUMER GROUP'
       , 51, 'SUBSCRIPTION'
       , 52, 'LOCATION'
       , 55, 'XML SCHEMA'
       , 56, 'JAVA DATA'
       , 57, 'EDITION'
       , 59, 'RULE'
       , 60, 'CAPTURE'
       , 61, 'APPLY'
       , 62, 'EVALUATION CONTEXT'
       , 66, 'JOB'
       , 67, 'PROGRAM'
       , 68, 'JOB CLASS'
       , 69, 'WINDOW'
       , 72, 'WINDOW GROUP'
       , 74, 'SCHEDULE'
       , 79, 'CHAIN'
       , 81, 'FILE GROUP'
       , 82, 'MINING MODEL'
       , 87, 'ASSEMBLY'
       , 90, 'CREDENTIAL'
       , 92, 'CUBE DIMENSION'
       , 93, 'CUBE'
       , 94, 'MEASURE FOLDER'
       , 95, 'CUBE BUILD PROCESS'
       , 'UNDEFINED'
       )
       ojt_ref_type
from   sys.obj$ o
,      ( /* All dependencies from the object if there are any. */
                  select distinct connect_by_root d_obj# obj#, dep.p_obj# obj_ref#
         from   sys.dependency$ dep
         connect
         by     nocycle dep.d_obj# = prior dep.p_obj#
         start
         with   dep.d_obj# in ( select obj.obj# from itgen_schemas_r sma, sys.obj$ obj where obj.owner# = sma.owner# )
         union all /* Union all allowed, 'in' ignores duplicates. */
         /* The object itself. */
         select obj.obj#
         ,      obj.obj#
         from   itgen_schemas_r sma
         ,      sys.obj$ obj
         where  obj.owner# = sma.owner#
       ) deps
,      sys.obj$ o_master
where  o_master.obj# = deps.obj#
and    o.obj# = deps.obj_ref#
--
-- View: itgen_object_tree_changes_r
--
-- Overview of dependencies between a master object and all objects used by it. It can be used to analyze the reason why a project version views must be recalculated.
--
-- Code (alias): ote_r
--
-- Category: Hardcoded.
--
-- Example:
--
-- The object 'X' is invalid, since 'Y' is invalid.
--



  1. Sådan opretter du en MySQL-database ved hjælp af cPanel API

  2. nullvalue:Vis NULL-værdier i SQLite

  3. Implementer flere Oracle-beregningsinstanser ved hjælp af en instanspulje og terraform

  4. 5 bedste onlinekurser til at lære MySQL