Oracle:搜索所有存储的proc/triggers /其他db代码?

chr*_*ris 6 oracle triggers stored-procedures replace

是否可以跨Oracle中的多个模式搜索所有程序对象(函数,存储过程,触发器等)?

在我的代码中有许多表似乎未使用,但我不希望在不先检查的情况下删除它们.

Jus*_*ave 10

可以搜索目标代码 - 您通常使用DBMS_METADATA包为对象生成DDL,然后搜索CLOB.然而,这听起来并不像你想要做的那样.

如果您只是想弄清楚系统中的任何代码是否引用了表,您通常会想要使用该DBA_DEPENDENCIES视图(ALL_DEPENDENCIES或者USER_DEPENDENCIES取决于您的权限以及您要查找的范围).就像是

SELECT *
  FROM dba_dependencies
 WHERE referenced_owner = 'SCOTT'
   AND referenced_name  = 'EMP'
   AND referenced_type  = 'TABLE'
Run Code Online (Sandbox Code Playgroud)

将显示取决于架构中的EMP表的所有内容SCOTT.

你想要搜索代码而不是查看代码的唯一一次DBA_DEPENDENCIES就是当你的代码执行动态SQL时,表名是硬编码的.但这在实践中相对不太可能.