(4)修改region環境變量文件
環境變量文件(environment)在region的根目錄下,下面的變量應該根據實際情況添加到文件中。
ORACLE_HOME=/usr/local/oracle
ORACLE_SID=MYDB
(5)編譯示例應用程序
oracletest.pc、oracletest.mk和env_c.def文件位於”/Unit 3/Part5 Oracle/“目錄下。用戶可以隨意修改oracletest.pc中的嵌入式SQL命令。
oracletest.mk將oracletest.pc中的源代碼預編譯為C代碼,將後綴改為”.ccs“,然後運行”cicstcl“來翻譯、編譯和連接應用程序,類似於DB2示例中的makefile。
運行下列命令生成示例應用程序:
make -f oracletest.mk
(6)添加PD和TD
#cicsadd -cpd -r oracle oratest PathName=oracletest RSLKey=public
#cicsadd -ctd -r oracle ORA1 ProgName=oratest
現在就可以通過運行交易ORA1來測試應用程序,並查看返回值是否正確。
(7)冷啟動region
首先,確保所有的oracle環境變量是有效的。
#. /home/oracle/.bash_profile
然後運行冷啟動命令。
#cicscp -v start region oracle StartType=cold
如果一切運行正常,將在console.nnnnnn文件中看到下列日誌:
ERZ080088I/0801 10/29/14 22:29:17.870013000 oracle 13774/0001 : XA OPEN submitted for Server 101 connected to ‘Oracle Single Phase’ using XA_OPEN string ‘Oracle_XA+SQLNET=MYDB+Acc=P/scott/######+SesTm=35+LogDir=/tmp/cics/oracle+DbgFl=1’
ERZ080006I/0801 10/29/14 22:29:20.358823000 oracle 13774/0001 : XA_OPEN succeeded:
Application Server 101 connected to ‘Oracle Single Phase’ using XA_OPEN string ‘Oracle_XA+SQLNET=MYDB+Acc=P/scott/######+SesTm=35+LogDir=/tmp/cics/oracle+DbgFl=1’
ERZ080089I/0801 10/29/14 22:29:20.358895000 oracle 13774/0001 : XA OPEN completed for Server 101 connected to ‘Oracle Single Phase’ using XA_OPEN string ‘Oracle_XA+SQLNET=MYDB+Acc=P/scott/######+SesTm=35+LogDir=/tmp/cics/oracle+DbgFl=1’
4. 注意
(1)在通過sqlplus命令更新、刪除和插入數據後,應該執行提交命令 。否則,應用程序不能修改那些數據,因為在修改被提交前它們是鎖定的。
(2)時刻注意,在執行需要Oracle環境變量支持的操作之前運行”/home/oracle/.bash_profile“文件。
5. 練習
根據本部分中的步驟配置TXSeries 連接Oracle,並通過執行應用程序進行測試。
TXSeries入門系列文章–單元三
數據管理
五部分 Oracle
三單元 數據管理
第五部分 Oracle
關於本部分
除了DB2,Oracle是另一個常用的數據庫。所以在本部分,將會介紹TXSeries通過XA協議連接Oracle數據庫的所有指令,並提供一個應用程序進行測試。大多數步驟和DB2的配置相似,所以如果用戶已經完成了前一部分的內容,完成本部分將非常容易。開始前請確保Oracle的服務器和客戶端已經成功地安裝。
1. Oracle服務器配置
在服務器端,需要完成數據庫的準備工作,包括啟動數據庫、創建示例視圖、解鎖用戶並賦予權限。關於Oracle命令的詳細信息不會在本部分提及,可以通過Oracle提供的文檔查看。
(1)啟動監聽器和數據庫
#lsnrctl start
#sqlplus /nolog
SQL>conn /as sysdba
SQL>startup
(2)使用sys用戶運行示例SQL命令創建 支持XA協議的視圖
SQL>conn sys as sysdba
SQL>@/home/oracle/app/oracle/product/12.1.0/dbhome_1/rdbms/admin/xaview.sql
(3)賦予適當的權限
SQL>grant select on v$xatrans$ to public with grant option;
SQL>grant select on v$pending_xatrans$ to public with grant option;
SQL>grant select on scott.emp to scott;
SQL>grant select on dba_pending_transactions to scott;
(4)解鎖scott用戶
本部分使用示例賬戶scott通過XA協議連接數據庫服務器,首先需要解鎖scott賬戶。
SQL>alter user scott account unlock
2. Oracle客戶端配置
(1)修改tnsnames.ora文件
為了連接Oracle服務器,需要在tnsnames.ora文件中定義連接信息。這個文件在”/usr/local/oracle“目錄下。如下對它進行編輯:
MYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 9.119.154.229)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
)
)
MYDB是本地數據庫名稱,將在XAOpen字符串中使用;HOST的值是服務器機器的地址;PORT是服務器將要監聽的端口,默認值是1521;SID的值是在安裝Oracle服務器時指定的全局數據庫名稱。
請記住在防火牆中啟用端口1521。
(2)使用scott用戶連接服務器並查看稍後將使用的示例數據
首先以用戶scott的身份使用本地數據庫名稱MYDB連接全局數據庫orcl
#sqlplus /nolog
SQL>conn scott@MYDB
Enter password:tiger
Connected.
然後通過SQL命令選擇表”emp“中的所有記錄。
SQL>select * from emp;
將會獲得如下的記錄(分區內容):
EMPNO ENAME JOB MGR HIREDATE SAL COMM
————– ————– ————– ————– ————- ————– ————–
DEPTNO
————–
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0
30
7876 ADAMS CLERK 7788 23-MAY-87 1100
20
7900 JAMES CLERK 7698 03-DEC-81 950
30
3. region配置
(1)創建一個名為oracle的region
#cicscp -v create region oracle
(2)編譯switch load file
TXSeries 在”/opt/ibm/cics/examples/RM_support/Oracle“目錄中為用戶提供了switch load file源代碼和makefile文件。複製文件”oracle1pc.pc“和”oracle1pc.mk“到region的bin目錄下。
a. 如下修改oracle1pc.mk文件的前兩行:
ORA_PRECOMP = $(ORACLE_HOME)/sdk/proc
LD_FLAGS_oracle = -L$(ORACLE_HOME) -lclntsh -R$(ORACLE_HOME)
或者根據具體環境編輯它們,這取決於Oracle客戶端的安裝位置。
b. 編輯預編譯配置文件pcscfg.cfg
文件位於”$(ORACLE_HOME)/precomp/admin/“目錄,oracle預編譯器會讀取其中的變量,所以必須根據實際系統適當地設置其中的內容,否則可能出現錯誤。例如本部分示例中的內容為:
sys_include=(/usr/local/oracle/sdk/include,/usr/lib64/gcc/x86_64-suse-linux/4.3/include,/usr/include) ltype=short
如果用戶的環境不同,請參考下列網站決定變量的選取。
參閱:
http://stackoverflow.com/questions/325826/oracle-10-2-proc-precompiler-not-reading-header-file
c.在switch load file中添加“#include <string.h>“語句
在oracle1pc.pc文件開頭添加”#include <string.h>“,否則可能收到關於函數中字符串不兼容的警告。
以下文章點擊率最高
Loading…