Oracle数据库,pl / sql代码验证

时间:2015-11-02 11:32:08

标签: oracle dictionary verification ora-hash

我需要验证特定的pl / sql对象(比如一个过程)在开发,测试和生产环境之间是否匹配。为了比较和了解代码匹配的100%确定性,我编写了一个简单的函数,例如:

function get_plsql_hash (p_owner varchar2, p_name varchar2, p_type varchar2) return number as
    v_hash number;
begin

select sum(ora_hash(line||'!'||text)) into v_hash
from dba_source
where owner = p_owner
  and name = p_name
  and type = p_type;

if v_hash is null then
    return 0;
else
    return v_hash;
end if;

exception
when others then
    return 0;
end get_plsql_hash;

效果很好。如果我改变甚至只有一个字符的代码,我将得到一个不同的哈希值(校验和或任何你想要调用它)。我能够使用Oracle字典视图来验证pl / sql代码,还可以验证参考/查找表,表结构,表私有,索引,约束,序列等中的数据。我上面粘贴的函数只是一个例子。

这是我的问题.... Oracle数据字典中是否存在一些我不知道的东西可以给我一个代表每个对象的唯一值?如果dba_objects有一个名为OBJ_CKSUM的列或类似的东西,那将是很棒的。如果Oracle每次修改一个对象时都可以在内部保留它,那么它将完全消除对我编写的代码的需求(这只是几百行,但零行没有代码可以维护得多)。如果不存在这样的功能,Oracle是否会考虑在将来的版本中添加此功能?我认为它非常有用,但我不确定其他开发人员,测试人员或发布管理是否会同意。我不知道如何继续从Oracle请求功能。

0 个答案:

没有答案