【DB筆試面試541】在Oracle中,如何查找存儲過程或視圖中引用了哪些基表?
- 2019 年 10 月 10 日
- 筆記
♣
題目部分
在Oracle中,如何查找存儲過程或視圖中引用了哪些基表?
♣
答案部分
可以查詢DBA_DEPENDENCIES視圖,該視圖記錄了對象與對象之間的依賴關係,NAME列為當前對象,而REFERENCED_NAME為其依賴的基對象。所以,該視圖也可以查詢某個表被哪些對象所引用,從而知道該表是否可以被刪除。
下例展示了DBA_SQL_PLAN_BASELINES視圖依賴的對象:
SH@PROD1> SELECT D.OWNER, 2 D.NAME, 3 D.TYPE, 4 D.REFERENCED_OWNER, 5 D.REFERENCED_NAME, 6 D.REFERENCED_TYPE 7 FROM DBA_DEPENDENCIES D 8 WHERE D.NAME = 'DBA_SQL_PLAN_BASELINES'; OWNER NAME TYPE REFERENCED_OWNER REFERENCED_NAME REFERENCED_TYPE --------- ------------------------------ ------------------ ------------------------------ -------------------------- ------------------ PUBLIC DBA_SQL_PLAN_BASELINES SYNONYM SYS DBA_SQL_PLAN_BASELINES VIEW SYS DBA_SQL_PLAN_BASELINES VIEW SYS SQLOBJ$AUXDATA TABLE SYS DBA_SQL_PLAN_BASELINES VIEW SYS SQLOBJ$ TABLE SYS DBA_SQL_PLAN_BASELINES VIEW SYS SQL$TEXT TABLE
可以看到,公共同義詞DBA_SQL_PLAN_BASELINES依賴於和其同名的視圖,而DBA_SQL_PLAN_BASELINES視圖依賴於SYS.SQLOBJ$AUXDATA、SYS.SQLOBJ$和SYS.SQL$TEXT這3個基表。
& 說明:
有關Oracle數據字典的更多內容可以參考我的BLOG:http://blog.itpub.net/26736162/viewspace-2153324/
本文選自《Oracle程式設計師面試筆試寶典》,作者:李華榮。