【发布时间】:2021-03-29 15:21:23
【问题描述】:
一个简单的问题,但 google 和 SO 搜索没有发现任何问题。
有谁知道是否可以在 Oracle 数据字典中搜索以查找所有已包装(已使用“包装”实用程序进行混淆的)包/程序?
谢谢, 约翰。
【问题讨论】:
一个简单的问题,但 google 和 SO 搜索没有发现任何问题。
有谁知道是否可以在 Oracle 数据字典中搜索以查找所有已包装(已使用“包装”实用程序进行混淆的)包/程序?
谢谢, 约翰。
【问题讨论】:
你必须检查源代码的第一行:
select type, owner, name
from all_source
where line = 1
and instr(text, 'wrapped') > 1;
除了非常长的包装包外,包装类型通常将整个代码放在一行(第 1 行)中,而未包装类型的每一行源代码都有单独的一行。
【讨论】:
使用 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;
【讨论】: