在 Oracle SQL 中搜索包装的包/过程

发布于 2024-10-17 20:33:25 字数 114 浏览 2 评论 0原文

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

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

谢谢, 约翰.

A simple question but a google and SO search hasn't turned anything up.

Does anyone know if it is possible to search in the Oracle Data Dictionary to find all wrapped (that have been obfuscated using the 'wrap' utility) packages/procedures?

Thanks,
John.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

毁我热情 2024-10-24 20:33:25

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

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

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

You have to check the first line of the source code:

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

Except for very long wrapped packages, wrapped types usually have the whole code in one row (line 1) while unwrapped types have a separate row for each line of source code.

浅浅 2024-10-24 20:33:25

使用 all_source/user_source 搜索第 1 行上的文本“wrapped”确实会显示包装对象。但是,如果单元名称本身包含文本“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;

Searching the text 'wrapped' on line 1 using all_source/user_source does show wrapped objects. But this could break if a unit name itself contains the text 'wrapped', you could instead use :

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

Full database object view :

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文