【问题标题】:Is there a way to do full text search of all oracle packages and procedures?有没有办法对所有 oracle 包和程序进行全文搜索?
【发布时间】:2008-10-30 21:53:48
【问题描述】:

我想在我的所有程序包和函数中搜索某个短语。

由于可以使用 toad 检索已编译过程的代码,因此我假设全文存储在某个数据字典表中。有谁知道那会在哪里?

非常感谢

【问题讨论】:

    标签: oracle data-dictionary


    【解决方案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_sourceall_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 代码,是的。蟾蜍查找对象搜索对我不起作用,不知道为什么(另外,我只想知道过程文本的存储位置)
      猜你喜欢
      • 2018-05-24
      • 2016-06-21
      • 2015-10-19
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多