특정 DB 패키지명들을 기준으로,
해당 패키지들에서 참조하고 있는 Table, SYNONYM, VIEW를 찾고자합니다.
문제는 고객사DB가 ERP DB로 구성되어 있기 때문에,
아래 쿼리로 특정 패키지 조회시,
참조하고 있는 패키지들이 여러개씩 조회되고,
그 중 특정 패키지명으로 쿼리시 또,
여러개의 패키지들이 조회되고 계속 반복되기 때문에,
참조하고 있는 Table, SYNONYM, VIEW 전체를 찾기가 너무 어렵습니다.
방법이 없을까요?
아래 쿼리로 반복해서 찾는건 거의 불가능인 것 같습니다.
무한반복입니다. ㅠ
select DISTINCT REFERENCED_OWNER, REFERENCED_NAME, REFERENCED_TYPE -- REFERENCED_NAME 을 where 절 NAME에 대입(SYNONYM,TABLE,SEQUENCE 제외)
from dba_dependencies
where name = 'CZ_PB_MGR'
and NAME != REFERENCED_NAME
and owner NOT IN ('PSTARCH','CTXSYS','SYSTEM')
and REFERENCED_OWNER not in ('SYS','CTXSYS')
and REFERENCED_TYPE not in ('TYPE',
'NON-EXISTENT')
and REFERENCED_NAME not in ('DUAL',
'STANDARD',
'PLITBLM',
'DBMS_OUTPUT')
and REFERENCED_NAME not like 'FND%'
and REFERENCED_NAME not like 'DBMS%'
and REFERENCED_NAME not like 'UTL%'
and REFERENCED_NAME not like 'XML%'
--AND REFERENCED_TYPE = 'PACKAGE'
ORDER BY DECODE(REFERENCED_TYPE,'TABLE',1,'SYNONYM',2,'VIEW',3, 4), REFERENCED_NAME
계층쿼리를 이용해 보세요.
http://gurubee.net/oracle/advanced