2017-05-09 35 views
1

昨晚我的團隊主管接到電話,他讓我列出所有過程以及Oracle中使用的表和列。列出所有過程以及該過程在Oracle中使用的表和列

我有一個查詢,列出所有的程序,表格和DBLINK沿,但未能得到列名在該程序中使用(與DML如果可能的話一起):

select DISTINCT OWNER, NAME, referenced_name, referenced_link_name, referenced_type 
from dba_dependencies 
where OWNER = 'OWNER_NAME'; 

我需要的輸出如下:

  • OWNER_NAME
  • 過程名
  • Referenced_name
  • Referenced_link
  • Referenced_type
  • COLUMN_NAME,
  • dml_type(選擇/插入/更新)。

如果可能的話,請幫助..

回答

0

列將在DBA_TAB_COLUMNS

至於SQL語句,這有點困難,但如果您有診斷包許可,則可行;這裏的輪廓(以11g或以上作品):

所以上市DBA_HIST_ACTIVE_SESS_HISTORY.sql_id爲top_level_sql_id

DBA_HIST_ACTIVE_SESS_HISTORY.top_level_sql_id是調用過程的SQL ID,是「全部」從過程的執行SQL。

DBA_HIST_SQL_TEXT可以被查詢來獲取sql_id的sql文本。

如果您沒有Diagnostics Pack,則必須針對top_level_sql_id和sql_id以及v $ sql中的文字查看v $ session。

+0

您可以請分享查詢作爲提及的格式.. – Karthick

+0

從DBA_HIST_ACTIVE_SESS_HISTORY選擇不同的sql_id其中top_level_sql_id =:top_level_sql_id; –

+0

從dba_hist_sql_text中選擇sql_text,其中sql_id = sql_id; –

相關問題