第二部分 DB2
关于本部分
DB2作为一个流行的RDBMS(关系型数据库管理系统)和DTP模式下(分布式事务处理模型)的资源管理器,可以与TXSeries协同工作。数据可以被DB2高效地管理,用户仅仅需要考虑如何连接DB2并保证数据的完整性。本部分将介绍三种连接类型的概念:non-XA(非XA协议提交)、XA single phase(XA协议一阶段提交)和XA two phase(XA协议两阶段提交)和一些相关知识。也会进一步介绍如何配置TXSeries通过XA协议连接DB2 。
1. 三种连接类型
用户可以根据具体情况选择三种连接类型与资源管理器通信。下面将具体介绍每种连接类型的区别和应用场景。
(1)XA协议一阶段提交
一阶段提交意味着TXSeries直接发布提交/回滚来一次性完成交易。TXSeries完成连接、断开、提交和回滚操作并确保数据完整性,而不需要应用程序通过SQL命令来显式执行。TXSeries和数据库中的任何数据更新显式地通过EXEC CICS SYNCPOINT命令提交(或者隐式地通过EXEC CICS RETURN命令提交)。
当一个交易中仅有一个资源管理器时可以使用XA协议一阶段提交。它比两阶段提交性能更好。
(2)XA协议两阶段提交
两阶段提交意味着在阶段一,TXSeries将请求资源管理器做好准备;在阶段二,将发布提交/回滚命令来完成交易。TXSeries扮演和XA协议一阶段提交时相同的角色,并将做更多工作以保证多个数据库中数据的一致性——这就是为什么一阶段提交有更好的性能。
当多于一个资源管理器与TXSeries协同工作时,使用XA协议两阶段提交。
(3)非XA协议提交
不同于XA协议,在非XA协议连接中,应用程序需要通过SQL命令完成包括连接、断开、提交和回滚在内的所有工作。如果出现任何错误,数据应该被手动恢复以保证完整性。
只在性能比资源完整性和交易原子性(例如:只读)更重要时,或者应用程序已经包含用于连接、断开、提交和回滚的SQL命令时使用非XA协议提交。
在多数情况下XA协议连接是保证数据完整性的更好选择,因为大多数重要的工作已经被TXSeries完成。
2. SYNCPOINT介绍
EXEC CICS SYNCPOINT命令定义一个同步点,它可以标记一个逻辑工作单元(LUW)的完成。在执行这个命令后,除非ROLLBACK选项被指定,否则可恢复资源的修改会被提交。
同步点类似于游戏中的存档点——LUW中的资源更新会在这个点被保存(提交)。但是如果 SYNCPOINT后跟着ROLLBACK选项,这点之前的所有改变将会回退到上一个同步点——你的游戏进展会丢失,你必须在最后一次保存游戏的点继续开始。
参阅:
3. Switch load file
如果RM(资源管理器)安装在默认目录下,TXSeries已经提供了一些可以和这些RM协同工作的switch load file。32位的库会被安装,RM版本是可以被支持的最旧的版本。
如果出现XA错误,应该重新编译switch load file。
参阅:
到此为止,已经介绍了一些有用的基本概念。接下来配置TXSeries连接DB2,并通过示例应用测试连接。确保服务器机器上安装了DB2服务器,客户端机器上安装了DB2客户端。
以下列出本部分实验中的环境:
服务器:
Linux x86_64
DB2 Enterprise Server Edition V10.5(DB2_Svr_10.5.0.1_Linux_x86-64.tar)
Server name:oc5832702872(9.119.154.229)
客户端:
Linux x86_64
DB2 Client V10.5(DB2_DSClient_V10.5_Linux_x86-64.tar)
TXSeries for Multiplatforms 8.1.0
IBM CICS Transaction Gateway Desktop Edition Version 9.0.0.1
4. 在服务器端配置数据库
为了测试是否一切正常,我们需要创建一个数据库并向其中添加一些数据。
(1)使用db2inst1用户启动DB2实例
#su – db2inst1
#db2start
(2)创建一个名为test1的数据库
#db2 create database test1
(3)连接数据库test1
#db2 connect to test1
(4)使用SQL命令创建表并添加数据
#db2 “create table student(id int,name varchar(30),age int)”
#db2 “insert into student values(1,’Tom’,22)”
#db2 “insert into student values(2,’Jack’,21)”
#db2 “insert into student values(3,’Marry’,23)”
(5)查看数据库中的记录
#db2 “select * from student”
结果如下:
ID NAME AGE
———– ————————– ———–
1 Tom 22
2 Jack 21
3 Marry 23
参阅:
关于DB2的知识中心:
5. 配置服务器端环境
(1)在cics组中创建cics用户
这是客户端访问DB2服务器所需的用户,稍后将在XAOpen字符串中找到它,XAOpen字符串中定义了连接数据库所必需的属性。
#su root
#groupadd cics
#useradd -g cics cics
#passwd cics
示例中密码为passw0rd
(2)为cics用户赋予访问数据库的合适权限
为了方便测试应用程序中不同的命令(如果需要也可以测试数据位于不同的表中), 此处赋予cics在整个数据库中连接和数据访问的权限。所以cics用户可以连接数据库并进行插入、更新、删除和读取数据等操作。
#su db2inst1
#db2 “grant connect on database to user cics”
#db2 “grant dataaccess on database to user cics”
参阅:
关于grant:
(3)配置TCP/IP服务和端口
在/etc/services文件中添加如下的服务记录:
db2c_db2inst1 50000/tcp
示例中客户端将从DB2服务器的50000端口进行连接,不要忘记在防火墙中启用这个端口。
然后使用下列命令更新数据库管理器的TCP/IP服务名称:
#db2 update dbm cfg using svcename db2c_db2inst1
现在,重启DB2以更新配置。
#db2stop
#db2start
参阅:
关于更新svcename:
6. 客户端配置
(1)为远程数据库添加一个节点(node)和数据库别名(alias)
为了使TXSeries通过XA协议与DB2通信,客户端需要添加一个节点和数据库别名。
首先向节点目录中添加一个TCP/IP数据库分区服务器记录(node1)用来识别服务器的地址(9.119.154.229)和端口(50000)。
#db2 catalog tcpip4 node node1 remote 9.119.154.229 server 50000
然后在上面的节点中添加数据库别名——这个别名会出现在XAOpen字符串中,作为被连接的数据库的名称。
以下文章点击率最高
Loading…