




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 方法: SQLAllo
2、cEnv() 和 SQLFreeEnv() Connection 句柄 存储数据源连接信息 ODBC 方法: SQLAllocConnect() 和 SQLFreeConnect() 隐式分配一个特定的 Environment 句柄 Statement 句柄 存储SQL statement 信息 ODBC 方法: SQLAllocStmt() 和 SQLFreeStmt() 隐式分配一个特定的 Connection 句柄,使用 ODBC 应用句柄,statement 句柄只能在初始阶段分配一次,并在结束阶段释放. 在使用多线程编程中,statement 和 connection 句柄 应该属于
3、线程结构体内. 句柄不能用于多线程并发运行,如果想实现在多个线程在不同的时间访问同一个句柄,那么应用必须通过一些信号量等方式的机制来实现。,SQL Statement 执行流程,SQLPrepare SQLBindParameter SQLExecute,Yes,Initialize,Terminate,If more processing,SQLFreeStmt,If repeat,No,SQLTransact,Repeatable Execution?,SQLBindParameter SQLExecDirect,绑定参数缓存,只需要Prepare 或者编译 SQL statements
4、及内建procedures一次,然后执行或者调用多次。 尽量使用参数化statements,在运行期使用变量方式来应用SQL statements和内建 procedure。 一旦statement被prepared,尽快绑定参数和列变量。 在程序开始的时候申明/分配一次需要用到的变量。 变量属于全局范围的。 如果使用到多线程,变量申明在线程内部。,绑定参数缓存示例,#define CHARLEN 20 SQLINTEGER intBuf, nullData = SQL_NULL_DATA; SQLCHAR charBufCHARLEN; SQLFLOAT floatBuf; rc = SQL
5、Prepare(hStmt, (SQLCHAR *) “insert into student.tab 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_
6、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,S
7、QL_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)本地错误代码和错
8、误信息 获取 SQLSTATE (ODBC 错误代码),#define ERRMSGLEN 255 SQLUCHAR sqlstate6; SQLINTEGER native_error = 0; SQLUCHAR ErrorMsgERRMSGLEN; SQLSMALLINT cbErrorMsg; rc = SQLError(hEnv, hDbc, hStmt, sqlstate, ,应用性能方面考虑 (1/3),使用TimesTen ODBC直连方式会获得最佳性能 尽量多次执行Prepare statements 可以避免没有必要的参数重复绑定 可使用 SQLBindCol() 来代替 S
9、QLGetData() 这样可以减少运行期系统表锁的占用时间 尽量避免数据转换 尽量使用定长数据类型,应用性能方面考虑(2/3),尽量避免ALTER TABLE 操作 更新优化统计表 尽量利用你创建的索引 尽量使用短交易来减少锁冲突 有规则的进行checkpoint操作 有规则的进行backups操作 (如果使用增量备份,那么这个操作尤为重要),其他建议,检查连接属性配置文件 (sys.odbc.ini / .odbc.ini 文件). 检查表的所属者owners. 方法调用顺序或者游标状态不正确往往是应用程序不正确的信号。 游标都和特定的statement句柄关联, (隐式和connecti
10、on句柄关联) Transactions和特定的 connection 句柄关联 如果statements 或者 connections 是跨线程共享的,那么需要应用来避免方法调用顺序和游标状态错误。,检查点和日志文件,Oracle TimesTen定期将数据存储区和事务日志的更改写入磁盘 如果需要恢复数据存储区,Oracle TimesTen将把磁盘上的数据存储区检查点与仍位于日志文件中的已完成事务合并在一起 检查点和日志文件使用普通的磁盘文件系统,Replication TimesTen to TimesTen,Replication TimesTen to TimesTen是 Oracl
11、e TimesTen In-Memory Database的一个选项,它支持服务器间的实时数据复制,以获得高可用性和负载共享。 数据复制可以是双机热备份 (active-standby)或负载均衡 (active-active) 数据复制可以使用异步或同步传输, 数据复制可以包含冲突检测和冲突解决以及在故障服务器恢复后自动重新同步。,复制代理,Replication,配置复制后,将为每个数据存储区启动复制代理进程。如果为复制而配置了同一服务器上的多个数据存储区,则每个数据存储区将有一个单独的复制代理 每个复制代理能够向一个或多个用户服务器发送更新,并从一个或多个主服务器那里接收更新 复制代理通
12、过 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 能够在故障之后自动重新同步数据,C
13、ache Connect to Oracle,高速缓存组是由一个或多个通过主键/外键关系以逻辑层次结构排列的表的集合。高速缓存组中的每个表都与 Oracle 数据库表相关 一个高速缓存组表可以包含相关 Oracle 表中的所 有行和列或行和列的一个子集 可以通过 SQL 语句创建和修改高速缓存组,Cache Connect to Oracle,高速缓存组支持以下特性: 应用程序可以对高速缓存组执行读取和写入操作 可以自动或手动刷新高速缓存组(将 Oracle 数据库数据置于高速缓存组中) 可以自动或手动清理高速缓存组(将高速缓存更新传播到 Oracle 表) 可以自动跟踪对 Oracle 表或
14、高速缓存组的更改,多种灵活的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里面。如果Or
15、acle当了,等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对行业标准的支持,支持常用的数据对象,比如
16、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=(SE
17、MMNI * 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
18、-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实例的注册,T
19、imesten安装,3. FTP到需要安装TimesTen的主机上的一个目录,要求可用空间在500M以上,然后解包: tar xvf timesten604.hp64ipf.tar 4. 解包后会在当前目录下生成hp64ipf/目录,执行该目录下面的setup.sh命令 5.输入Instance name 6. 选择产品类型 Oracle TimesTen In-Memory Database:完全的内存数据库,和oracle数据库没有关系 Cache Connect to Oracle:从oracle数据库cache数据到TimesTen内存数据库;也支持直接在内存数据库中建立实体表。,Ti
20、mesten安装,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做了初级的限制
21、;并不是说,它对在操作系统级别上对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
22、:指向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,则需要设置该变
23、量指向相应的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(非roo
24、t用户才会执行该步),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 配置文件。客户
25、端查找配置文件的顺序是: 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,TimesTe
26、n 使用(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/
27、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 2
28、4468 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 en
29、abled. End of report,TimesTen 使用(1) - 启动和关闭,缺省的有: TimesTen的后台守护进程(timestensubd) TimesTen的主守护进程(Daemon) Client/Server中的Server守护进程 TimesTen的一个WebServer 进程,TimesTen 使用(2) -增加数据库用户,安装好系统后,系统有个自带的DSN,和access control结合起来用,一般创建用户,变更密码,授予权限等相关权限、用户控制在这个DSN来做 对于需要权限控制,创建用户等,安装的时候要把access control 安装上,如果安装的时候没
30、有安装上,那么可以等安装后执行: 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 u
31、ser 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配置文件中
32、的一个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 DatabaseCha
33、racterSet=US7ASCII PermSize=50 TempSize=10,DataStore 介绍,ODBC配置文件分为两种:系统级ODBC文件(可通过环境变量SYSODBCINI另行设置)和用户级ODBC配置文件(可通过环境变量ODBCINI另行设置)。系统级的ODBC可以被任何用户所引用,而用户级的只能被该用户所引用。系统级的ODBC文件在Windows平台下可以通过控制面板-ODBC数据源管理-系统DSN 定义;而UNIX平台下,则一般是通过定义文件 $INSTALL_DIR/sys.odbc.ini完成,DataStore 介绍,当用户连接一个DataStore的时候,Ti
34、mesTen会按照下面的顺序查找配置文件: 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/
35、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 ,它
36、会将内存中的脏数据和磁盘上的数据文件做增量同步。 当首次登陆到该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
37、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.
38、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每次做Checkp
39、oint的时候,会轮换着写这两个文件,每次都写较旧的那个,所以在某些时间段内,这两个文件不是完全一致的。每次做Checkpoint的时候,TimesTen先在这两个文件之间做一个同步,然后把最新的更新,写到旧的Checkpoint文件中。 为什么不同时写入两个文件呢? 如果同时往两个文件写入,而写入过程发生异常,会导致两个文件同时被损坏,带来灾难性的后果,TimesTen如何创建日志文件和保留文件呢?,在ODBC配置文件里面,通过属性 LogDir 来定义日志文件,没有显式设置LogDir时,日志文件将和Checkpoint文件位于同一目录下,且以DataStore属性中定义的目录的最后一节为
40、文件名,后缀中按数字序列递增命名,例如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的日志和保留文件 日志文件会和保留文件始终位于同一个目录下 强烈建议将日志文件和Ch
41、eckpoint文件分开放在不同磁盘上,且处于不同的磁盘控制器下,以尽量减少磁盘IO的影响,保留文件,保留文件始终和日志文件位于同一目录下,它的大小由属性LogFileSize定义。缺省的LogFileSize是64M 当由于某些原因导致文件系统没有空余的磁盘空间时,如果没有保留文件,TimesTen将无法运行下去,因为事务的提交不可避免地导致日志文件的增长,但此时已没有任何可用于增长的磁盘空间,从而导致TimesTen处于静止状态,在此状态下,只允许读操作而不允许写操作,保留文件,保留文件是作为溢出缓冲空间使用的,它们被预先创建,当磁盘空间都被用光时,TimesTen会利用这些保留文件作为一
42、个缓冲,从而完成最终的一些事务,避免TimesTen进入静止状态 创建三个保留文件的原因是因为在绝大多数情况下,三个保留文件被证明是最优的选择,TimesTen 使用(4) -DataStore配置,非root用户安装时,TimesTen的配置文件为 $TimesTen_Home/info/sys.odbc.ini 文件中。下面是安装后的这个文件缺省内容,这一段是TimesTen的所有属性值,是我们配置的一个很好参考 # Authenticate=1 (client/server only) 只用于Client/Server模式,当Server端该值设置为1时,只有提供了UID和Passwor
43、d的客户端连接才能访问该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配置,#
44、 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为基本诊断信息 # DurableCommi
45、ts=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 (
46、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为忽略第一次连接时的值,而是使用当前连接的特有的值 # MemoryLo
47、ck=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 #PrivateCommand
48、s=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 的临时表空
49、间 # 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
50、、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独有的设置其优化器参数的内置存储过程)都被PassT
51、hrough到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_
52、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 DataS
53、tore=/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=T
54、imesTen 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 WiscDataC
55、S_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 DatabaseCharact
56、erSet=ZHS16GBK Authenticate=0 UID= test PWD= test PermSize=2048 Connections=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
57、; grant SELECT to test ; quit,用C/S方式来连接DSN,首先在sys.ttconnect.ini添加记录如下 imdb_server Description=TimesTen Server Network_Address=ttLocalHost或4 TCP_PORT=19003 然后在sys.odbc.ini里面配置Client的DSN IMDBCS TTC_SERVER= imdb_server TTC_SERVER_DSN=imdb,用C/S方式来连接DSN,ttisqlcs imdbcs ttisql在自身服务器上使用,ttisqlcs在
58、客户机上使用 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/TimesTen/tt70_train/backup -fname imdb_1206 dsn=imdb 通过ttdestroy 命令 删除掉现在的datastore 首先退出已有的 ttisql 连接 ttdestroy imdb,TimesTen 使用(5) -备份与恢复,命令ttrestore恢复数据库 dir指向备份文件放置的目录,noconn为恢复好后,不要自动登录该datastore: ttrestore -dir /tstenv/timeten/zjf/TimesTe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东开放大学商务谈判实务学习行为评价
- 设计开发过程管理规范
- 广东省东莞市2024-2025学年七年级下学期英语期末复习卷(二)(含答案)
- 2025年河南省平顶山市鲁山县四校联考九年级中考三模生物试题(含答案)
- 2025年阿里、头条、快手、趣头条、Android-面试真题集锦
- 建筑施工特种作业-建筑司索指挥信号工真题库-2
- 三体2题目及答案
- 入团填空题目及答案
- 日语动词趣味题目及答案
- 2023-2024学年江苏省连云港市高二下学期6月期末调研数学试题(解析版)
- 井巷工程知到智慧树章节测试课后答案2024年秋山东科技大学
- 2025年乡村振兴课件
- 启东市吕四港海洋牧场乌龙沙人工鱼礁建设项目报告表
- 军事国防教育基地方案
- 金氏五行升降中医方集
- 2025年陕西省初中学业水平考试英语 例析与指导 试卷示例题
- 特种设备宣贯知识培训
- 新能源技术研发流程及趋势
- 《水利工程建设项目法人工作手册2023版》知识培训
- 超星尔雅学习通《形势与政策》2025春章节测试附答案
- 企业能源管理规范与操作规程指南
评论
0/150
提交评论