Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Update 2 发行说明

高可用性

本节介绍已知的高可用性数据库 (HADB) 问题和相应的解决方法。

错误号 

摘要 

无 ID 

使用双网络时的 HADB 配置 

使用两个子网上的双网络进行配置的 HADB 可以在 Solaris SPARC 上正常工作。但是,由于操作系统或网络驱动程序在某些硬件平台上的问题,已发现在 Solaris x86 和 Linux 平台上并不总是能够正确处理双网络。这就导致 HADB 出现以下问题: 

  • 在 Linux 上,发送消息时某些 HADB 进程会被阻塞。这将导致 HADB 节点重新启动以及进行网络分区操作。

  • 在 Solaris x86 上,网络故障后会出现一些问题,导致无法切换到其他网络接口。但并不总是会发生这种情况,因此最好还是使用两个网络。这些问题在 Solaris 10 上已部分解决。

  • 不支持链路聚合。

  • 在 Windows 2003 上,HADB 不支持双网络 (ID 5103186)。

无 ID 

HADB 数据库创建失败。 

创建新数据库可能会失败并出现以下错误,说明可用的共享内存段太少: 

HADB-E-21054:系统资源不可用:HADB-S-05512:用关键字 "xxxxx" 连接共享内存段失败,操作系统状态=24,操作系统错误消息:打开的文件太多。

解决方法

请确认已配置共享内存且配置能正常工作。特别是在 Solaris 8 上,请检查文件 /etc/system,然后确定变量 shmsys:shminfo_shmseg 的值至少为每个主机的节点数的六倍。

5091280 

hadbm set 不会检查资源可用性(磁盘和内存空间)。

使用 hadbm set 增大设备或缓冲区大小时,管理系统会在创建数据库或添加节点时检查资源可用性,但在更改设备或主内存缓冲区大小时则不会检查是否有足够的可用资源。

解决方法

在增大 devicesizebuffersize 配置属性之前,确认所有主机上都有足够的可用磁盘空间/内存空间。

5091349 

不支持对 packagepath 使用异构路径。

不能在不同主机上的不同位置使用相同名称注册同一个软件包;例如: 


hadbm registerpackage test --packagepath=/var/install1 --hosts europa11
Package successfully registered.
hadbm registerpackage test --packagepath=/var/install2 --hosts europa12
hadbm:Error 22171: A software package has already been registered with 
the package name test.

解决方法

HADB 不支持数据库群集中节点之间的异构路径。确保 HADB 服务器的安装目录 (--packagepath) 在所有参与的主机上都相同。

6173886、6253132 

createdomain 可能会失败。

在具有多个网络接口的主机上运行管理代理时,如果所有网络接口不是在同一子网中,则 createdomain 命令可能会失败: 


hadbm:Error 22020: The management agents could not establish a domain, 
please check that the hosts can communicate with UDP multicast.

管理代理将(如果不是采用其他配置)使用 UDP 多址广播的“第一个”接口(“第一个”接口由 java.net.NetworkInterface.getNetworkInterfaces() 的结果定义)。

解决方法

最佳解决方法是告诉管理代理要使用哪个子网(在配置文件中设置 ma.server.mainternal.interfaces,例如,ma.server.mainternal.interfaces=10.11.100.0)。此外,也可以配置子网之间的路由器,以便路由多址广播数据包(管理代理使用多址广播地址 228.8.8.8)。

在重试管理代理的新配置之前,可能需要清除管理代理系统信息库。停止域中的所有代理,并删除系统信息库目录(由管理代理配置文件中的 repository.dr.path 标识)中的所有文件和目录。必须先在所有主机上执行此操作,然后才能用新配置文件重新启动代理。

6230792、6230415 

启动、停止和重新配置 HADB 可能会失败或挂起。 

在 Solaris 10 Opteron 上,使用 hadbm 命令启动、停止或重新配置 HADB 可能会失败或挂起,并产生以下错误消息:


hadbm:Error 22009: The command issued had no progress in the last 300 
seconds.
HADB-E-21070: The operation did not complete within the time limit, but 
has not been cancelled and may complete at a later time.

如果 clu_noman_srv 进程所使用的文件 (nomandevice) 存在不一致的读/写操作,就可能出现这种情况。通过在 HADB 历史文件中查找以下消息,可以检测到此问题:


n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 does 
not respond.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Have not heard from it in 
104.537454 sec.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 did 
not start.

