(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…