Sebagai seorang Database Administrator atau Full Stack Developer, sudah menjadi syarat minimum untuk mengetahui seluk beluk dari Object Database. Mungkin tidak menjadi sebuah masalah jika jumlah object pada 1 database kurang dari 20. Namun bagaimana jika dalam 1 database memiliki object lebih dari 50 object ?
Seringkali sebagai pembuat aplikasi menjadi masalah tersendiri jika harus mengingat relasi dari 1 buah table, object apa saja yang terikat dengan 1 object tersebut.
Meskipun saat ini sangat banyak tools GUI yang bisa dipakai untuk issue tersebut. Seperti gambar dibawah, Jika kita menggunakan DBForge For Oracle, kita bisa mengetahui Table X tersebut tergantung kepada Object apa saja (Depends On) dan Object apa saja yang menggunakan Table X (Used By).
Namun seperti yang kita tahu, software GUI sedetail ini tidak ada yang gratis, melainkan versi bajakan. Maka dari itu, kali ini, kita akan coba buat 1 Script untuk membuat fitur yang sama, pada intinya kita dapat mengetahui, Table X tersebut digunakan oleh object apa saja.
SELECT owner || '.' || name AS OBJECT_NAME,
name,
referenced_name AS DEPENDS_ON,
' ' AS DESCRIPTION,
referenced_type AS REFERENCED_TYPE,
TYPE AS OBJECT_TYPE
FROM SYS.ALL_DEPENDENCIES
WHERE referenced_type in('TABLE','VIEW') and
referenced_name = 'MEMBERUPLOAD_DELETED'
AND
-- type = 'PROCEDURE'
-- and
-- name IN (P_OBJECT_NAME) --OR name ='' -- put your procedure name here
--and referenced_owner = 'schema name'
-- and
referenced_owner not in ('ANONYMOUS','CTXSYS','DBSNMP','EXFSYS',
'MDSYS', 'MGMT_VIEW','OLAPSYS','OWBSYS','ORDPLUGINS', 'ORDSYS',
'SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM', 'TSMSYS','WK_TEST',
'WKPROXY','WMSYS','XDB','APEX_040000', 'APEX_PUBLIC_USER','DIP',
'FLOWS_30000','FLOWS_FILES','MDDATA', 'ORACLE_OCM', 'XS$NULL',
'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'PUBLIC',
'OUTLN', 'WKSYS', 'LBACSYS')
--AND name IN (
-- SELECT REGEXP_SUBSTR('MEMBERUPLOAD','[^,]+',1,level)
-- FROM dual CONNECT BY
-- regexp_substr('MEMBERUPLOAD','[^,]+',1,level) IS NOT NULL
--)
order by NAME, REFERENCED_TYPE, DEPENDS_ON;
Keterangan
- Object Name, Object yang menggunakan field "Depends On"
- Name, Nama Object (Real Name) yang menggunakan field "Depends On"
- Depends On, Nama Object yang di cari
- Ref Type, Jenis Object yang di cari
- Object Type, Jenis Object yang ter-relasi dengan object yang dicari
Semoga bermanfaat!