解决方法

以下解决方法未经验证,原因是此问题尚未手动再现。但是,对受影响的节点运行此命令应该能解决此问题。 


hadbm restartnode --level=clear nodeno dbname

请注意,该节点的所有设备都将重新初始化。在重新初始化之前可能必须停止该节点。 

6232140 

管理代理终止并产生异常“IPV6_MULTICAST_IF 失败”

在运行 Solaris 8 且装有多个 NIC 卡的主机上启动时,如果混合启用了 IPv6 卡和 IPv4 卡,管理代理可能会终止并产生异常“IPV6_MULTICAST_IF 失败”

解决方法

将环境变量 JAVA_OPTIONS 设置为 -Djava.net.preferIPv4Stack=true;例如:


export JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

此外,也可以使用 Solaris 9 或更高版本,这些版本不会出现此问题。 

6249685 

无法中断 clu_trans_srv

在 Red Hat Enterprise Linux 3.0 的 64 位版本中有一个错误,使 clu_trans_srv 进程在执行异步 I/O 时以不可中断模式结束。这意味着 kill -9 不起作用,必须重新引导操作系统。

解决方法

使用 Red Hat Enterprise Linux 3.0 的 32 位版本。 

6262824 

hadbm 不支持包含大写字母的密码。

当密码存储在 hadb 中时,其中的大写字母会转换成小写字母。

解决方法

请勿使用包含大写字母的密码。 

6265419 

从 HADB 4.4.2.5 版降级到 HADB 4.4.1.7 版会导致 ma 失败并产生不同的错误代码。 

降级到先前的 HADB 版本时,管理代理会失败并产生不同的错误代码。 

解决方法

可以降级 HADB 数据库,但如果已经对系统信息库对象进行更改,则无法降级管理代理。在降级后,必须仍然使用来自最新 HADB 版本的管理代理。 

6271063 

安装/删除和 symlink 保留。

对于 HADB c 软件包 (Solaris: SUNWhadbc, Linux: sun-hadb-c) <m.n.u-p> 版的安装/删除,symlink /opt/SUNWhadb/<m> 在创建后不会有任何改动。因此,可能会存在孤立的 symlink

解决方法

除非正在使用 symlink,否则请在安装前或卸载后将其删除。

6273681 

全局区域和局部区域中的管理代理可能会相互干扰。 

在 Solaris 10 上,在全局区域中使用 ma-initd 脚本停止管理代理,也会在局部区域中停止管理代理。 

解决方法

请勿在全局区域和局部区域中都安装管理代理。 

6275103 

当某个会话对象超时并在 MA 处删除时,hadbm/ma 应该给出较好的错误消息。

有时,服务器上的资源争用问题可能会导致管理客户机断开连接。在重新连接时,可能会返回误导性的错误消息“hadbm:错误 22184:必须提供密码才能连接到管理代理”

解决方法

检查服务器上是否存在资源问题,采取适当的措施(例如添加更多资源),然后重试操作。 

6275319 

只有超级用户可以管理 HADB。 

与 Java Enterprise System 一起安装(以超级用户的身份)仅允许超级用户管理 HADB。 

解决方法

要管理 HADB,请始终以超级用户的身份登录。 

6293912 

管理代理不应使用特殊用途的接口。 

IP 地址类似于 0.0.0.0 的特殊用途的接口不应注册为可供管理代理中的 HADB 节点使用的接口。如果用户使用主机名称而不是 IP 地址发出 hadbm create 命令,将 HADB 节点设置到这些接口上,则注册这些接口可能会导致出现此问题。此后,节点将无法通信,从而导致 create 命令挂起。

解决方法

在具有多个接口的主机上使用 hadbm create 时,始终明确使用 DDN 表示法来指定 IP 地址。

6291562 

在 Windows 上重汇编失败。 

在具有某些配置和负载的 Windows 平台上,操作系统中可能会出现大量的重汇编失败。已经发现 20 多个节点的配置在并行运行多个表扫描 (select *) 时有此问题。症状可能是事务频繁地异常中止,修复或恢复会持续很长时间才能完成,系统的各个部分会频繁超时。

解决方法

要修复此问题,可将 Windows 注册表变量 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 设置为高于默认值 100 的值。建议将此值增大到 0x1000 (4096)。有关更多信息,请参见 Microsoft 支持页中的文章 811003