MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/dbmsfgd.sql

Rem Copyright (c) 2006, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      dbmsfgd.sql - Fine-grain dependency information
Rem
Rem    DESCRIPTION
Rem      This script provides views PUBLIC_SYN_BASE and
Rem      PUBLIC_FINE_GRAIN_DEPENDENCY described below.
Rem
Rem    BEGIN SQL_FILE_METADATA
Rem    SQL_SOURCE_FILE: rdbms/admin/dbmsfgd.sql
Rem    SQL_SHIPPED_FILE: rdbms/admin/dbmsfgd.sql
Rem    SQL_PHASE: UTILITY
Rem    SQL_STARTUP_MODE: NORMAL
Rem    SQL_IGNORABLE_ERRORS: NONE
Rem    END SQL_FILE_METADATA
Rem    
Rem    MODIFIED   (MM/DD/YY)
Rem    pjulsaks    06/26/17 - Bug 25688154: Uppercase create_cdbview's input
Rem    kquinn      12/19/14 - 20203844: set _oracle_script to avoid parse error
Rem    talliu      06/28/13 - Add CDB view for DBA view
Rem    sagrawal    12/18/09 - add more debugging packages
Rem    gviswana    10/02/06 - Created
Rem

--
-- NAME:
--   DBMS_FINE_GRAIN_DEP
--
-- DESCRIPTION:
--   This package provides a table function FG_ELEMENTS that translates the
--   fine-grain dependency information stored in dependency$ into a user
--   readable format.
--
create or replace package dbms_fine_grain_dep authid current_user as
   type fg_rec is record(element_num number, element_desc varchar2(30));
   type fg_tab is table of fg_rec;
   function fg_elements(bitvec raw) return fg_tab pipelined;
end;
/
show errors;

