仙道彰
作者仙道彰·2017-08-22 16:41
数据库开发工程师·花旗集团

Error SQL0572N Package inoperative 详解

字数 1995阅读 6453评论 1赞 3

SQL0572N错误分析和解决

执行 db2 ? SQL0572N

SQL0572N  指定的Package 失效 ; 
解释:
指定名称的Package已经失效需要执行rebind的操作使其恢复可用;
该package失效的是因为他所depend on 的用户自定义函数已经被drop掉了; 
通过使用rebind 或者 bind 命令来重绑定改Package ;
sqlcode: -572
sqlstate: 51028

SQL0572N错误是泛指包(package)不可用的一类错误

IBM官方文档中找到了一个类似的错误“Error SQL0572N and rebind issues after update DB2 10.15 to Fix Pack FP8 ”

IBM官方文档给出的解释如下:

技术(故障)

问题(摘要)

“ SQL0572N”错误"NULLID.SQLC2K26" Package 不可用,DB2 10 .5 打补丁之后导致的重新绑定问题;

症状

 自从DB2 打完补丁从10.5 FP7  升级到 10.5 FP8 之后,SQL0572N错误就会伴随着一些CLP查询操作出现,例如 "select * from syscat.tables with ur" 就会出现 “SQL0572N Package "NULLID.SQLC2K26" is inoperative. SQLSTATE=51028”错误提醒;

原因

有多种原因可能会导致这种Package失效的发生 :

 给DB2打完补丁之后对数据库进行升级到10.5的操作,这将会执行 CREATE OR REPLACE 语句去更新一些系统的routines ,这可能会导致一些系统的Package 和 少量的 CLP package 失效 ;对于这种情况,如果数据库配置参数 auto_reval 没有被设置成 disabled (可以通过db2 get db cfg | grep -i auto_reval  查看),那么失效的Package 将会隐式的成功绑定。当然如果auto_reval被设置成了disabled,失效的Packages 就不能够隐式的绑定了(只能够进行显示的绑定);如果auto_reval被设置成DEFERRED ,Package仍然可以隐式的绑定;
 执行 "db2 BIND...ACTION ADD"操作,但是没有replace已经存在的package , 即使这个package已经失效了;“ACTION ADD” 选项一般推荐使用,因为你肯定不想浪费时间去绑定已经存在的package。但它不会取代失效或无效的包 。在auto_reval被设置成disabled状态的情况下,默认的“ACTION REPLACE”需要被默认使用;
  如果 "-r any"被实际指定了的话,执行db2rbind可以成功进行重新绑定。没有 "-r any" ,系统就不会尝试去重新绑定已经失效的packages 。使用 "-r any"的效果和issue db2 rebind package 是一样的 ;

问题诊断

一个把 “auto_reval” 参数设置成 “disabled ” 且执行了“db2updv105” 操作的 DB2 10.5 版本数据库打完补丁可能会引起包含了CLP的特定系统packages失效,并出现 SQL0572N 错误 ;

解决方案

你可以采用下面方法的一种来避免package失效同时确保重新绑定packages成功:

1) 将 auto_reval 设置成  deferred 模式  (or immediate);
2) 执行 db2rbind 操作使用  "-r any" 选项 ;
3) 重新显式的绑定失效的packages , 使用: db2 "rebind package NULLID.SQLC2K26".;
4) 绑定 system packages 时使用 ACTION REPLACE 而不是  ACTION ADD ;

其实一般出现SQL0572N这种错误我们一般选择第三种解决方案,即 db2 "rebind package NULLID.SQLC2K26"


参考文献:
a.Error SQL0572N and rebind issues after update DB2 10.15 to Fix Pack FP8
b.db2updv105 - Update database to Version 10.5 fix pack command
c.SQL0572N Package "NULLID.SQLUAH19" is inoperative bind error

版权所有非经授权请勿做任何商业用途,仅限技术交流!

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论1 条评论

wuwenpinwuwenpin软件开发工程师南京
2017-08-24 10:18
很详细,不错!
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广