timesten在Centos6-64下从安装到编程实战

安装版本: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

结束!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值