您可以通过以下方式监视 HADB 的活动:
以下各节简要介绍了 hadbm status、hadbm deviceinfo 和 hadbm resourceinfo 命令。有关 HADB 信息的说明,请参见《Sun Java System Application Server 9.1 Performance Tuning Guide》中的“Performance”。
使用 hadbm status 命令显示数据库或其节点的状态。该命令语法为:
hadbm status [--nodes] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 操作数指定数据库名称。默认值为 hadb。
--nodes 选项(短形式 -n)显示了数据库中每个节点的信息。有关更多信息,请参见节点状态。有关其他命令选项的说明,请参见常规选项。
有关更多信息,请参见 hadbm-status(1)。
例如:
hadbm status --nodes
数据库的状态汇总了其当前情况。下表介绍了数据库的可能状态。
表 3–14 HADB 状态
数据库状态 |
说明 |
---|---|
高可用性容错 (High-Availability Fault Tolerant, HAFaultTolerant) |
数据库具有容错能力,并且在每个 DRU 中至少有一个备用节点。 |
容错 |
所有镜像节点对均启动并且正在运行。 |
可操作 |
每个镜像节点对中至少有一个节点正在运行。 |
不可操作 |
一个或多个镜像节点对中的双方均缺少节点。 如果数据库处于不可操作状态,请清除数据库,如清除数据库所述。 |
已停止 |
数据库中没有正在运行的节点。 |
不明 |
无法确定数据库的状态。 |
通过 --nodes 选项使 hadbm status 命令显示数据库中每个节点的以下信息:
节点的角色和状态可以更改,如以下各节中所述:
在创建节点过程中为节点指定了角色,并且节点可以具有以下角色之一:
活动:存储数据并允许客户机访问。活动节点位于镜像对中。
备用:允许客户机访问,但不存储数据。初始化数据设备之后,监视其他数据节点以启动修复(如果另一个节点变为不可用)。
脱机:节点的角色更改之前不提供任何服务。重新联机后,其角色可以更改为以前的角色。
关闭:活动和脱机的中间步骤,等待备用节点接管其工作。备用节点接管之后,将使节点脱机。
节点可处于以下状态之一:
正在启动:节点正在启动。
正在等待:节点无法决定其启动级别并已脱机。如果一个节点处于此状态的时间超过两分钟,则停止该节点,然后在 repair 级别启动该节点;请参见停止节点、启动节点和清除数据库。
正在运行:节点正在提供与其角色相应的所有服务。
正在停止:节点处于停止过程中。
已停止:节点已不活动。禁止修复已停止的节点。
正在恢复:正在恢复节点。节点出现故障时,镜像节点将接管故障节点的工作。故障节点将尝试使用主内存中或磁盘上的数据和日志记录进行恢复。故障节点使用镜像节点的日志记录来恢复到出现故障时所执行的事务。如果恢复成功,节点将成为活动节点。如果恢复失败,节点状态将更改为正在修复。
正在修复:正在修复节点。此操作将重新初始化节点,并复制镜像节点的数据和日志记录。修复比恢复所需时间要长。
监视 HADB 数据(磁盘存储)设备的空闲空间:
按照例程,要检查磁盘空间使用的趋向。
作为预防性维护的一部分:如果用户负载已增加,并且您希望重新调整数据库配置的大小或比例。
作为增大数据库的一部分:运行 hadbm addnodes 将新节点添加到系统之前,检查是否有足够的设备空间。请记住,要添加节点您需要现有节点所占的大约 40-50% 的空闲空间。
当您在历史文件和 server.log 文件中看到如下消息时
No free blocks on data devices
No unreserved blocks on data devices 。
使用 hadbm deviceinfo 命令获取关于数据设备上空闲空间的信息。该命令显示了数据库每个节点的以下信息:
分配的总设备大小,以 MB 为单位 (Totalsize)。
空闲空间,以 MB 为单位 (Freesize)。
设备当前的使用率 (Usage)。
该命令语法为:
hadbm deviceinfo [--details] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 操作数指定数据库名称。默认值为 hadb。
--details 选项显示了以下其他信息:
设备的读取操作数目。
设备的写入操作数目。
设备的名称。
有关其他命令选项的说明,请参见常规选项。
有关更多信息,请参见 hadbm-deviceinfo(1)。
要确定用户数据的可用空间,请用总设备大小减去为 HADB 保留的空间:即四倍的 LogBufferSize + 1% 的设备大小。如果不知道日志缓冲区的大小,请使用命令 hadbm get logbufferSize。例如,如果总设备大小为 128 MB,LogBufferSize 为 24 MB,则用户数据的可用空间为 128 – (4 x 24) = 32 MB。32 MB 中一半用于已复制的数据,大约百分之一用于索引,只有百分之二十五用于实际用户数据。
总大小和保留大小之间的差额为用户数据的可用空间。如果将来对数据进行重新分段,则空闲大小必须为用户数据可用空间的大约 50%。如果不进行重新分段,则可以最大限度地利用数据设备。如果系统在设备空间不足的情况下运行,则资源消耗警告将被写入历史文件。
有关调节 HADB 的更多信息,请参见 Sun Java System Application Server Performance Tuning Guide。
以下命令:
hadbm deviceinfo --details
显示以下示例结果:
NodeNO Totalsize Freesize Usage NReads NWrites DeviceName 0 128 120 6% 10000 5000 C:\Sun\SUNWhadb\hadb.data.0 1 128 124 3% 10000 5000 C:\Sun\SUNWhadb\hadb.data.1 2 128 126 2% 9500 4500 C:\Sun\SUNWhadb\hadb.data.2 3 128 126 2% 9500 4500 C:\Sun\SUNWhadb\hadb.data.3
hadbm resourceinfo 命令显示了 HADB 运行时资源信息。使用此信息有助于识别资源争用并减少性能瓶颈。有关详细信息,请参见《Sun Java System Application Server 9.1 Performance Tuning Guide》中的“Tuning HADB”。
该命令语法为:
hadbm resourceinfo [--databuf] [--locks] [--logbuf] [--nilogbuf] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 操作数指定数据库名称。默认值为 hadb。
下表介绍了 hadbm resourceinfo 的特殊命令选项。有关其他命令选项的说明,请参见常规选项。
有关更多信息,请参见 hadbm-resourceinfo(1)。
表 3–15 hadbm resourceinfo 命令选项
选项 |
说明 |
---|---|
-d |
显示数据缓冲池信息。 有关更多信息,请参见以下数据缓冲池信息。 |
-l |
显示锁信息。 有关更多信息,请参见以下锁信息。 |
-b |
显示日志缓冲区信息。 有关更多信息,请参见以下日志缓冲区信息。 |
-n |
显示节点内部日志缓冲区信息。 有关更多信息,请参见以下节点内部日志缓冲区信息。 |
数据缓冲池信息包含:
NodeNo:节点编号。
Avail:池中的总可用空间,以 MB 为单位。
Free:可用的空闲空间,以 MB 为单位。
Access:从数据库启动到现在,访问数据缓冲区的累积次数。
Misses:从数据库启动到现在,缺页发生的累积次数。
Copy-on-Write:由于检查点操作而复制到数据缓冲区内部的累积页面数。
当用户事务在记录上执行操作时,包含该记录的页面必须在数据缓冲池中。如果该页面不在数据缓冲池中,则发生 miss 或缺页。然后事务必须等待,直到从磁盘的数据设备文件中检索到该页面。
如果未命中率很高,则增加数据缓冲池。由于未命中次数是累积的,请定期运行 hadbm resourceinfo,并使用两次运行结果的不同查看未命中率的趋向。如果空闲空间很小,请勿考虑运行该命令,因为检查点机制将使新块可用。
例如:
NodeNO Avail Free Access Misses Copy-on-Write 0 256 128 100000 50000 10001 256 128 110000 45000 950 |
锁信息如下:
NodeNo:节点编号。
Avail:节点上可用的锁的总数目。
Free:空闲锁数目。
Waits:等待获得锁的事务的数目。该数目是累积的。
一个事务无法使用节点上超过 25% 的可用锁。因此,大规模执行操作的事务应注意到该限制。最好成批执行此类事务,其中每批都必须被视为一个独立事务,即分批提交。需要这样做的原因是,读取操作(在 repeatable read 隔离层运行)以及 delete、insert 和 update 操作使用仅在事务终止后才被释放的锁。
要更改 NumberOfLocks,请参见清除和归档历史文件。
例如:
NodeNO Avail Free Waits 0 50000 20000 101 50000 20000 0 |
日志缓冲区信息为:
NodeNo:节点编号
Available:为日志缓冲区分配的内存容量(以 MB 为单位)
Free:空闲内存容量(以 MB 为单位)
如果空闲空间很小,请勿担心,因为 HADB 可以启动日志缓冲区压缩。HADB 从环状缓冲区的头部开始压缩,并在连续日志记录上执行。当 HADB 遇到尚未由节点执行并且尚未由镜像节点接收的日志记录时,压缩无法继续进行。
例如:
NodeNO Avail Free 0 16 21 16 3 |
节点内部日志缓冲区信息为:
节点编号
可用:为日志设备分配的内存容量(以 MB 为单位)
空闲:空闲内存容量(以 MB 为单位)
例如:
NodeNO Avail Free
0 16 21 16 3