Sun Java System Application Server Enterprise Edition 8.2 发行说明

高可用性

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

使用双网络时的 HADB 配置。(无 ID)

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

HADB 数据库创建失败。(无 ID)

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

说明

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

解决方法

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

共享的内存段已锁定且无法调出。(ID 5052548)

说明

HADB 4.3-0.16 及更高版本被配置为在创建并附加到其共享内存段时使用锁定共享内存(使用 SHM_SHARE_MMU 标志)。使用此标志实质上是将共享内存段锁定到物理内存中,防止它们被调出。这很容易导致在低端计算机上安装时出现问题。

因此,如果开发者的计算机装有 512MB 的内存,并且在使用 Application Server 7.0 EE 时具有大量的可用交换空间,然后安装了 7.1 EE 或更高版本,则该开发者在配置默认的 clsetup 群集时会遇到问题(将创建两个 HADB 节点,每个节点的 devicesize512,这将导致没有足够的物理 RAM,无法支持这两个节点所需的共享内存)。

解决方法

在同时使用 Application Server 和 HADB 时,请确保具有推荐的内存量。有关更多信息,请参见HADB 要求和支持的平台

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

说明

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

解决方法

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

不支持 packagepath 的异构路径。(ID 5091349)

说明

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


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) 在所有参与的主机上都相同。

createdomain 可能会失败。(ID 6173886、6253132)

说明

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


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 标识)中的所有文件和目录。必须先在所有主机上执行此操作,然后才能用新配置文件重新启动代理。

删除 HADB 实例后需要清除目录。(ID 6190878)

说明

删除 HADB 实例后,接下来尝试使用 configure-ha-cluster 命令创建新实例会失败。问题在于 ha_install_dir/rep/*ha_install_dir/config/hadb/instance_name 中保留了原始 HADB 实例的旧目录。

解决方法

在删除 HADB 实例后务必手动删除这些目录。

启动、停止和重新配置 HADB 可能会失败或挂起(ID 6230792、6230415)

说明

在 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

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

管理代理终止并产生异常“IPV6_MULTICAST_IF 失败”。(ID 6232140)

说明

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

解决方法

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


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

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

clu_trans_srv 无法中断。(ID 6249685)

说明

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

解决方法

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

hadbm 不支持包含大写字母的密码。(ID 6262824)

说明

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

解决方法

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

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

说明

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

解决方法

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

安装/删除和 symlink 保留。(ID 6271063)

说明

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

解决方法

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

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

说明

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

解决方法

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

当会话对象在 MA 上已超时并被删除时,hadbm/ma 应该提供更准确的错误消息。(ID 6275103)

说明

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

解决方法

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

非超级用户无法管理 HADB。(ID 6275319)

说明

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

解决方法

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

管理代理不应使用特殊用途的接口。(ID 6293912)

说明

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

解决方法

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

在 Windows 上重组失败。(ID 6291562)

说明

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

解决方法

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

运行 hadbm start <db_name> 时,输入的部分密码将显示而不被屏蔽。(ID 6303581、6346059、6307497)

说明

当计算机处于负载状态时可能会出现此情况,此时屏蔽机制会失败,并且部分正在输入的密码会公开出来。这会导致较小的安全风险,密码应该始终以屏蔽方式显示。

解决方法

将密码保存在其各自的密码文件中(从 Application Server 8.1 开始通常推荐的方法),并使用 --adminpassword--dbpasswordfile 选项引用这些文件。

JES5 HADB 安装于全局区域中,从稀疏本地区域无法访问 (ID 6460979)

说明

将 Application Server 安装到 Solaris 全局区域的 /usr/SUNWappserver 中后,与此 Application Server 实例一起安装的 HADB 组件在稀疏本地区域中不可用。

此问题在于 HADB 安装到全局区域的 /opt/SUNWhadb 中,而从稀疏本地区域不可读取此目录。遗憾的是,JES5 中的 HADB 包不可重定位。

解决方法

由于 Application Server HADB 组件不可重定位,因此 HADB 组件必须分别安装在您要通过其访问 HADB 的每个稀疏本地区域中。