有没有办法对所有 oracle 包和程序进行全文搜索?
Posted
技术标签:
【中文标题】有没有办法对所有 oracle 包和程序进行全文搜索?【英文标题】:Is there a way to do full text search of all oracle packages and procedures? 【发布时间】:2008-10-30 21:53:48 【问题描述】:我想在我的所有程序包和函数中搜索某个短语。
由于可以使用 toad 检索已编译过程的代码,因此我假设全文存储在某个数据字典表中。有谁知道那会在哪里?
非常感谢
【问题讨论】:
【参考方案1】:你可以这样做
SELECT name, line, text
FROM dba_source
WHERE upper(text) like upper('%<<your_phrase>>%') escape '\'
【讨论】:
如果您无权访问 dba_source 和/或只想在代码中搜索特定架构,则可以使用 user_source 而不是 dba_source。all_source
如果您无权访问dba_source
。 all_source
将包括“当前用户可访问的存储对象”。 (download.oracle.com/docs/cd/E11882_01/server.112/e17110/…)
我赞同@David Aldridge 的建议,@Justin Cave【参考方案2】:
Toad 的“对象搜索”例程将查看 ALL_SOURCE(以及数据字典的其他部分)。当然,这将仅限于允许连接用户查看的对象。如果您可以访问 DBA 版本,那就太好了。如果没有,您将不会搜索所有内容。
另外,如果您回到 Oracle 7,或者您的数据库从 Oracle 7 迁移到 8i 或 9i(不确定 10 或 11),则触发器源可能不会出现在 user_source 或 all_source 视图中。最好检查一下。我发现让它出现的最简单方法是进行实际修改——例如,添加一个空格——然后重新编译触发器。
【讨论】:
【参考方案3】:您的意思是使用 PL/SQL?还是只使用 TOAD?我知道您可以使用“查找对象”(或类似的东西)功能手动搜索所有对象,如 procs、表等...
【讨论】:
我的意思是我的 plsql 程序的 plsql 代码,是的。蟾蜍查找对象搜索对我不起作用,不知道为什么(另外,我只想知道过程文本的存储位置)以上是关于有没有办法对所有 oracle 包和程序进行全文搜索?的主要内容,如果未能解决你的问题,请参考以下文章