当 WebSphere® Business Monitor 尝试处理 AIX® 平台上的事件时,返回 SQL 错误。在启动或事件处理期间,WebSphere 初始化数据库连接失败时,也会返回 SQL 错误。 该故障的原因是由于 IBM® DB2® 可用的共享内存段数量的操作系统强制性限制。
Test connection failed for data source MonitorDataSource on server server1 at node Node01 with the following exception: java.lang.Exception: java.sql.SQLException: SQL1224N A database agent could not be started to service a request, or was terminated as a result of a database system shutdown or a force command. SQLSTATE=55032 DSRA0010E: SQL State = 55032, Error Code = -1,224.
当发生该错误时,您必须更改 DB2 配置,增加共享内存段的数量。当前,恢复专家不支持定义 具有回送的 DB2 别名 以避免发生共享内存问题。
解决方案
# Local addition to fix AIX shared memory problem: EXTSHM=ON export EXTSHM
db2set DB2ENVLIST=EXTSHM
该命令设置每个实例中的 DB2 概要文件变量,在启动时,使 EXTSHM 环境变量的值包含在 DB2 守护进程的环境中。 在每个实例的 db2profiles 中定义 EXTSHM(在登录时执行),确保在任何实例所有者环境中设置变量。 最后,将其放入 /etc/rc.db2 中,确保启动过程中,启动 DB2 过程时,设置变量。最后,重新启动系统以确保所有 DB2 过程在其环境中以 EXTSHM=ON 启动。
if [ -x $INSTHOME/sqllib/adm/db2set ] then if [ "`$INSTHOME/sqllib/adm/db2set DB2ENVLIST`" != "EXTSHM" ] then $INSTHOME/sqllib/adm/db2set DB2ENVLIST=EXTSHM fi fi该代码会使第一次使用新实例时,设置 DB2ENVLIST 实例概要文件变量。
EXTSHM=ON export EXTSHM