TimesTen ODBC应用开发

上传人:真** 文档编号:242987690 上传时间:2024-09-13 格式:PPT 页数:109 大小:814KB
返回 下载 相关 举报
TimesTen ODBC应用开发_第1页
第1页 / 共109页
TimesTen ODBC应用开发_第2页
第2页 / 共109页
TimesTen ODBC应用开发_第3页
第3页 / 共109页
点击查看更多>>
资源描述
108,2007 -,Proprietary and Confidential Information of Amdocs. Security Level Classification - Sensitive,Click to edit Master title style,Click to edit Master text / Arial 28,Second level / Arial 24,Third level / Arial 20,Fourth level / Arial 18,TimesTen,ODBC,应用开发,zhaojunfeng,2008-03-14,2007 -,Proprietary and Confidential Information of Amdocs. Security Level Classification - Sensitive,Agenda,ODBC,程序结构,如何使用,ODBC,句柄,实现,SQL Statements,异常捕捉,性能方面考虑,其他建议,2,ODBC,程序流程,SQLFreeStmt,SQLDisconnect,SQLFreeConnect,SQLFreeEnv,SQLAllocEnv,SQLAllocConnect,SQLConnect,SQLAllocStmt,Process SQL Statements,Receive Results,CLOSE,option,DROP option,ODBC,应用的句柄,Environment,句柄,初始化,ODBC,调用接口,ODBC,方法:,SQLAllocEnv,(),和,SQLFreeEnv,(),Connection,句柄,存储数据源连接信息,ODBC,方法:,SQLAllocConnect,(),和,SQLFreeConnect,(),隐式分配一个特定的,Environment,句柄,Statement,句柄,存储,SQL statement,信息,ODBC,方法:,SQLAllocStmt,(),和,SQLFreeStmt,(),隐式分配一个特定的,Connection,句柄,使用,ODBC,应用句柄,statement,句柄,只能在初始阶段,分配一次,,并在结束阶段,释放,.,在使用多线程编程中,,statement,和,connection,句柄,应该属于线程结构体内,.,句柄不能用于多线程并发运行,如果想实现在多个线程在不同的时间访问同一个句柄,,,那么应用必须通过一些信号量等方式的机制来实现。,SQL Statement,执行流程,SQLPrepare,SQLBindParameter,SQLExecute,Yes,Initialize,Terminate,If more processing,SQLFreeStmt,If repeat,No,SQLTransact,Repeatable Execution?,SQLBindParameter,SQLExecDirect,绑定参数缓存,只需要,Prepare,或者编译,SQL statements,及内建,procedures,一次,然后执行或者调用多次。,尽量使用参数化,statements,,在运行期使用变量方式来应用,SQL statements,和内建,procedure,。,一旦,statement,被,prepared,,尽快绑定参数和列变量。,在程序开始的时候申明,/,分配一次需要用到的变量。,变量属于全局范围的。,如果使用到多线程,变量申明在线程内部。,绑定参数缓存示例,#,define CHARLEN 20,SQLINTEGER,intBuf,nullData,= SQL_NULL_DATA;,SQLCHAR,charBufCHARLEN,;,SQLFLOAT,floatBuf,;,rc,=,SQLPrepare(hStmt,(SQLCHAR *) “insert into,student.tab,values (?,?,?)”,SQL_NTS);,rc,=,SQLBindParameter,(hStmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER, 0, 0,&,intBuf,sizeof(intBuf,), NULL);,rc,=,SQLBindParameter,(hStmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, CHARLEN, 0,charBuf, CHARLEN, SQL_NTS);,rc,=,SQLBindParameter,(hStmt,3,SQL_PARAM_INPUT,SQL_C_DOUBLE,SQL_FLOAT, 0, 0,&,floatBuf,sizeof(floatBuf,), &,nullData,);,.,rc,=,SQLExecute(hStmt,);,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_LONGVARCHAR,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_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 255,SQLUCHAR sqlstate6;,SQLINTEGER,native_error,= 0;,SQLUCHAR,ErrorMsgERRMSGLEN,;,SQLSMALLINT,cbErrorMsg,;,rc,=,SQLError,(hEnv,hDbc,hStmt,sqlstate, &,native_error,ErrorMsg, ERRMSGLEN, &,cbErrorMsg,);,应用性能方面考虑 (1/3),使用,TimesTen,ODBC,直连方式会获得最佳性能,尽量多次执行,Prepare statements,可以避免没有必要的参数重复绑定,可使用,SQLBindCol,(),来代替,SQLGetData,(),这样可以减少运行期系统表锁的占用时间,尽量避免数据转换,尽量使用定长数据类型,应用性能方面考虑,(2/3),尽量避免,ALTER TABLE,操作,更新优化统计表,尽量利用你创建的索引,尽量使用短交易来减少锁冲突,有规则的进行,checkpoint,操作,有规则的进行,backups,操作 (如果使用增量备份,那么这个操作尤为重要,),其他建议,检查连接属性配置文件,(,sys.odbc.ini,/,.,odbc.ini,文件).,检查表的所属者,owners.,方法调用顺序或者游标状态不正确往往是应用程序不正确的信号。,游标都和特定的,statement,句柄关联,,(,隐式和,connection,句柄关联,),Transactions,和特定的,connection,句柄关联,如果,statements,或者,connections,是跨线程共享的,那么需要应用来避免方法调用顺序和游标状态错误。,检查点和日志文件,Oracle,TimesTen,定期将数据存储区和事务日志的更改写入磁盘,如果需要恢复数据存储区,,Oracle,TimesTen,将把磁盘上的数据存储区检查点与仍位于日志文件中的已完成事务合并在一起,检查点和日志文件使用普通的磁盘文件系统,Replication ,TimesTen,to,TimesTen,Replication ,TimesTen,to,TimesTen,是,Oracle,TimesTen,In-Memory Database,的一个选项,它支持服务器间的实时数据复制,以获得高可用性和负载共享。,数据复制可以是双机热备份,(active-standby),或负载均衡,(active-active),数据复制可以使用异步或同步传输,,数据复制可以包含冲突检测和冲突解决以及在故障服务器恢复后自动重新同步。,复制代理,Replication,配置复制后,将为每个数据存储区启动复制代理进程。如果为复制而配置了同一服务器上的多个数据存储区,则每个数据存储区将有一个单独的复制代理,每个复制代理能够向一个或多个用户服务器发送更新,并从一个或多个主服务器那里接收更新,复制代理通过,TCP/IP,流套接字进行通信,Cache Connect to Oracle,Cache Connect to Oracle,是,Oracle,TimesTen,In- Memory Database,的一个选项,它为位于应用程序层中的,Oracle,磁盘数据创建实时、可更新的高速缓存,Cache Connect to Oracle,能够将,Oracle,磁盘数据的子集加载到,TimesTen,中,能够双向传播更新,Cache Connect to Oracle,能够使对非高速缓存数据的,SQL,请求的透传自动化,Cache Connect to Oracle,能够在故障之后自动重新同步数据,Cache Connect to Oracle,高速缓存组是由一个或多个通过主键,/,外键关系以逻辑层次结构排列的表的集合。高速缓存组中的每个表都与,Oracle,数据库表相关,一个高速缓存组表可以包含相关,Oracle,表中的所,有行和列或行和列的一个子集,可以通过,SQL,语句创建和修改高速缓存组,Cache Connect to Oracle,高速缓存组支持以下特性:,应用程序可以对高速缓存组执行读取和写入操作,可以自动或手动刷新高速缓存组(将,Oracle,数据库数据置于高速缓存组中),可以自动或手动清理高速缓存组(将高速缓存更新传播到,Oracle,表),可以自动跟踪对,Oracle,表或高速缓存组的更改,多种灵活的,cache group,A,.,只读的,cache group,,定时把,Oracle,数据刷新到,TimesTen,里面,,TimesTen,里面的数据是只读的,.,可以通过改变,PassThrough,的属性,把对,TimesTen,的数据变更到,Oracle,里面,然后再通过,Oracle,刷新到,TimesTen,里面,B.,同步的,cahe,group ,写,TimesTen,的数据会先同步更新完,Oracle,数据库然后再更新到,TimesTen,C,.,异步的,cache group,,直接更新到,TimesTen,里面,,TimesTen,定时通过,replication agent,把数据批量更新到,Oracle,里面。如果,Oracle,当了,等,Oracle,起来后,,TimesTen,会自动同步到,Oracle,上面。,D.,用户管理的,cahe,group ,用户自定义刷新,加载,卸载等。,TimesTen,对行业标准的支持,支持多种操作系统,比如,Linux,,,AIX,,,Solaris,,,Windows,,,HP-Unix,等,32,位或者,64,位操作系统,支持用户的权限和认证管理,支持,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,等,支持标准,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,/,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/,TimesTen,#,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,:完全的内存数据库,和,oracle,数据库没有关系,Cache Connect to Oracle,:从,oracle,数据库,cache,数据到,TimesTen,内存数据库;也支持直接在内存数据库中建立实体表。,Timesten,安装,7.,选择组件,1 Client/Server and Data Manager,2 Data Manager Only,3 Client Only,Client/Server,模式下的三个选择:客户端、服务器端、客户端,+,服务器端,8.,选择安装路径,9.,选择,TimesTen,Daemon,监听端口,默认为,17000,Timesten,安装,10.,设置,Access Control,Access Control,提供了一个对,TimesTen,的初级的权限保护功能,它只是对谁能通过正常的途径(比如,ttisql,、,JDBC,及,ODBC,)访问到相应的,Data Store,做了初级的限制;并不是说,它对在操作系统级别上对,Data Store,的文件 以及,Log,文件的访问做除了安全保障。比如,root,用户,即使它不是,TimesTen,的用户,,root,用户可以做他想做的任何事情,比如删除,Data Store,文件等。所以安装的时候一定要注意,一般建议设置为,yes,,,Yes,时才允许,TimesTen,创建新的用户,Timesten,安装,11.,设置,Cache Connect to Oracle,12.,后面按照提示默认安装,TimesTen,系统变量,下列为,TimesTen,安装之后,可能需要设置的系统变量:,1.,LIB,、,LIBPATH,、,LD_LIBRARY_PATH,、,SHLIB_PATH:,指向,TimesTen,所用到的共享库,即,$INSTALL_DIR/LIB,目录;如用到,Cache Group,,还需包含,$ORACLE_HOME/LIB,不同的平台该变量的名字各有差异:,SOLARIS LD_LIBRARY_PATH,AIX LIBPATH,HP-UX 32Bit SHLIB_PATH,HP-UX 64Bit LD_LIBRARY_PAT,(,$INSTALL_DIR/LIB,), SHLIB_PATH,(,$ORACLE_HOME/LIB,),Tru64 UNIX LD_LIBRARY_PATH,TimesTen,系统变量,2.,CLASSPATH,:,如用到,JDK,,则需要设置该变量指向相应的,Jar,文件,目前支持的,JDK,有,JDK1.4,、,JDK5.0,、,BEA,Weblogic,Jrockit,5.0,3.,ODBCINI,:,指向,.,odbc.ini,配置文件。当用户连接,TimesTen,的时候,,TimesTen,会按照下面的顺序查找相关的配置文件:,1.,环境变量,ODBCINI,所指向的,.,odbc.ini,文件,2.,运行,TimesTen,的用户主目录下的,.,odbc.ini,文件,3.,环境变量,SYSODBCINI,所指向的,sys.odbc.ini,文件,4./var/TimesTen/sys.odbc.ini,5.install_dir/info/sys.odbc.ini,(非,root,用户才会执行该步),TimesTen,系统变量,ORACLE_HOME,指向,Oracle,数据库的安装目录,如果要用到,Cache Group,,该变量必须设置,PATH,指向,TimesTen,的,bin,目录,即,$INSTALL_DIR/bin,;如果用到,Cache Group,的话,还要包含,Oracle,的,bin,目录,SYSODBCINI,指向,SYS.ODBC.INI,配置文件,具体说明见,ODBCINI,TimesTen,系统变量,SYSTTCONNECTINI,:,当用,Client/Server,模式访问,TimesTen,的时候,该变量指向客户端的,sys.ttconnect.ini,配置文件。客户端查找配置文件的顺序是:,1.,环境变量,SYSTTCONNECTINI,所指向的,sys.ttconnect.ini,配置文件。,2./,var/TimesTen/sys.ttconnect.ini,3.$INSTALL_DIR/info/,sys.ttconnect.ini,(非,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,前,建议先断开所有连接,TimesTen,的应用,如果启动了,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/bin/timestensubd,/tstenv/timeten/TimesTen/tt70/bin/timestensubd,TimesTen,使用,(1) -,启动和关闭,ttstatus,TimesTen,status report as of Wed Dec 5 11:12:54 2007,Daemon,pid,24468 port 18001 instance tt70,TimesTen,server,pid,24474 started on port 18003,TimesTen,webserver,pid,24473 started on port 18005,-,Data store /tstenv/timeten/TimesTen/tt70/info/IOMS,There are no connections to the data store,Replication policy : Manual,Cache agent policy : Manual,-,Access control enabled.,End of report,TimesTen,使用,(1) -,启动和关闭,缺省的有,:,TimesTen,的后台守护进程(,timestensubd,),TimesTen,的主守护进程(,Daemon,),Client/Server,中的,Server,守护进程,TimesTen,的一个,WebServer,进程,TimesTen,使用,(2) -,增加数据库用户,安装好系统后,系统有个自带的,DSN,,和,access control,结合起来用,一般创建用户,变更密码,授予权限等相关权限、用户控制在这个,DSN,来做,对于需要权限控制,创建用户等,安装的时候要把,access control,安装上,如果安装的时候没有安装上,那么可以等安装后执行,:,ttmodinstall,enableAccessControl,ttmodinstall,也可以重新指定监控的,port,端口,重新设置环境变量,ORACLE_HOME,可以使用,ttmodinstall,h,来查看该功能的使用,TimesTen,使用,(2) -,增加数据库用户,TimesTen,支持的创建后用户的权限有下面几种,1.Admin,2.Connect,3.create,datastore,4.ddl,5.write,6.select,TimesTen,使用,(2) -,增加数据库用户,$,ttisql,TT_tt70_train,Command 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,介绍,DataStore,是指,TimesTen,中的表、索引等放在内存段中的一个集合,类似与,Oracle,中库的概念,一个,TimesTen,Data Manager,可以管理多个,DataStore,DataStore,由放在相应,ODBC,配置文件中的一个,DSN,(,Data Source Name,)所定义,该,DSN,由一个名字和相关的属性组成,如下:,名为,TT_tt70_train,的,DataStore,的定义,DataStore,介绍,ODBC Data Sources,TT_tt70_train=,TimesTen,7.0 Driver,TT_tt70_train,Driver=/tstenv/timeten/zjf/TimesTen/tt70_train/lib/libtten.so,DataStore,=/tstenv/timeten/zjf/TimesTen/tt70_train/info/TT_tt70_train,DatabaseCharacterSet,=US7ASCII,PermSize,=50,TempSize,=10,DataStore,介绍,ODBC,配置文件分为两种:系统级,ODBC,文件,(,可通过环境变量,SYSODBCINI,另行设置,),和用户级,ODBC,配置文件(可通过环境变量,ODBCINI,另行设置)。系统级的,ODBC,可以被任何用户所引用,而用户级的只能被该用户所引用。系统级的,ODBC,文件在,Windows,平台下可以通过控制面板,-ODBC,数据源管理,-,系统,DSN,定义;而,UNIX,平台下,则一般是通过定义文件,$INSTALL_DIR/,sys.odbc.ini,完成,DataStore,介绍,当用户连接一个,DataStore,的时候,,TimesTen,会按照下面的顺序查找配置文件:,1.,环境变量,ODBCINI,所指的,.,odbc.ini,文件,2.,运行,TimesTen,的用户主目录下的,.,odbc.ini,文件,3.,环境变量,SYSODBCINI,所指的,sys.odbc.ini,文件,4. /,var/TimesTen/sys.odbc.ini,5. $INSTALL_DIR /info/,sys.odbc.ini,(非,root,用户才会执行该步),$INSTALL_DIR,为,TimesTen,的安装目录,DataStore,介绍,在上面的,TT_tt70_train,定义里面,有两个重要的属性:,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,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-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_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,每次做,Checkpoint,的时候,会轮换着写这两个文件,每次都写较旧的那个,所以在某些时间段内,这两个文件不是完全一致的。每次做,Checkpoint,的时候,,TimesTen,先在这两个文件之间做一个同步,然后把最新的更新,写到旧的,Checkpoint,文件中。,为什么不同时写入两个文件呢?,如果同时往两个文件写入,而写入过程发生异常,会导致两个文件同时被损坏,带来灾难性的后果,TimesTen,如何创建日志文件和保留文件呢,?,在,ODBC,配置文件里面,通过属性,LogDir,来定义日志文件,没有显式设置,LogDir,时,日志文件将和,Checkpoint,文件位于同一目录下,且以,DataStore,属性中定义的目录的最后一节为文件名,后缀中按数字序列递增命名,例如,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,的日志和保留文件,日志文件会和保留文件始终位于同一个目录下,强烈建议将日志文件和,Checkpoint,文件分开放在不同磁盘上,且处于不同的磁盘控制器下,以尽量减少磁盘,IO,的影响,保留文件,保留文件始终和日志文件位于同一目录下,它的大小由属性,LogFileSize,定义。缺省的,LogFileSize,是,64M,当由于某些原因导致文件系统没有空余的磁盘空间时,如果没有保留文件,,TimesTen,将无法运行下去,因为事务的提交不可避免地导致日志文件的增长,但此时已没有任何可用于增长的磁盘空间,从而导致,TimesTen,处于静止状态,在此状态下,只允许读操作而不允许写操作,保留文件,保留文件是作为溢出缓冲空间使用的,它们被预先创建,当磁盘空间都被用光时,TimesTen,会利用这些保留文件作为一个缓冲,从而完成最终的一些事务,避免,TimesTen,进入静止状态,创建三个保留文件的原因是因为在绝大多数情况下,三个保留文件被证明是最优的选择,TimesTen,使用,(4) -,DataStore,配置,非,root,用户安装时,,TimesTen,的配置文件为,$,TimesTen_Home/info/sys.odbc.ini,文件中。下面是安装后的这个文件缺省内容,这一段是,TimesTen,的所有属性值,是我们配置的一个很好参考,#Authenticate=1 (client/server only),只用于,Client/Server,模式,当,Server,端该值设置为,1,时,只有提供了,UID,和,Password,的客户端连接才能访问该,DSN,,,如果Access如果Access,Control已经设置,则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),#,ConnectionCharacterSet,(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 default),#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),#,LogFlushMethod,=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,#,OverWrite,=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(data 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 Attributes,#,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,及,Delete,针对的是,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,DatabaseCharacterSet,= 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,配置,这个往下是具体的,DataStore,的配置,已经配好的是,TimesTen,的,Demo,程序要用到的,DataStore,TT_tt70,Driver=/home/tt1/TimesTen/tt70/lib/libtten.so,DataStore,=/home/tt1/TimesTen/tt70/info/TT_tt70,DatabaseCharacterSet,=US7ASCII,。,TimesTen,使用,(4) -,DataStore,配置,每个,ODBC,数据源的驱动器的类型说明,是直连(,Direct,)还是,C/S,模式,TT_tt70=,TimesTen,7.0 Driver,TpcbData_tt70=,TimesTen,7.0 Driver,TptbmDataRepSrc_tt70=,TimesTen,7.0 Driver,TptbmDataRepDst_tt70=,TimesTen,7.0 Driver,TptbmData_tt70=,TimesTen,7.0 Driver,BulkInsData_tt70=,TimesTen,7.0 Driver,WiscData_tt70=,TimesTen,7.0 Driver,RunData_tt70=,TimesTen,7.0 Driver,CacheData_tt70=,TimesTen,7.0 Driver,TpcbDataCS_tt70=,TimesTen,7.0 Client Driver,TptbmDataCS_tt70=,TimesTen,7.0 Client Driver,BulkInsDataCS_tt70=,TimesTen,7.0 Client Driver,WiscDataCS_tt70=,TimesTen,7.0 Client Driver,RunDataCS_tt70=,TimesTen,7.0 Client Driver,TimesTen,使用,(4) -,增加用户,DSN,在,ODBC Data Sources,下面增加:,imdb,=,TimesTen,7.0 Driver,在最后面增加:,imdb,Driver=/tstenv/timeten/zjf/TimesTen/tt70_train/lib/libtten.so,DataStore,=/tstenv/timeten/zjf/TimesTen/tt70_train/info/,imdb,DatabaseCharacterSet,=ZHS16GBK,Authenticate=0UID= testPWD= test,PermSize,=2048Connections=20,TempSize,=512,CkptFrequency,=600,CkptLogVolume,=64,LogBuffSize,=512000,LogFileSize,=1024,TimesTen,使用,(4) -,增加用户,DSN,创建用户,tset,ttisql,TT_tt70_train,create user test identified by test;,grant,ddl,admin,to test ;,grant write to test ;,grant SELECT to test ;,quit,用,C/S,方式来连接,DSN,首先在,sys.ttconnect.ini,添加记录如下,imdb_server,Description=,TimesTen,Server,Network_Address,=,ttLocalHost,或,172.18.1.34,TCP_PORT=19003,然后在,sys.odbc.ini,里面配置,Client,的,DSN,IMDBCS,TTC_SERVER=,imdb_server,TTC_SERVER_DSN=,imdb,用,C/S,方式来连接,DSN,ttisqlcs,imdbcs,ttisql,在自身服务器上使用,,ttisqlcs,在客户机上使用,Warning 6226: Ignoring value requested for first connection attribute ,PermSize, - value currently in use: 2048, requested value: 512,?怎么改变呢?,TimesTen,使用,(5) -,备份与恢复,命令,ttbackup,备份数据库,,dir,指向放置备份文件的路径,,fname,指定所要生成的备份文件的命名,,dsn,指向要备份的,datastore,ttbackup,-dir /tstenv/timeten/zjf/Ti
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!