DB2 z/OS v12中如何重新验证UDF及存储过程?
DB2 z/OS V12 重验证当前Schema下存储过程与函数的操作方案
DB2 for z/OS V12没有和LUW版本SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS完全对等的存储过程,你可以通过以下两种方式实现相同功能:
方式1:手动批量执行REBIND操作
你可以通过查询系统目录获取当前Schema下所有需要验证的存储过程、函数,批量生成REBIND命令执行重验证:
- 第一步,执行SQL生成对应REBIND语句:
SELECT 'REBIND ROUTINE ' || RTRIM(ROUTINESCHEMA) || '.' || RTRIM(ROUTINENAME) || ';' FROM SYSIBM.ROUTINES WHERE ROUTINESCHEMA = CURRENT SCHEMA AND ROUTINETYPE IN ('P', 'F') -- P代表存储过程,F代表用户自定义函数 -- 如果只需要重验证当前无效的例程,加上下面这行条件 -- AND VALID = 'N' ;
- 第二步,将生成的REBIND命令保存到数据集,通过DSN子系统执行即可完成重验证,验证通过后例程的VALID状态会自动更新为'Y'。
方式2:通过存储过程实现自动化重验证
如果需要通过程序调用实现自动化操作,可以配合SYSPROC.ADMIN_COMMAND_DSN存储过程批量提交REBIND命令:
- 先通过游标遍历SYSIBM.ROUTINES表获取当前Schema下所有需要重验证的例程
- 循环调用
SYSPROC.ADMIN_COMMAND_DSN提交对应REBIND ROUTINE命令 - 检查执行返回码即可确认重验证结果
REBIND操作会重新检查例程依赖的所有对象权限、结构合法性,和LUW版本的重验证逻辑效果完全一致。
内容的提问来源于stack exchange,提问作者killer
相关产品推荐
相关产品推荐

