Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Skrip untuk menemukan dependensi multi level dari suatu paket

Anda dapat menggunakan connect by on user_dependencies untuk sebagian besar kasus.

Menentukan dependensi

Contoh yang berfungsi untuk setiap pengguna Oracle sejak PUBLIC telah diberikan akses pilih pada ketergantungan_pengguna:

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

Contoh keluaran

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

Skenario kompleks

Untuk skenario kompleks, saya merasa perlu menggunakan tampilan sendiri secara langsung di kamus data. Lakukan ini hanya jika Anda tahu apa yang Anda lakukan dan versi RDBMS apa yang ingin Anda dukung! Misalnya, versi model data memperkenalkan perubahan besar dalam kamus data.

Contoh:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Waktu Lokal Saat Ini dari Setiap Negara di PL/SQL

  2. Hibernate Buat Kriteria untuk bergabung dengan tabel yang sama dua kali - mencoba 2 pendekatan dengan 2 kesalahan perbedaan

  3. dbms_output.put_line

  4. Cara memperbaiki oracle.sql.ArrayDescriptor, oracle.sql.STRUCT, dan oracle.sql.StructDescriptor yang tidak digunakan lagi

  5. PL/SQL, bagaimana cara menghindari kutipan tunggal dalam sebuah string?