列出所有过程以及Oracle中该过程中使用的表和列

时间:2017-05-09 15:26:21

标签: oracle stored-procedures data-dictionary

昨晚接到我团队负责人的电话,他让我列出了所有程序以及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(选择/插入/更新)。

请尽可能帮助..

1 个答案:

答案 0 :(得分:0)

列将位于DBA_TAB_COLUMNS

对于SQL语句,这有点困难,但如果您获得许可的诊断包,则可行;这是大纲(11g或以上):

DBA_HIST_ACTIVE_SESS_HISTORY.top_level_sql_id是调用过程的SQL id,

所以为top_level_sql_id列出DBA_HIST_ACTIVE_SESS_HISTORY.sql_id是"所有"执行程序的SQL。

可以查询

DBA_HIST_SQL_TEXT以获取sql_id的sql文本。

如果您没有诊断程序包,则必须为top_level_sql_id和sql_id以及v $ sql中的文本查看v $ session。