安装版本:timesten112190.linux8664
一:安装过程
1.1 系统参数设置
需要使用root登录在 /etc/sysctl.conf文件中设置参数
net.ipv4.tcp_rmem=4096 4194304 4194304
net.ipv4.tcp_wmem=98304 4194304 4194304
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.ipv4.tcp_window_scaling=1
net.ipv4.ip_local_port_range="1024 65000"
如果同台机子上安装了oracle 那么重复的参数可以不再设置
1.2 创建安装用户
# groupadd ttadmin
# useradd -G ttadmin tt
# passwd tt
然后创建安装文件夹,此文件夹名称和位置必须如下:
# mkdir /etc/TimesTen
设置文件夹属主
# chown –R tt:ttadmin /etc/TimesTen
# chmod –R 775 /etc/TimesTen
# chgrp -R ttadmin /etc/TimesTen
1.3 下载gz安装文件,并放置在timesten文件夹下并解压
Tar –xzf 文件名
1.4 设置tt安装用户.bash_profile文件
export ORACLE_BASE=/opt/oracle/app/oracle
export ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export TIMESTEN=/home/tt/TimesTen/tt1122
export LD_LIBRARY_PATH=$TIMESTEN/lib:$ORACLE_HOME/lib
export PATH=$TIMESTEN/bin:$ORACLE_HOME/bin:$PATH:$HOME/bin
unset USERNAME
根据实际oracle安装路径和tt安装路径进行修改
1.5 安装tt
进入解压文件夹linux8664
以tt用户运行安装脚本
./setup.sh
安装过程会有很多选项需要用户选择,请根据实际情况进行选择。一般都选择默认。 二: 配置DNS 2.1 创建用户 在安装结束后,在命令行中输入: [yleesun@centos src]$ ttisql tt_1121 Copyright (c) 1996-2011, Oracle. All rights reserved. Type ? or "help" for help, type "exit" to quit ttIsql. connect "DSN=tt_1121"; Connection successful: DSN=TT_1121;DataStore=/etc/TimesTen/tt1121/info/TT_1121;DatabaseCharacterSet=US7ASCII;ConnectionCharacterSet=US7ASCII;DRIVER=/etc/TimesTen/tt1121/lib/libtten.so;TypeMode=0; (Default setting AutoCommit=1) Command> 则连接成功! 接下来,要创建用户! Command> create user svc identified by svc; 给用户授权。 Command> grant all to svc; 2.2 配置本地DNS (直接连接TT,却别与CS模式连接) 安装完成后,在$TIMESTEN/info/sys.odbc.ini文件中,生成默认的DNS,默认的名称是TT_1121,此名称可以根据需要修改。 ############################################################# [TT_1121] Driver=/etc/TimesTen/tt1121/lib/libtten.so DataStore=/etc/TimesTen/tt1121/info/TT_1121 DatabaseCharacterSet=US7ASCII UID=svc ##指定连接时使用到用户名 ##################################################################### 修改完成后,再次使用命令连接TT: [yleesun@centos src]$ ttisql tt_1121 Copyright (c) 1996-2011, Oracle. All rights reserved. Type ? or "help" for help, type "exit" to quit ttIsql. connect "DSN=tt_1121"; Enter password for 'svc': Connection successful: DSN=TT_1121;UID=svc;DataStore=/etc/TimesTen/tt1121/info/TT_1121;DatabaseCharacterSet=US7ASCII;ConnectionCharacterSet=US7ASCII;DRIVER=/etc/TimesTen/tt1121/lib/libtten.so;TypeMode=0; (Default setting AutoCommit=1) Command> 需要输入用户到密码。 2.3 配置作为客户端方式连接TT 首先需要在$TIMESTEN/info/sys.odbc.ini配置DNS,如下: [tt_196] ## 本地 DNS 名称 TTC_SERVER=tt_196 ## tt 服务端所在机器,此信息在下面将做说明。 TTC_SERVER_DSN=tt_1122 ## tt 服务端DNS名称 UID=svc ## 用户id 在$TIMESTEN/info/sys.ttconnect.ini配置tt服务端IP和端口,如下: [tt_196] ## 此名称要和上面的TTC_SERVER指定的一致 Description=TimesTen Server ## 描述信息,随便填写 Network_Address=192.168.15.196 ## tt 服务端IP TCP_PORT=53397 ## tt 服务端服务端口 查看TT服务端口命令:ttstatus [yleesun@centos src]$ ttstatus; TimesTen status report as of Tue Jul 31 10:09:45 2012 Daemon pid 2019 port 53388 instance tt1121 TimesTen server pid 2027 started on port 53389 ------------------------------------------------------------------------ Data store /etc/TimesTen/tt1121/info/TT_1121 There are no connections to the data store Replication policy : Manual Cache Agent policy : Manual PL/SQL enabled. ------------------------------------------------------------------------ Accessible by group tt End of report 三:编程指南 测试程序 #define TT_64BIT // 如果在64位操作系统上使用,切忌别忘了在代码里加上这个宏,不然编译不过。 #include "ttclasses/TTConnection.h" #include "ttclasses/TTCmd.h" #include "ttclasses/TTStatus.h" #include <iostream> using namespace std; int show(TTConnection* conn,TTStatus st); int main() { TTCmd cmd; TTStatus stat; try{ TTConnection _connTT; _connTT.Connect("DSN=TT_1121;pwd=svc",stat); if(_connTT.isConnected()) cout << "connect ok!" << endl; else cout<<" connect failed!"<<endl; int aid = -1; cout<<"before insert."<<endl; aid = show(&_connTT,stat); cmd.Prepare(&_connTT,"insert into REL_ANALOG_E(ANALOG_ID,EQUIP_ID,XTU_ID,MEASPOINT_ID) values(:P1,:P2,:P3,:P4)",stat); aid+=1; int eid = 3; int xid = 3; int mid = 1; cmd.setParam(1,aid); cmd.setParam(2,eid); cmd.setParam(3,xid); cmd.setParam(4,mid); cmd.Execute(stat); _connTT.Commit(stat); cmd.Close(stat); cout<<"insert one record successfully!"<<endl; cmd.Prepare(&_connTT,"select ANALOG_ID from REL_ANALOG_E",stat); cmd.Execute(stat); aid = -1; cout<<"after insert."<<endl; aid = show(&_connTT,stat); } catch(TTError st) { cout<<st.err_msg<<endl; } return 0; } int show(TTConnection* conn,TTStatus stat) { int aid = -1; TTCmd cmd; try{ cmd.Prepare(conn,"select ANALOG_ID from REL_ANALOG_E",stat); cmd.Execute(stat); while(cmd.FetchNext(stat) == 0) { cmd.getColumn(1,&aid); cout<<aid<<endl; } } catch(TTError st) { cout<<st.err_msg<<endl; } cmd.Close(stat); return aid; } 编译命令: [yleesun@centos src]$ g++ -I$TT_ROOT/include -L$TT_ROOT/lib -lttclasses -o test test.cpp 运行:./test [yleesun@centos src]$ ./test connect ok! before insert. 100 101 102 103 104 105 106 107 注: 如果在编译时出现类似下面的错误,则原因时,在代码里面没有定义宏:TT_64BIT,在代码里加上此宏,问题解决。 /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:365: error: ‘void TTCmd::getColumn(int, SQLBIGINT*, TTStatus&)’ cannot be overloaded /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:353: error: with ‘void TTCmd::getColumn(int, long int*, TTStatus&)’ /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:366: error: ‘bool TTCmd::getColumnNullable(int, SQLBIGINT*, TTStatus&)’ cannot be overloaded /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:355: error: with ‘bool TTCmd::getColumnNullable(int, long int*, TTStatus&)’ /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:367: error: ‘void TTCmd::getColumn(int, SQLBIGINT*)’ cannot be overloaded /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:357: error: with ‘void TTCmd::getColumn(int, long int*)’ /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:368: error: ‘bool TTCmd::getColumnNullable(int, SQLBIGINT*)’ cannot be overloaded /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:359: error: with ‘bool TTCmd::getColumnNullable(int, long int*)’ /home/yleesun/3rd/TimesTen/include/ttclasses/TTCmd.h:484: error: ‘void TTCmd::getNextColumn(SQLBIGINT*, TTStatus&)’ cannot be overloaded 结束!!!