是否可以在 Oracle 中跨多个模式搜索所有编程对象(函数、存储过程、触发器等)?
我的代码中有许多表似乎未使用,但我不想通过删除它们而不先检查来破坏任何内容。
最佳答案
可以搜索对象代码——您通常会使用 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'
将向您展示依赖于
EMP
的一切表中 SCOTT
架构。唯一一次您想搜索代码而不是查看
DBA_DEPENDENCIES
将是当您有执行动态 SQL 的代码时,其中表名是硬编码的。但这在实践中相对不太可能。
关于Oracle:搜索所有存储的过程/触发器/其他数据库代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5735463/