TXSeries入門系列文章8

第二部分 DB2

關於本部分

DB2作為一個流行的RDBMS(關係型數據庫管理系統)和DTP模式下(分布式事務處理模型)的資源管理器,可以與TXSeries協同工作。數據可以被DB2高效地管理,用戶僅僅需要考慮如何連接DB2並保證數據的完整性。本部分將介紹三種連接類型的概念:non-XA(非XA協議提交)、XA single phaseXA協議一階段提交)和XA two phaseXA協議兩階段提交)和一些相關知識。也會進一步介紹如何配置TXSeries通過XA協議連接DB2 

1. 三種連接類型

用戶可以根據具體情況選擇三種連接類型與資源管理器通信。下面將具體介紹每種連接類型的區別和應用場景。

1XA協議一階段提交

一階段提交意味着TXSeries直接發布提交/回滾來一次性完成交易。TXSeries完成連接、斷開、提交和回滾操作並確保數據完整性,而不需要應用程序通過SQL命令來顯式執行。TXSeries和數據庫中的任何數據更新顯式地通過EXEC CICS SYNCPOINT命令提交(或者隱式地通過EXEC CICS RETURN命令提交)。

當一個交易中僅有一個資源管理器時可以使用XA協議一階段提交。它比兩階段提交性能更好。

2XA協議兩階段提交

兩階段提交意味着在階段一,TXSeries將請求資源管理器做好準備;在階段二,將發布提交/回滾命令來完成交易。TXSeries扮演和XA協議一階段提交時相同的角色,並將做更多工作以保證多個數據庫中數據的一致性——這就是為什麼一階段提交有更好的性能。

當多於一個資源管理器與TXSeries協同工作時,使用XA協議兩階段提交。

3)非XA協議提交

不同於XA協議,在非XA協議連接中,應用程序需要通過SQL命令完成包括連接、斷開、提交和回滾在內的所有工作。如果出現任何錯誤,數據應該被手動恢復以保證完整性。

只在性能比資源完整性和交易原子性(例如:只讀)更重要時,或者應用程序已經包含用於連接、斷開、提交和回滾的SQL命令時使用非XA協議提交。

在多數情況下XA協議連接是保證數據完整性的更好選擇,因為大多數重要的工作已經被TXSeries完成。

2. SYNCPOINT介紹

EXEC CICS SYNCPOINT命令定義一個同步點,它可以標記一個邏輯工作單元(LUW)的完成。在執行這個命令後,除非ROLLBACK選項被指定,否則可恢復資源的修改會被提交。

同步點類似於遊戲中的存檔點——LUW中的資源更新會在這個點被保存(提交)。但是如果 SYNCPOINT後跟着ROLLBACK選項,這點之前的所有改變將會回退到上一個同步點——你的遊戲進展會丟失,你必須在最後一次保存遊戲的點繼續開始。

 
 

參閱:

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/reference/r_set_syncpoint.html?lang=en

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/concepts/c_synchronisation_points.html?lang=en

3. Switch load file

如果RM(資源管理器)安裝在默認目錄下,TXSeries已經提供了一些可以和這些RM協同工作的switch load file32位的庫會被安裝,RM版本是可以被支持的最舊的版本。

如果出現XA錯誤,應該重新編譯switch load file

 
 

參閱:

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/concepts/c_enblg_db_cnxn_xa_env.html?lang=en

到此為止,已經介紹了一些有用的基本概念。接下來配置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的知識中心:

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.kc.doc/welcome.html?lang=en

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

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000958.html?cp=SSEPGG_10.5.0%2F2-10-3-0-0-5&lang=en

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

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.qb.server.doc/doc/t0006065.html?lang=en

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…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營

發表評論

您的電子郵箱地址不會被公開。 必填項已用*標註