数据存储器互斥存取

消息传递引擎对其数据存储器建立锁定以便它可对其中存储的数据进行互斥存取。此过程确保数据存储器内数据的完整性。注意,在实践中,有几个因素会对独占访问锁定产生影响。

每个消息传递引擎都会对其数据存储器建立互斥锁定。消息传递引擎运行时,它会维护该锁定以确保数据存储器中数据的完整性。

数据存储器锁定会使用数据库锁定,因此它是数据存储器本身的内在部分。关系数据库管理系统 (RDBMS) 依靠 JDBC 基础结构或底层 TCP/IP 协议来指示消息传递引擎或应用程序服务器的故障。然后,RDBMS 可自动释放数据库中的数据存储器锁定。

对消息传递引擎与其数据存储器的数据库服务器之间的网络连接进行活动状态检查的频率是允许集群中正在运行的消息传递引擎进行快速故障转移的重要因素。当在集群中运行的消息传递引擎配置为在服务器之间进行故障转移时,可能必须减少数据库服务器上的 TCP/IP 保持活动参数以将可检测到消息传递引擎故障之前的时间缩至最短。

数据存储器中的 SIBOWNER 表将锁定保存为一行中的一对唯一标识。当消息传递引擎启动时,它使用这两个标识来获得并维护它的互斥锁定:

MEUUID
消息传递引擎的唯一标识,即使消息传递引擎停止并重新启动,此标识也保持不变。
INCUUID
消息传递引擎的化身标识,消息传递引擎每次启动时该标识都会更改。

这些标识确定哪个消息传递引擎在使用数据存储器。这些标识还确定消息传递引擎的运行实例是否在它运行期间维护了它的互斥锁定。

数据存储器锁定进程中使用的另一个表是 SIBOWNERO 表。此表仅用于锁定,不会在其 EMPTY_COLUMN 列中存储任何数据。

消息传递引擎启动时,它先获取针对 SIBOWNERO 表的互斥表锁定。随即消息传递引擎获得对 SIBOWNER 表的互斥表锁定,并继续检查内容。消息传递引擎期望在该表找到一行数据或找不到数据。如果存在现有行,那么仅当消息传递引擎找到与它自己的唯一标识匹配的 MEUUID 时,它才启动。如果该 MEUUID 不匹配,那么消息传递引擎将错误消息 CWSIS1535 写入服务器的错误日志,且消息传递引擎启动失败。

如果 SIBOWNER 表没有数据行,那么消息传递引擎插入包含它自己的 MEUUID 和 INCUUID 的一行数据。如果表中有一行数据且 MEUUID 与消息传递引擎的唯一标识匹配,那么消息传递引擎会用自己的化身标识更新 INCUUID,并尝试获取对 SIBOWNER 表的新共享表锁定。如果另一个服务器上的同一个消息传递引擎的另一个实例同时正在启动,那么该消息传递引擎再次检查 INCUUID 是否仍与它自己的化身标识匹配。如果表中的 INCUUID 不匹配,那么该消息传递引擎启动失败。

针对 SIBOWNER 表的共享表锁定保持到消息传递引擎停止为止,并定期刷新以确保锁定仍然有效。随即针对 SIBOWNERO 表的互斥表锁定被释放。如果消息传递引擎不能刷新对 SIBOWNER 表的锁定,或者根据 SIBOWNER 表中的数据发现另一个消息传递引擎化身正在使用数据存储器,那么消息传递引擎会将消息 CWSIS1594 写入服务器错误日志,然后消息传递引擎立即停止。

在许多情况下,将消息传递引擎配置为在集群中运行时,如果消息传递引擎不能获取锁定,那么该消息传递引擎会停止并且无法故障转移至集群中的另一服务器。在这些情况下,必须检查错误日志,原因是停止消息传递引擎指示该消息传递引擎不安全或不能使用当前数据存储器配置进行启动。有关可能发生故障的情况和可找到的可能解决方案的描述,请参阅对数据存储器独占访问锁定问题进行诊断


指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cjm0450_
文件名:cjm0450_.html