【问题标题】:Search for wrapped packages/procedures in Oracle SQL在 Oracle SQL 中搜索打包的包/过程
【发布时间】:2021-03-29 15:21:23
【问题描述】:

一个简单的问题,但 google 和 SO 搜索没有发现任何问题。

有谁知道是否可以在 Oracle 数据字典中搜索以查找所有已包装(已使用“包装”实用程序进行混淆的)包/程序?

谢谢, 约翰。

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    你必须检查源代码的第一行:

    select type, owner, name
    from all_source
    where line = 1
      and instr(text, 'wrapped') > 1;
    

    除了非常长的包装包外,包装类型通常将整个代码放在一行(第 1 行)中,而未包装类型的每一行源代码都有单独的一行。

    【讨论】:

      【解决方案2】:

      使用 all_source/user_source 在第 1 行搜索文本 'wrapped' 会显示已包装的对象。但如果单位名称本身包含“包装”文本,这可能会中断,您可以改用:

      select u.object_name
        from sys.procedure$ p, user_objects u
       where u.object_id = obj#
         AND bitand(p.options, 2) <> 0;
      

      完整的数据库对象视图:

      select d.owner,
             d.object_name,
             case bitand(p.options, 2)
               when 0 then
                'PLAIN'
               else
                'WRAPPED'
             end wrapped
        from sys.procedure$ p, dba_objects d
       where d.object_id = obj#
         and d.owner = USER;
      

      【讨论】:

      • 我怀疑自从我第一次提出这个问题以来,Oracle 数据库在这十年中可能发生了一些变化。
      猜你喜欢
      • 2010-10-25
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 2011-02-11
      • 1970-01-01
      相关资源
      最近更新 更多