第三种情况是这样的:
最开始,是突然DB2的客户端连接不上server了,提示如下:
QUOTE:
C:\Documents and Settings\Administrator>db2 connect
to fjdldw user install using install3211
SQL30081N 检测到通信错误。正在使用的通信协议:"TCP/IP"。正在使用的通信API:
"SOCKETS"。检测到错误的位置:"10.142.12.1"。检测到错误的通信函数:"connect"。协
议特定的错误代码:"10061"、"*"、"*"。 SQLSTATE=08001
我本来还以为真是什么TCP/IP协议的问题,去查找了很多与SQL30081N错误相关的信息,都无法解决问题。后来到了在服务器上检查,发现DB2实例未起来。
用db2start命令,仍是提示:
QUOTE:
D:\Program\SQLLIB\BIN>db2start
12/30/2004 11:28:39 0 0 SQL1042C 发生意外的系统错误。
SQL1032N 未发出启动数据库管理器的命令。 SQLSTATE=57019
用db2 get dbm cfg查看配置文件,因未作过其他操作,所以没有什么异常
查看相应实例下的db2diag.log文件,摘取真正有用的部分出错日志:
QUOTE:
Failed to create the memory segment used for
communication with fenced routines.
If re-starting db2, ensure no db2fmp processes
were on the instance prior to start. Otherwise,
you can ajust this value through DB2_FMP_COMM_HEAPSZ
db2set value, or by decreasing your ASLHEAPSZ setting.
依据
QUOTE:
ensure no db2fmp processes were
on the instance prior to start
将任务管理器里的db2fmp进程全部杀掉,然后重新启动实例。db2start,OK!
小结:后来查了一查,db2fmp进程用于执行受保护的存储过程,或者自定义函数。这次出错的原因,一直没有弄清楚。但是,通过这次解决,可以说明一点,出了错误,查查db2diag.log文件,总是不会错的。