环境:Solaris,IBM Portal 6.0,db2 8.1
今天客户的IBM Portal主机故障了,需要启动备机恢复应用。原来的数据文件大部分都在磁盘阵列中,通过挂接到备机上,大部分的数据都没有丢。
但是启动备机时,LDAP启动不了。总结解决过程,主要是三个阶段:
第一阶段,启动LDAP时报错:
GLPRDB001E Error code -1 from function:" SQLConnect " ldapdb2b .
12/06/2011 12:58:24 0 0 SQL8000N DB2START processing failed; a valid product license was not found.
SQL1032N No start database manager command was issued. SQLSTATE=57019
当时就把焦点集中在了DB2的许可上面了。这里用到了db2的日志,位置是/export/home/idsldap/sqllib/db2dump/db2diag.log
但是发现用db2的用户idsldap登录进去,db2的命令行无法使用了,总是报一个错误:
DB21016E The Command Line Processor encountered a system error while sending the command to the backend process.
因为看到网上提出的添加license的办法是通过db2licm来添加,就开始致力于解决这个问题,对db2不熟,因此希望通过db2命令行来添加,找了半天也没找到解决办法。最后找到一个直接添加的方法:
/opt/IBM/db2/V8.1/adm/db2licm -a /mnt/cdrom/db2/license/db2pe.lic
就通过root用户添加了,再次启动,发现这个问题在日志里面变成warning CPU许可的数量的问题了。就不理了。
第二阶段,再次启动LDAP,还是不行,查看db2diag报错:
FUNCTION: DB2 Common, Security, Users and Groups, secLogMessage, probe:20
DATA #1 : String, 44 bytes
check password failed with rc = -2146500507
后来记起来,可能是portal配置文件wpconfig.properties中的idsldap的密码与这个系统的不相符,于是passwd idsldap,再次启动发现不报这个错误了。
第三阶段:再次启动LDAP,查看db2的日志,已经没有错误,但是还是不能启动,启动的地方报错显示:
Failed to initialize be_config.
GLPSRV040E Error encountered. Server starting in configuration only mode.
再次查看LDAP的日志文件:/export/home/idsldap/idsslapd-idsldap/logs/db2cli.log 发现其中提示"SQL1092N "IDSLDAP " does not have the authority to perform the requested command。同时联想到在db2的命令行里面用idsldap用户来执行db2start也显示没有权限,觉得有可能是idsldap权限不对,也就是所属的用户组不对,于是把他添加到了idsldap用户组里面。执行果然正常启动了。
最后,db2命令行的问题还是没有办法执行,也没有解决,看来不影响db2的使用,先这样吧。这个错误中db2diag中的记录是:
INSTANCE: idsldap NODE : 000 FUNCTION: DB2 UDB, command line process, clp_send_bpreq, probe:4 MESSAGE : Error returned from SQLOWQUE:
DATA #1 : Hexdump, 4 bytes 0xFFBFE3B4 : 870F 003E
在命令行中是:DB21016E The Command Line Processor encountered a system error while sending the command to the backend process.
第四阶段:客户把原来的服务器修好了,需要切换回去。结果LDAP又出错了:
启动ldap时显示:Error code -1 from function:" SQLAllocEnv "
查看db2的日志显示:DB2 UDB, base sys utilities, sqleInitApplicationEnvironment, probe:32
查看相关文章都说是环境文件,可就是找不到问题。hostname和/etc/hosts以及/export/home/idsldap/sqllib/db2nodes.cfg下面的主机名称都一样
抱着试试看的想法,切换到db2管理员用户执行db2命令行提示:SQL6031N Error in the db2nodes.cfg file at line number "0". Reason code "11"。用这个为线索,找到一些文章提示:1)查看DB2端口. db2 get dbm cfg|grep -i svcename 2)然后去/etc/services找上面命令找到服务和对应的端口号。结果我的/etc/services文件里面空空如野,找到问题了!原来/etc/services用了个空的(很少内容),没有db2和ldap需要的端口,用户从北方中恢复了这个文件,正常启动了。
记录下这个过程,希望对后面解决问题的童鞋有所帮助,呵呵。
相关参考文档:http://space.itpub.net/6126/viewspace-700890
http://www.ibm.com/developerworks/cn/aix/library/au-ldapconfg/