《TimesTenODBC应用开发.ppt》由会员分享,可在线阅读,更多相关《TimesTenODBC应用开发.ppt(109页珍藏版)》请在三一办公上搜索。
1、TimesTen ODBC 应用开发,zhaojunfeng 2008-03-14,2007-Proprietary and Confidential Information of Amdocs.Security Level Classification-Sensitive,Agenda,ODBC 程序结构如何使用ODBC句柄实现 SQL Statements异常捕捉性能方面考虑其他建议,2,ODBC 程序流程,CLOSE option,DROP option,ODBC 应用的句柄,Environment 句柄初始化 ODBC 调用接口ODBC 方法:SQLAllocEnv()和 SQLFre
2、eEnv()Connection 句柄存储数据源连接信息ODBC 方法:SQLAllocConnect()和 SQLFreeConnect()隐式分配一个特定的 Environment 句柄Statement 句柄存储SQL statement 信息ODBC 方法:SQLAllocStmt()和 SQLFreeStmt()隐式分配一个特定的 Connection 句柄,使用 ODBC 应用句柄,statement 句柄只能在初始阶段分配一次,并在结束阶段释放.在使用多线程编程中,statement 和 connection 句柄 应该属于线程结构体内.句柄不能用于多线程并发运行,如果想实现在多
3、个线程在不同的时间访问同一个句柄,那么应用必须通过一些信号量等方式的机制来实现。,SQL Statement 执行流程,SQLPrepareSQLBindParameterSQLExecute,Yes,Initialize,Terminate,If more processing,SQLFreeStmt,If repeat,No,SQLTransact,Repeatable Execution?,SQLBindParameterSQLExecDirect,绑定参数缓存,只需要Prepare 或者编译 SQL statements 及内建procedures一次,然后执行或者调用多次。尽量使用参
4、数化statements,在运行期使用变量方式来应用SQL statements和内建 procedure。一旦statement被prepared,尽快绑定参数和列变量。在程序开始的时候申明/分配一次需要用到的变量。变量属于全局范围的。如果使用到多线程,变量申明在线程内部。,绑定参数缓存示例,#define CHARLEN 20SQLINTEGER intBuf,nullData=SQL_NULL_DATA;SQLCHAR charBufCHARLEN;SQLFLOAT floatBuf;rc=SQLPrepare(hStmt,(SQLCHAR*)“insert into student.t
5、ab values(?,?,?)”,SQL_NTS);rc=SQLBindParameter(hStmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,0,0,C 和 SQL 数据类型的绑定映射,SQL_CHAR,SQL_INTEGER(unsigned),SQL_C_CHAR,SQL_C_TIME,SQL_C_DATE,SQL_C_BINARY,SQL_C_BINARY,SQL_C_BINARY,SQL_C_DOUBLE,SQL_C_DOUBLE,SQL_C_FLOAT,SQL_C_CHAR,SQL_C_ULONG,SQL_VARCHAR,SQL_LON
6、GVARCHAR,SQL_DECIMAL,SQL_NUMERIC,SQL_BIT,SQL_TINYINT(signed),SQL_TINYINT(unsigned),SQL_SMALLINT(signed),SQL_SMALLINT(unsigned),SQL_INTEGER(signed),SQL_BIGINT,SQL_REAL,SQL_FLOAT,SQL_DOUBLE,SQL_BINARY,SQL_VARBINARY,SQL_LONGVARBINARY,SQL_DATE,SQL_TIME,SQL_TIMESTAMP,SQL_C_CHAR,SQL_C_CHAR,SQL_C_CHAR,SQL_
7、C_CHAR,SQL_C_BIT,SQL_C_STINYINT,SQL_C_UTINYINT,SQL_C_SSHORT,SQL_C_USHORT,SQL_C_SLONG,SQL_C_TIMESTAMP,ODBC 异常捕捉,所有 ODBC 方法都会有一个返回代码确保程序中已经捕捉!如果返回代码是SQL_ERROR 或者SQL_SUCCESS_WITH_INFO,那么调用ODBC方法 SQLError()获取详细信息获取(TimesTen)本地错误代码和错误信息获取 SQLSTATE(ODBC 错误代码),#define ERRMSGLEN 255SQLUCHAR sqlstate6;SQLINT
8、EGER native_error=0;SQLUCHAR ErrorMsgERRMSGLEN;SQLSMALLINT cbErrorMsg;rc=SQLError(hEnv,hDbc,hStmt,sqlstate,应用性能方面考虑(1/3),使用TimesTen ODBC直连方式会获得最佳性能尽量多次执行Prepare statements可以避免没有必要的参数重复绑定可使用 SQLBindCol()来代替 SQLGetData()这样可以减少运行期系统表锁的占用时间尽量避免数据转换尽量使用定长数据类型,应用性能方面考虑(2/3),尽量避免ALTER TABLE 操作 更新优化统计表尽量利用你
9、创建的索引尽量使用短交易来减少锁冲突有规则的进行checkpoint操作有规则的进行backups操作(如果使用增量备份,那么这个操作尤为重要),其他建议,检查连接属性配置文件(/.odbc.ini 文件).检查表的所属者owners.方法调用顺序或者游标状态不正确往往是应用程序不正确的信号。游标都和特定的statement句柄关联,(隐式和connection句柄关联)Transactions和特定的 connection 句柄关联如果statements 或者 connections 是跨线程共享的,那么需要应用来避免方法调用顺序和游标状态错误。,检查点和日志文件,Oracle Times
10、Ten定期将数据存储区和事务日志的更改写入磁盘如果需要恢复数据存储区,Oracle TimesTen将把磁盘上的数据存储区检查点与仍位于日志文件中的已完成事务合并在一起检查点和日志文件使用普通的磁盘文件系统,Replication TimesTen to TimesTen,Replication TimesTen to TimesTen是 Oracle TimesTen In-Memory Database的一个选项,它支持服务器间的实时数据复制,以获得高可用性和负载共享。数据复制可以是双机热备份(active-standby)或负载均衡(active-active)数据复制可以使用异步或同步
11、传输,数据复制可以包含冲突检测和冲突解决以及在故障服务器恢复后自动重新同步。,复制代理,Replication,配置复制后,将为每个数据存储区启动复制代理进程。如果为复制而配置了同一服务器上的多个数据存储区,则每个数据存储区将有一个单独的复制代理每个复制代理能够向一个或多个用户服务器发送更新,并从一个或多个主服务器那里接收更新复制代理通过 TCP/IP流套接字进行通信,Cache Connect to Oracle,Cache Connect to Oracle 是 Oracle TimesTen In-Memory Database的一个选项,它为位于应用程序层中的 Oracle 磁盘数据创
12、建实时、可更新的高速缓存Cache Connect to Oracle 能够将 Oracle 磁盘数据的子集加载到 TimesTen中,能够双向传播更新Cache Connect to Oracle 能够使对非高速缓存数据的 SQL请求的透传自动化Cache Connect to Oracle 能够在故障之后自动重新同步数据,Cache Connect to Oracle,高速缓存组是由一个或多个通过主键/外键关系以逻辑层次结构排列的表的集合。高速缓存组中的每个表都与 Oracle 数据库表相关一个高速缓存组表可以包含相关 Oracle 表中的所有行和列或行和列的一个子集可以通过 SQL语句创
13、建和修改高速缓存组,Cache Connect to Oracle,高速缓存组支持以下特性:应用程序可以对高速缓存组执行读取和写入操作可以自动或手动刷新高速缓存组(将 Oracle 数据库数据置于高速缓存组中)可以自动或手动清理高速缓存组(将高速缓存更新传播到 Oracle 表)可以自动跟踪对 Oracle 表或高速缓存组的更改,多种灵活的cache group,A.只读的cache group,定时把Oracle数据刷新到TimesTen里面,TimesTen里面的数据是只读的.可以通过改变PassThrough的属性,把对TimesTen的数据变更到Oracle里面,然后再通过Oracle
14、刷新到TimesTen里面B.同步的cahe group,写TimesTen的数据会先同步更新完Oracle数据库然后再更新到TimesTenC.异步的cache group,直接更新到TimesTen里面,TimesTen定时通过replication agent把数据批量更新到Oracle里面。如果Oracle当了,等Oracle起来后,TimesTen会自动同步到Oracle上面。D.用户管理的cahe group,用户自定义刷新,加载,卸载等。,TimesTen对行业标准的支持,支持多种操作系统,比如Linux,AIX,Solaris,Windows,HP-Unix等32位或者64位操
15、作系统支持用户的权限和认证管理,支持create user,grant,revoke操作没有tablespace的概念,使用的DSN的概念,没有存储过程,函数,嵌入式c支持多种常用的字符集,如ZHS16GBK,UTF8,US7ASCII等,TimesTen对行业标准的支持,支持常用的数据对象,比如table,index,view,materialized view,sequence支持常用的数据类型,比如number,char,varchar2,date等支持sql92标准来进行DDL操作,比如create table,drop table,或者是改变对象属性比如alter table 等支持
16、标准DML语法,如select,insert,update,delete,truncate,Timesten安装(hp平台),1.内核参数调整semmns是系统内系统用户可用的IPC信号总数,设置为大于或者等于4096(或8192等,推荐公式SEMMNS=SEMMNU=(SEMMNI*SEMMSL)shmmax 最大的共享内存段,以字节为单位,一般设置为内存的实际大小64位机上检测目录是否支持大文件系统(如果要设置DataStore大于2G,就必须设置大文件系统):#fsadm-F vxfs/dir_name设置大文件系统#/usr/sbin/fsadm-F xvfs-o largefiles
17、/dir_name,Timesten安装,2.目录,用户及组增加组TimesTen(也可通过sam):#groupadd g 600 TimesTen增加用户timesten并加入到sys,TimesTen组中:#useradd-u 600-g TimesTen-G sys d/ttinstall/TimesTen timesten 如果有Oracle安装组的话,也可以现在把timesten用户加入到Oracle安装组dba中,因为Cache Group需要对Oracle目录有访问的权限,Timesten安装,相关目录:#mkdir/etc/TimesTen#chmod 775/etc/Tim
18、esTen#chgrp R TimesTen/etc/TimesTen#chown R timesten:TimesTen/etc/TimesTen/etc/TimesTen目录用于TimesTen实例的注册,Timesten安装,3.FTP到需要安装TimesTen的主机上的一个目录,要求可用空间在500M以上,然后解包:tar xvf timesten604.hp64ipf.tar4.解包后会在当前目录下生成hp64ipf/目录,执行该目录下面的setup.sh命令 5.输入Instance name6.选择产品类型Oracle TimesTen In-Memory Database:完全
19、的内存数据库,和oracle数据库没有关系Cache Connect to Oracle:从oracle数据库cache数据到TimesTen内存数据库;也支持直接在内存数据库中建立实体表。,Timesten安装,7.选择组件 1 Client/Server and Data Manager2 Data Manager Only3 Client Only Client/Server 模式下的三个选择:客户端、服务器端、客户端+服务器端 8.选择安装路径9.选择TimesTen Daemon 监听端口,默认为 17000,Timesten安装,10.设置Access Control Access
20、 Control 提供了一个对TimesTen的初级的权限保护功能,它只是对谁能通过正常的途径(比如ttisql、JDBC及ODBC)访问到相应的Data Store做了初级的限制;并不是说,它对在操作系统级别上对Data Store的文件 以及 Log 文件的访问做除了安全保障。比如 root 用户,即使它不是TimesTen的用户,root用户可以做他想做的任何事情,比如删除Data Store文件等。所以安装的时候一定要注意,一般建议设置为 yes,Yes时才允许TimesTen创建新的用户,Timesten安装,11.设置Cache Connect to Oracle12.后面按照提示
21、默认安装,TimesTen 系统变量,下列为TimesTen安装之后,可能需要设置的系统变量:1.LIB、LIBPATH、LD_LIBRARY_PATH、SHLIB_PATH:指向TimesTen所用到的共享库,即$INSTALL_DIR/LIB 目录;如用到Cache Group,还需包含$ORACLE_HOME/LIB,不同的平台该变量的名字各有差异:SOLARIS LD_LIBRARY_PATHAIX LIBPATHHP-UX 32Bit SHLIB_PATHHP-UX 64Bit LD_LIBRARY_PAT($INSTALL_DIR/LIB)SHLIB_PATH($ORACLE_HO
22、ME/LIB)Tru64 UNIX LD_LIBRARY_PATH,TimesTen 系统变量,2.CLASSPATH:如用到JDK,则需要设置该变量指向相应的Jar文件目前支持的JDK有 JDK1.4、JDK5.0、BEAWeblogic Jrockit 5.03.ODBCINI:指向.odbc.ini 配置文件。当用户连接TimesTen的时候,TimesTen会按照下面的顺序查找相关的配置文件:1.环境变量ODBCINI所指向的.odbc.ini文件2.运行TimesTen的用户主目录下的.odbc.ini 文件3.环境变量SYSODBCINI所指向的 文件(非root用户才会执行该步)
23、,TimesTen 系统变量,ORACLE_HOME指向Oracle 数据库的安装目录,如果要用到Cache Group,该变量必须设置 PATH指向TimesTen的bin 目录,即$INSTALL_DIR/bin;如果用到Cache Group的话,还要包含Oracle的bin目录SYSODBCINI指向 配置文件,具体说明见 ODBCINI,TimesTen 系统变量,SYSTTCONNECTINI:当用Client/Server 模式访问TimesTen的时候,该变量指向客户端的 配置文件。客户端查找配置文件的顺序是:1.环境变量SYSTTCONNECTINI所指向的 配置文件。2./
24、3.$INSTALL_DIR/info/(非root用户安装)TMP/TMPDIR:指向TimesTen的临时目录。TimesTen的某些操作,比如ttRepAdmin duplicate、大的删除等会用到临时目录。该参数缺省设置为:HP-UX 和AIX 是/var/tmp;而Solaris、Linux、Tru64 UNIX 则是/tmp,TimesTen 使用(1)-启动和关闭,TimesTen 安装完之后,缺省是已经起来了的启动TimesTen:ttdaemonadmin-start 关闭TimesTen:ttdaemonadmin stop关闭TimesTen前,建议先断开所有连接Tim
25、esTen的应用,如果启动了Cache Agent和Replication Agent,建议也都先停掉,TimesTen 使用(1)-启动和关闭,ps-ef|grep timesten/tstenv/timeten/TimesTen/tt70/bin/timestend/tstenv/timeten/TimesTen/tt70/bin/timestenws/tstenv/timeten/TimesTen/tt70/bin/timestensubd/tstenv/timeten/TimesTen/tt70/bin/timestensubd/tstenv/timeten/TimesTen/tt70
26、/bin/timestensubd/tstenv/timeten/TimesTen/tt70/bin/timestensubd,TimesTen 使用(1)-启动和关闭,ttstatusTimesTen status report as of Wed Dec 5 11:12:54 2007Daemon pid 24468 port 18001 instance tt70TimesTen server pid 24474 started on port 18003TimesTen webserver pid 24473 started on port 18005-Data store/tsten
27、v/timeten/TimesTen/tt70/info/IOMSThere are no connections to the data storeReplication policy:ManualCache agent policy:Manual-Access control enabled.End of report,TimesTen 使用(1)-启动和关闭,缺省的有:TimesTen的后台守护进程(timestensubd)TimesTen的主守护进程(Daemon)Client/Server中的Server守护进程 TimesTen的一个WebServer 进程,TimesTen 使
28、用(2)-增加数据库用户,安装好系统后,系统有个自带的DSN,和access control结合起来用,一般创建用户,变更密码,授予权限等相关权限、用户控制在这个DSN来做对于需要权限控制,创建用户等,安装的时候要把access control 安装上,如果安装的时候没有安装上,那么可以等安装后执行:ttmodinstall enableAccessControlttmodinstall也可以重新指定监控的port端口,重新设置环境变量ORACLE_HOME可以使用 ttmodinstall h 来查看该功能的使用,TimesTen 使用(2)-增加数据库用户,TimesTen支持的创建后用户
29、的权限有下面几种1.Admin2.Connect3.create datastore4.ddl5.write6.select,TimesTen 使用(2)-增加数据库用户,$ttisql TT_tt70_trainCommand create user tt_train identified by tt_train;Command grant ddl,admin to tt_train;Command grant write to tt_train;Command grant SELECT to tt_train;Command quit,TimesTen 使用(3)-DataStore 介绍
30、,DataStore 是指TimesTen中的表、索引等放在内存段中的一个集合,类似与Oracle中库的概念一个TimesTen Data Manager可以管理多个DataStoreDataStore由放在相应ODBC配置文件中的一个DSN(Data Source Name)所定义,该DSN由一个名字和相关的属性组成,如下:名为TT_tt70_train的 DataStore的定义,DataStore 介绍,ODBC Data SourcesTT_tt70_train=TimesTen 7.0 DriverTT_tt70_trainDriver=/tstenv/timeten/zjf/Tim
31、esTen/tt70_train/lib/libtten.soDataStore=/tstenv/timeten/zjf/TimesTen/tt70_train/info/TT_tt70_trainDatabaseCharacterSet=US7ASCIIPermSize=50TempSize=10,DataStore 介绍,ODBC配置文件分为两种:系统级ODBC文件(可通过环境变量SYSODBCINI另行设置)和用户级ODBC配置文件(可通过环境变量ODBCINI另行设置)。系统级的ODBC可以被任何用户所引用,而用户级的只能被该用户所引用。系统级的ODBC文件在Windows平台下可以通
32、过控制面板-ODBC数据源管理-系统DSN 定义;而UNIX平台下,则一般是通过定义文件$INSTALL_DIR/完成,DataStore 介绍,当用户连接一个DataStore的时候,TimesTen会按照下面的顺序查找配置文件:1.环境变量ODBCINI所指的.odbc.ini文件2.运行TimesTen的用户主目录下的.odbc.ini 文件3.环境变量SYSODBCINI所指的 文件4./5.$INSTALL_DIR/info/(非root用户才会执行该步)$INSTALL_DIR为TimesTen的安装目录,DataStore 介绍,在上面的 TT_tt70_train 定义里面,有
33、两个重要的属性:Driver=/tstenv/timeten/zjf/TimesTen/tt70_train/lib/libtten.so 指操作该数据源所需要的驱动DataStore=/tstenv/timeten/zjf/TimesTen/tt70_train/info/TT_tt70_train 指的是放置Checkpoint文件的磁盘地址TimesTen虽然运行的时候将所有的数据都预先装载在内存中,但它也有自己的数据文件、日志文件等,DataStore 介绍,数据文件叫checkpoint 文件,是TimesTen内存中数据在磁盘上的一个镜像,相当于Oracle数据库中的数据文件DBF
34、TimesTen会在一定条件下自动做Check point,它会将内存中的脏数据和磁盘上的数据文件做增量同步。当首次登陆到该DSN,或者TimesTen异常中止/失败时,TimesTen需要这些读取这些文件做恢复,DataStore 介绍,下面是DataStore TT_tt70_train 在磁盘上的相应文件:$pwd/tstenv/timeten/zjf/TimesTen/tt70_train/info$ls-al|grep TT_tt70_train-rw-rw-rw-1 timeten users 14785240 Dec 5 18:46 TT_tt70_train.ds0-rw-rw
35、-rw-1 timeten users 14785240 Dec 5 18:38 TT_tt70_train.ds1-rw-rw-rw-1 timeten users 753664 Dec 5 18:46 TT_tt70_train.log0-rw-rw-rw-1 timeten users 67108864 Dec 5 18:28 TT_tt70_train.res0-rw-rw-rw-1 timeten users 67108864 Dec 5 18:28 TT_tt70_train.res1-rw-rw-rw-1 timeten users 67108864 Dec 5 18:28 TT
36、_tt70_train.res2,DataStore 介绍,针对TT_tt70_train这个DataStore,磁盘上对应由两个checkpoint 文件,TT_tt70_train.ds0,TT_tt70_train.ds1一个日志文件,TT_tt70_train.log0三个保留文件(reservation)TT_tt70_train.res0,TT_tt70_train.res1,TT_tt70_train.res2,Checkpoint文件,针对Checkpoint文件,TimesTen会以DataStore属性的最后一节为文件名,创建相应的Checkpoint文件TimesTen每
37、次做Checkpoint的时候,会轮换着写这两个文件,每次都写较旧的那个,所以在某些时间段内,这两个文件不是完全一致的。每次做Checkpoint的时候,TimesTen先在这两个文件之间做一个同步,然后把最新的更新,写到旧的Checkpoint文件中。为什么不同时写入两个文件呢?如果同时往两个文件写入,而写入过程发生异常,会导致两个文件同时被损坏,带来灾难性的后果,TimesTen如何创建日志文件和保留文件呢?,在ODBC配置文件里面,通过属性 LogDir 来定义日志文件,没有显式设置LogDir时,日志文件将和Checkpoint文件位于同一目录下,且以DataStore属性中定义的目录
38、的最后一节为文件名,后缀中按数字序列递增命名,例如TT_tt70_train.log0,TT_tt70_train.log1。等。具体定义了LogDir后,日志文件将位于该目录下,且以该属性值所指向的目录的最后一节为文件名,例如:,Checkpoint文件,LogDir=/tstenv/timeten/zjf/TimesTen/tt70_train/log此时,TimesTen将在目录/tstenv/timeten/zjf/TimesTen/tt70_train/log 下创建名为TT_tt70_traincache的日志和保留文件日志文件会和保留文件始终位于同一个目录下强烈建议将日志文件和C
39、heckpoint文件分开放在不同磁盘上,且处于不同的磁盘控制器下,以尽量减少磁盘IO的影响,保留文件,保留文件始终和日志文件位于同一目录下,它的大小由属性LogFileSize定义。缺省的LogFileSize是64M当由于某些原因导致文件系统没有空余的磁盘空间时,如果没有保留文件,TimesTen将无法运行下去,因为事务的提交不可避免地导致日志文件的增长,但此时已没有任何可用于增长的磁盘空间,从而导致TimesTen处于静止状态,在此状态下,只允许读操作而不允许写操作,保留文件,保留文件是作为溢出缓冲空间使用的,它们被预先创建,当磁盘空间都被用光时,TimesTen会利用这些保留文件作为一
40、个缓冲,从而完成最终的一些事务,避免TimesTen进入静止状态创建三个保留文件的原因是因为在绝大多数情况下,三个保留文件被证明是最优的选择,TimesTen 使用(4)-DataStore配置,非root用户安装时,TimesTen的配置文件为$文件中。下面是安装后的这个文件缺省内容,这一段是TimesTen的所有属性值,是我们配置的一个很好参考#Authenticate=1(client/server only)只用于Client/Server模式,当Server端该值设置为1时,只有提供了UID和Password的客户端连接才能访问该DSN,如果Access如果Access Contro
41、l已经设置,则Authenticate必须设置为1。本地访问,即直连方式则忽略该参数#AutoCreate=1 当连接一个不存在的DataStore时,是否自动创建它#CkptFrequency(if Logging=1 then 600 else 0)#CkptLogVolume=0 CkptFrequency/CkptLogVolume为Checkpoint的触发条件,当任何一个被触发时,TimesTen 将做Checkpoint操作,TimesTen 使用(4)-DataStore配置,#CkptRate=0(0=rate not limited)#ConnectionCharacter
42、Set(if DatabaseCharacterSet=TIMESTEN8 then TIMESTEN8 else US7ASCII)#ConnectionName(process argv0)#Connections=64#DatabaseCharacterSet(no default),TimesTen 使用(4)-DataStore配置,#Diagnostics=1定义诊断信息的记录粒度0为关闭诊断信息。1为基本诊断信息#DurableCommits=0日志是否被实时同步到磁盘上。0为异步方式,1为实时同步#ForceConnect=0#GroupRestrict(none by def
43、ault)#Isolation=1(1=read-committed,0=serializabl)#LockLevel=0(0=row-level locking)#LockWait=10(seconds)#Logging=1(1=write log to disk)#LogAutoTruncate=1,TimesTen 使用(4)-DataStore配置,#LogBuffSize=65536(measured in KB)#LogDir(same as checkpoint directory by default)#LogFileSize=64(measured in MB)#LogFlu
44、shMethod=0控制TimesTen同步或者写日志到日志文件的方式。0为使用前一次的设置值;1为批同步的方式(缺省);2为实时同步的方式#LogPurge=1 是否自动清除不用的日志文件#MatchLogOpts=0 是否使用第一次连接DataStore时logging/logpurge的值,0为使用;1为忽略第一次连接时的值,而是使用当前连接的特有的值#MemoryLock=0(HP-UX,Linux,and Solaris platforms only)#NLS_LENGTH_SEMANTICS=BYTE#NLS_NCHAR_CONV_EXCP=0#NLS_SORT=BINARY#Ov
45、erWrite=0,TimesTen 使用(4)-DataStore配置,#PermSize=2(measured in MB;default is 2 on 32-bit,4 on 64-bit)永久内存区域的大小,即DataStore的大小#PermWarnThreshold=90#Preallocate=0#PrivateCommands=0#PWD(no default)#PWDCrypt(no default)#RecoveryThreads=1#SQLQueryTimeout=0(seconds),TimesTen 使用(4)-DataStore配置,#Temporary=0(da
46、ta store is permanent bydefault)#TempSize(measured in MB;default is derived from PermSize,but is always at least 6MB)分配的临时内存区域大小,与PermSize对应,类似与Oracle 的临时表空间#TempWarnThreshold=90#TypeMode=0(0=Oracle types)#UID(operating system user ID)#WaitForConnect=1,TimesTen 使用(4)-DataStore配置,#Oracle Loading Attr
47、ibutes#OracleID(no default)Cache Group的时候,所连接到的Oracle数据库的用户ID#OraclePWD(no default)#PassThrough=0 0所有的SQL只是在TimesTen执行 1 SQL(除了Insert、Delete、Update及DDL之外)将被PassThrough 到Oracle中执行,如果该SQL执行时产生语法错误,如果Insert、Delete及Update操作的目标表在TimesTen不存在,则将被将被PassThrough到Oracle中执行。注意:此时不包括DDL。2同1,加上 如果Insert、Update及De
48、lete针对的是ReadOnly Cache Group,且符合1的描述,也将被PassThrough到Oracle中执行 3所有的SQL(除了Commit、Rollback、Savepoint及TimesTen独有的设置其优化器参数的内置存储过程)都被PassThrough到Oracle#RACCallback=1#TransparentLoad=0(0=do not load data),TimesTen 使用(4)-DataStore配置,#Client Connection Attributes#ConnectionCharacterSet(if DatabaseCharacterSe
49、t=TIMESTEN8 then TIMESTEN8 else US7ASCII)#ConnectionName(process argv0)#PWD(no default)#PWDCrypt(no default)#TTC_Server(no default)C/S 模式时,Client定义的逻辑Server名#TTC_Server_DSN(no default)C/S 模式时,Client指定所要连接的Server DSN名#TTC_Timeout=60#UID(operating system user ID),TimesTen 使用(4)-DataStore配置,这个往下是具体的Dat
50、aStore的配置,已经配好的是TimesTen的Demo程序要用到的DataStoreTT_tt70Driver=/home/tt1/TimesTen/tt70/lib/libtten.soDataStore=/home/tt1/TimesTen/tt70/info/TT_tt70DatabaseCharacterSet=US7ASCII。,TimesTen 使用(4)-DataStore配置,每个ODBC数据源的驱动器的类型说明,是直连(Direct)还是C/S模式 TT_tt70=TimesTen 7.0 DriverTpcbData_tt70=TimesTen 7.0 DriverTp