db2 Db2 故障诊断的正确思路( 三 )


错误消息中可能提到了两个原因。有关更多详细信息,请使用-d选项进入调试模式:
db 2 updt-d-u db 2 fen C1 db 2 ins 1 2 & gt。& amp1 | tee db 2 updt . debug . out
打开db 2 updt . debug . out并搜索DBI1122E:
+ /usr/bin/echo ##退出函数chk_version
+/usr/bin/tee-a/tmp/db 2 updt . log . 21886
##退出函数chk_version
+返回199
DB2INSTVER=199
DB2IPRDDIR =未知
+ [ 199 -ne 71 ]
+display _ msg/usr/lpp/db 2 _ 07 _ 01/msg/en _ US/db 2 install . cat 122 DBI 1122 E实例%s无法更新. n db2inst1
+ set -x
+取消设置catname msgid deft msg msgstr warn msg info msg
cat name =/usr/lpp/db 2 _ 07 _ 01/msg/en _ US/db 2 install . cat
msgid=122
deftmsg=DBI1122E无法更新实例%s, n
warnmsg=1
infomsg=1
从上面的输出可以看出,chk_version返回199,这是有问题的。接下来,检查这个chk_version函数。在/usr/lpp /db2_07_01/instance下使用grep可以找到几个chk_version。
我们应该特别注意db2iutil文件中的3078行。以下是文件中的一个段落:
#获取该实例使用的DB2版本
chk_version ${INSTNAME?}
DB2INSTVER=$?INSTNAME实例的DB2版本
DB2IPRDDIR = $ { db2proddir?} #该实例使用的DB2产品目录
注释表明chk_version检查DB2实例的版本和产品目录。上面返回的错误表明系统没有正确检查信息,导致升级失败。我们可以从以下几个方面解决问题:
1.确认db2iupdt运行在正确的目录中,例如/usr/lpp/db2_07_01/instance
2.执行/usr/lpp/DB2 _ 07 _ 01/instance/db 2 list以确认实例是否存在
3.在正确的级别重新安装缺失的DB2代码
4.最后,删除实例并重新构建它。
5.许可证发放
要确认是否是许可证问题,您可以根据收到的SQL代码找到消息参考。
其实在很多情况下,系统提示的错误信息就足以让我们判断是否与许可证有关。让我们看下面的例子:
产品“DB2企业版”的评估期还剩“90”天。有关评估许可条款和条件,请参考评估中的IBM评估协议。AGR文件,位于以下目录中:
“C:PROGRA ~ 1SKLIB”。数据库管理器已经处于活动状态。
剩下的90天评估期,从中我们可以看出许可证有问题。请参见消息参考中对SQL8007W的解释:“此产品尚未安装有效的许可证密钥。
评估期将在指定天数后到期。"
如果您是新安装的DB2,请确认许可证密钥是否安装正确。反之,检查是否做了什么。如果不能解决,看下面描述的方法。
首先,验证当前系统的许可证并执行db 2 ICM-l..如果没有许可证,请在产品光盘上查找许可证密钥文件,如db2entr.lic,然后使用db2licm安装许可证。
此外,在AIX系统中,许可证信息存储在/var/ifor/nodelock文件中。您可以用vi打开文件来查看许可证信息,例如
#
& lt您将在这里看到实际的许可证密钥。&gt。
#[admin _ comment]“IBM多伦多实验室”“DB2企业版”“2145844800”“0”“1”
nodelock文件的权限也会影响许可问题。确保文件的权限是rw-r-r-并且所有者是root用户。在AIX上,/usr/lib /netls/conf/nodelock必须指向/var/ifor/nodelock作为符号链接。
如果不存在,用ln创建。
这里有一个例子:
首先以根用户身份执行db 2 ICM-l:
产品名称=“DB2企业版-扩展版”
产品密码= " DB2UDBEEE "
版本信息=“7.2”
到期日=“永久”
并发连接用户策略=“已禁用”
注册的连接用户策略=“已禁用”
强制政策=“软停止”
处理器数量=“1”
许可处理器数量=“1”
批注= " "
其他信息= " "
然后用db2inst1执行db 2 ICM-l:
产品名称=“DB2企业
产品密码= " DB2UDBEEE "
版本信息=“7.2”
到期日= "02/19/

推荐阅读