--
-- NAME:
--   PUBLIC_SYN_TARGET
--
-- DESCRIPTION:
--   This view maps each synonym to its target object. It works by picking
--   the "last" synonym dependency parent (i.e., the one with the largest
--   order number.
--
create or replace view PUBLIC_SYN_TARGET as
   with ranked_syn_target as
   (select s.obj# syn_id, d.p_obj# target_id, d.order# rank,
           MAX(d.order#) KEEP (DENSE_RANK FIRST ORDER BY d.order# desc)
           OVER (PARTITION BY s.obj#) max_rank
      from sys.syn$ s, sys.dependency$ d
     where s.obj# = d.d_obj# and s.node is null)
   select syn_id, target_id from ranked_syn_target where rank = max_rank;

--
-- NAME:
--   PUBLIC_SYN_BASE
--
-- DESCRIPTION:
--   This view maps each synonym to its base object. The result is different
--   from PUBLIC_SYN_TARGET only when there are synonym chains.
--
--   Intermediate view RANKED_SYN_BASE builds expanded synonym chains using
--   CONNECT BY and RANKED_SYN_MAX ranks synonym targets according to level
--   in the CONNECT BY hierarchy.
--
create or replace view PUBLIC_SYN_BASE as
   with ranked_syn_base as
    (select connect_by_root syn_id syn_id, connect_by_root target_id target_id,
       target_id base_id, connect_by_iscycle is_cycle, level l
      from public_syn_target
      connect by nocycle prior target_id = syn_id),
   ranked_syn_max as
     (select syn_id, target_id, base_id, l, 
             MAX(l) KEEP (DENSE_RANK FIRST order by l desc)
             OVER(PARTITION BY syn_id) max_l
        from ranked_syn_base)
   select syn_id, target_id, base_id from ranked_syn_max where l = max_l;

--
-- NAME:
--   PUBLIC_FINE_GRAIN_DEPENDENCY
--
-- DESCRIPTION:
--   This view uses package DBMS_FINE_GRAIN_DEP to translate fine-grain
--   dependency information in dependency$ for user consumption.
--
create or replace view PUBLIC_FINE_GRAIN_DEPENDENCY
   (object_id, referenced_object_id, element_num, element_desc) as
   select d_obj#, d.p_obj#, e.element_num, e.element_desc
     from sys.dependency$ d, TABLE(dbms_fine_grain_dep.fg_elements(d.d_attrs)) e;



create or replace view DBA_fine_grain_DEPENDENCIES
  (OWNER, NAME, TYPE, REFERENCED_OWNER, REFERENCED_NAME,
  REFERENCED_TYPE, REFERENCED_LINK_NAME, DEPENDENCY_type,
  ELEMENT_NUM ,ELEMENT_DESC )
as
select u.name, o.name,
       decode(o.type#, 0, 'NEXT OBJECT', 1, 'INDEX', 2, 'TABLE', 3, 'CLUSTER',
                      4, 'VIEW', 5, 'SYNONYM', 6, 'SEQUENCE', 7, 'PROCEDURE',
                      8, 'FUNCTION', 9, 'PACKAGE', 10, 'NON-EXISTENT',
                      11, 'PACKAGE BODY', 12, 'TRIGGER',
                      13, 'TYPE', 14, 'TYPE BODY', 22, 'LIBRARY',
                      28, 'JAVA SOURCE', 29, 'JAVA CLASS', 
                      32, 'INDEXTYPE', 33, 'OPERATOR',
                      42, 'MATERIALIZED VIEW', 43, 'DIMENSION',
                      46, 'RULE SET', 55, 'XML SCHEMA', 56, 'JAVA DATA',
                      59, 'RULE', 62, 'EVALUATION CONTXT', 87, 'ASSEMBLY',
                      92, 'CUBE DIMENSION', 93, 'CUBE',
                      94, 'MEASURE FOLDER', 95, 'CUBE BUILD PROCESS',
                      'UNDEFINED'),
       decode(po.linkname, null, pu.name, po.remoteowner), po.name,
       decode(po.type#, 0, 'NEXT OBJECT', 1, 'INDEX', 2, 'TABLE', 3, 'CLUSTER',
                      4, 'VIEW', 5, 'SYNONYM', 6, 'SEQUENCE', 7, 'PROCEDURE',
                      8, 'FUNCTION', 9, 'PACKAGE', 10, 'NON-EXISTENT',
                      11, 'PACKAGE BODY', 12, 'TRIGGER',
                      13, 'TYPE', 14, 'TYPE BODY', 22, 'LIBRARY',
                      28, 'JAVA SOURCE', 29, 'JAVA CLASS', 
                      32, 'INDEXTYPE', 33, 'OPERATOR',
                      42, 'MATERIALIZED VIEW', 43, 'DIMENSION',
                      46, 'RULE SET', 55, 'XML SCHEMA', 56, 'JAVA DATA',
                      59, 'RULE', 62, 'EVALUATION CONTXT', 87, 'ASSEMBLY',
                      92, 'CUBE DIMENSION', 93, 'CUBE',
                      94, 'MEASURE FOLDER', 95, 'CUBE BUILD PROCESS',
                      'UNDEFINED'),
       po.linkname,
  decode(bitand(d.property, 3), 2, 'REF', 'HARD'), 
  e.element_num, e.element_desc
from sys."_CURRENT_EDITION_OBJ" o, sys.disk_and_fixed_objects po,
  sys.dependency$ d, sys.user$ u, sys.user$ pu, 
  TABLE(dbms_fine_grain_dep.fg_elements(d.d_attrs)) e
where o.obj# = d.d_obj#
  and o.owner# = u.user#
  and po.obj# = d.p_obj#
  and po.owner# = pu.user#
/
create or replace public synonym DBA_fine_grain_DEPENDENCIES FOR
  DBA_fine_grain_DEPENDENCIES
/
grant select on DBA_fine_grain_DEPENDENCIES to select_catalog_role
/

alter session set "_oracle_script" = TRUE;

execute CDBView.create_cdbview(false,'SYS','DBA_FINE_GRAIN_DEPENDENCIES','CDB_FINE_GRAIN_DEPENDENCIES');
grant select on SYS.CDB_fine_grain_DEPENDENCIES to select_catalog_role
/
create or replace public synonym CDB_fine_grain_DEPENDENCIES for SYS.CDB_fine_grain_DEPENDENCIES
/

@@prvtfgd.plb

OHA YOOOO