【发布时间】:2011-08-09 18:41:09
【问题描述】:
是否可以在 Oracle 中跨多个模式搜索所有编程对象(函数、存储过程、触发器等)?
我的代码中有许多表似乎没有使用,但我不想在不先检查的情况下删除它们来破坏任何东西。
【问题讨论】:
标签: oracle stored-procedures triggers replace
是否可以在 Oracle 中跨多个模式搜索所有编程对象(函数、存储过程、触发器等)?
我的代码中有许多表似乎没有使用,但我不想在不先检查的情况下删除它们来破坏任何东西。
【问题讨论】:
标签: oracle stored-procedures triggers replace
通过选择在 Toad 中执行此操作:
搜索 => 对象搜索
【讨论】:
如果你有Toad,你可以做这个内置的。 (出于隐私考虑,我删除了我的架构)
【讨论】:
可以通过对象代码进行搜索——您通常使用 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'
将向您显示依赖于 SCOTT 架构中的 EMP 表的所有内容。
您唯一想要搜索代码而不是查看DBA_DEPENDENCIES 的情况是,当您的代码执行动态SQL 时,表名是硬编码的。但这在实践中相对不太可能。
【讨论】:
您可以搜索 DBA_SOURCE 视图:
SELECT *
FROM dba_source
WHERE UPPER(text) LIKE '%YOUR_TABLE_NAME%';
【讨论】: