1、TT工具使用,2018/6/20,- 2,/ 目录 contents,/ 第一章 TimesTen内存数据库简介 -P03 / 第二章安装TimesTen - P10/ 第三章Cache Group介绍 -P11/ 第四章常用的TT命令 -P18/ 第五章FAQ -P27,2018/6/20,- 3,第一章 TimesTen内存数据库简介,为什么要使用内存数据库? 如果你在去网上银行做一个转账操作,折腾了2分钟后,告诉你,无法转账。然后你在执行一次,还是2分钟后,告诉你系统无法完成转账,我相信你会崩溃的。所以大家对IT系统的实时性和响应时间的要求越来越高。而这些需求是现有的基于磁盘存储的关系型
2、数据库无法满足的,所以出现了内存型数据库。比如最出名的timesten,当然还有韩国的altibase等等。,2018/6/20,- 4,第一章 TimesTen内存数据库简介,我们来看看这组数据,看看内存型数据库 timesten到底有何绝招:timesten平均修改记录时间:30*百万分之一秒timesten平均读取记录时间:10*百万分之一秒 比oracle快11到40倍。所以现在timesten在电信,金融等对系统实时性要求很高的行业应用越来越多,连上海证交所也用了timesten。,2018/6/20,- 5,第一章 TimesTen内存数据库简介,TimesTen特性 TimesT
3、en的名字换一下说,就是Ten Times,意思就是比传统的数据库要快一个数量级。 为什么同是数据库,TimesTen要快这么多? 如果把传统的数据库中的数据全部先load到内存中是否能达到相同的效果?,2018/6/20,- 6,第一章 TimesTen内存数据库简介,下面我们对它们做一个比较分析。 第一,传统的数据库和应用程序是两个不同的应用系统,它们之间的通讯是通过IPC连接来实现的。而TimesTen则是直接把数据库的内存映射到应用程序的地址空间中,简单来说,这时候TimesTen访问数据库中的数据,就象访问应用程序自己的数组、字符串变量一样,只不过TimesTen有一套完善的机制来实
4、现数据的一致性和完整性。这种直接嵌入到应用程序的运行地址空间机制比IPC要高效很多。,2018/6/20,- 7,第一章 TimesTen内存数据库简介(续),第二,传统的数据库都是 Disk-based 的,即预先假定数据主要是放在磁盘中的,所以它的所有优化、查询算法都是以磁盘存储为主的。举个简单的例子,比如说要查找一行记录,传统的数据库要先查找索引,通过索引查找该记录所在的页面,然后通过查找该页是已经在内存中,还是要从磁盘的数据文件中读取出来。而TimesTen是预先就把所有的数据Load到内存中,它知道所有的数据一定在内存里面,不会再通过其它的调用去决定数据在哪儿,这其中就少走了很多的弯
5、路,基本没有磁盘的IO,而且都在内存中,效率也就高了很多。所以即使传统的数据库把数据都预先Load的内存中,也是达不到TimesTen的效果的。因为传统数据库的索引机制、优化算法、复杂的数据结构、数据的获取机制等等因素限制了它的性能。,2018/6/20,- 8,第一章 TimesTen内存数据库简介(续),第三,由于TimesTen启动的时候预先将所有的数据 Load 到内存中,所以它没有页进页出,而且也不需要类似与Oracle中的SGA缓冲区的管理。总之,TimesTen只用 1/10 的CPU指令完成了传统数据库同样的任务,从而使得性能和吞吐量提升了一个数量级。,2018/6/20,-
6、9,第一章 TimesTen内存数据库简介(续),2018/6/20,- 10,第二章安装TimesTen,安装步骤odbc.ini文件配置.profile配置ORACLE_HOME (Oracle的安装路径)LD_LIBRARY_PATH(增加TimesTen、Oracle的库文件目录)PATH(增加TimesTen、Oracle的搜索路径)CLASSPATH(Java库的搜索路径)ODBCINI(指定odbc.ini的存放目录),2018/6/20,- 11,第三章Cache Group介绍,Cache Group功能 Cache Connect to Oracle是Oracle Time
7、sTen In-Memory Database的一个选项,它是TimesTen和后台Oracle数据库之间进行数据交互的一个桥梁。由于TimesTen的容量受限于实际的物理内存大小,而Oracle可存储海量的数据,所以一般将需要频繁操作的数据加载到TimesTen中。Cache Connect to Oracle能够自动或者手工实现两端数据的同步,且能够实现对SQL请求的Passthrough (即将该Sql通过TimesTen提交到Oracle中运行,通过配置Passthrough参数控制)自动化,并能在故障之后自动重新同步数据。目前Cache Connect 后台只支持Oracle数据库,
8、如果后台是DB2、Sybase、SqlServer等数据库,则需要通过编程实现数据的同步。,2018/6/20,- 12,第三章Cache Group介绍 (续),TimesTen通过cache Agent连接Oracle,实现数据的同步,2018/6/20,- 13,第三章Cache Group介绍 (续),TimesTen中Cache的种类 Cache Group是指TimesTen通过Cache Connect to Oracle 功能将Oracle 数据库中一组有逻辑关联的表、单个的表或者 部分的单个表 Cache 到TimesTen 中的称呼。Cache Group 有如下几种类型:
9、 System Managed类型 ReadOnly SWT(Synchronous Writethrough )AWT(Asynchronous Writethrough )User Managed类型,2018/6/20,- 14,第三章Cache Group介绍 (续),System Managed类型ReadOnly:TimesTen 中的数据是只读的,数据只是在Oracle中更新,然后通过Autorefresh 机制刷新到TimesTen 中。SWT : Synchronous Writethrough,即TimesTen和Oracle中的数据是同步提交的,当应用提交事务时,首先在O
10、racle提交,然后在TimesTen中提交,在此期间,应用一直被阻塞。这种模式保证了数据的高度实时的一致性,但对性能的影响也是较大的。AWT :Asynchronous Writethrough,即事务先在TimesTen中提交,然后以异步的模式在Oracle中提交。该模式对应用的影响最小,因为应用不需要等待在Oracle数据库那边的提交。,2018/6/20,- 15,第三章Cache Group介绍 (续),User Managed类型 相对上面的System Managed类型,User Managed 类型提供了更大的灵活度。相当于提供了一个用户自由定义的选择。因为上面的 ReadO
11、nly、SWT、AWT都是系统预定义了的一些配置,适合于某些特定的场景。在那些场景下,用户可以快速方便地使用相应的System Managed类型创建相应的Cache Group,而不用思考在这个场景下应该配置什么样的参数。而User Managed类型则提供了一个完全开放的参数选择模式,让用户自己去定义参数。,2018/6/20,- 16,第三章Cache Group介绍 (续),创建一个read only的语法如下 create readonly cache group cache group name autorefresh mode incremental interval 30000
12、0 millisecondsfrom tablename ( STRATEGY_INST_ID NUMBER(12) NOT NULL, OFR_INST_LATN_ID NUMBER(10) NOT NULL, OFR_INST_ID NUMBER(13) NOT NULL, LATN_ID NUMBER(10) NOT NULL, primary key (STRATEGY_INST_ID, LATN_ID); create index XZ_OCS.STRATEGY_INST_01 on XZ_OCS.TB_PRD_OFR_STRATEGY_INST (OFR_INST_ID, OFR_
13、INST_LATN_ID); Autorefresh:自动刷新数据 mode incremental:从Oracle里面以增量的方式同步数据 interval 300000 milliseconds :每300000毫秒(5分钟)自动刷新一次数据,2018/6/20,- 17,第三章Cache Group介绍 (续),创建同步提交的cachegroup的语法: CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP update_t1 FROM t1 (id number(2) not null primary key);创建异步提交的cachegroup的语法
14、:CREATE Asynchronous Writethrough CACHE GROUP update_t1 FROM t1 (id number(2) not null primary key);创建用户管理方式的cachegroup的语法:CREATE USERMANAGED CACHE GROUP update_anywhere_t1 AUTOREFRESH MODE INCREMENTAL INTERVAL 5 SECONDSFROM t1(id number(2) primary key,PROPAGATE);,2018/6/20,- 18,第四章 常用的TT命令,ttVersio
15、n ttVersion 用于显示与当前正在运行的 TimesTen 发行版相关的以下信息:由五个部分组成的版本号 操作系统 实例名称 TimesTen 主程序正监听的 TCP/IP 端口 版本生成日期和时间 实例管理员用户 实例主目录 后台程序主目录 是否启用访问控制举例:/home/ocs_svttVersionTimesTen Release 7.0.5.0.0 (64 bit HPUX/IPF) (ocs_sv:16800) 2008-04-04T00:31:57Z Instance admin: ocs_sv Instance home directory: /tt/TimesTen/
16、ocs_sv/TimesTen/ocs_svDaemon home directory: /tt/TimesTen/ocs_sv,2018/6/20,- 19,第四章 常用的TT命令,ttSchema ttSchema用于以 SQL DDL 语句的形式显示数据存储中所有元素或一组指定元素的方案。简单的说,ttSchema可以把TimesTen中的表,cachegroup等等所有元素以DDL语句的形式显示,也可以输出到指定的文件中。举例:把TT实例xz_ocs中所有的元素导出到xz_ocs.sql的文件中。ttSchema xz_ocs xz_ocs.sql,2018/6/20,- 20,第四章
17、 常用的TT命令,ttBackup ttBackup 用于将数据存储备份到磁盘文件或其它存储介质上。语法:ttBackup -type BackupType -dir BackupDirectory -fname FileNamePrefix -force DSN | -connstr ConnectionString-type:指定要执行的备份类型。BackupType 的有效值包括:-fileFull:执行完全文件备份。所生成的备份不启用增量备份(默认值)。 -fileFullEnable:执行完全文件备份。所生成的备份启用增量备份。 -fileIncremental:如果备份文件启用了增
18、量备份,则执行增量备份。如果备份文件未启用增量备份,则返回 TimesTen 错误 651(Backup path is not enabled for incremental backup(备份路径未启用增量备份)。-fileIncrOrFull:如果备份文件启用了增量备份,则执行增量备份。否则,执行完全文件备份,并且为所生成的备份启用增量备份。 -streamFull:执行完全流备份,并将结果输出到 stdout。在流备份中不能使用dir 和 -force 选项。 -incrementalStop:如果在很长一段时间之内未执行增量备份,则禁用增量备份,防止事务处理日志文件累积。-dir:指
19、定备份文件所在的目录。所有备份类型(streamFull 除外)均需要此选项。-fname:指定备份文件的文件名前缀(默认值:DataStore DSN 属性中的数据存储文件名前缀)-force:改写现有备份文件。此选项仅适用于 fileFull 和 fileFullEnable 备份类型。,2018/6/20,- 21,第四章 常用的TT命令,ttRestore ttRestore 用于从磁盘文件或其它存储介质还原使用 ttBackup 实用程序创建的数据存储备份。语法:ttRestore -dir BackupDirectory -fname FileNamePrefix | -i -no
20、connDSN | -connstr ConnectionString-dir:指定备份文件所在的目录 -fname:指定备份文件的文件名前缀(默认值:DataStore DSN 属性中的数据存储文件名前缀) -i:从流中读取备份 -noconn:防止 ttRestore 实用程序在还原操作完成后在数据存储上建立测试连接,以确定还原操作是否成功。 ConnectionString 可以包含任何首个连接属性或常规连接属性,也可以包含 LogDir DSN 属性。其它所有属性均从备份文件继承。,2018/6/20,- 22,第四章 常用的TT命令,ttIsql ttIsql 是一个可用于执行 SQ
21、L 语句的命令行界面。它还包含各种内置命令。语法:ttisql-h|-help|-helpcmds|-helpfull|-V-f-v-e -interactive-N -wait | -connstrh 或 help:显示操作系统命令行选项 helpcmds:显示内置命令的简要说明 helpfull:显示内置命令的详细说明 f:以批处理模式运行文本文件 InputFileName 中的 SQL 语句和内置命令 interactive:通过显示命令提示符,以交互模式运行 ttIsql(默认操作模式) 比较常用的是:ttisql dsn 进入TimesTen的命令行模式,可以执行SQL语句。,20
22、18/6/20,- 23,第四章 常用的TT命令,ttDestroyttDestroy 用于销毁数据存储。它不会删除与数据存储关联的DSN。语法:ttDestroy -wait-timeoutSeconds-forceDSN|-connstr ConnectionString |DataStoreDirectoryNameAndFileNamePrefix-wait:如果该数据存储正在使用中,则每秒重新尝试此销毁操作。-timeout:与 -wait 选项一起使用,用来指定如果在重试 Seconds 秒后该数据存储仍在使用中,则应中止此销毁操作(默认值:120 秒)。-force:强制销毁数据
23、存储,即使数据存储属于另一实例或由另一版本的 TimesTen 创建,也是如此。举例:ttDestroy dsn 使用这个命令前,最好重启一下TT,否则可能会因为数据正在使用,此操作会失败。,2018/6/20,- 24,第四章 常用的TT命令,ttDaemonAdminttDaemonAdmin用于启动和停止 TimesTen 主守护程序、服务器和 Web 服务器这些进程。语法:ttDaemonAdmin-startserver|-startwebserver|-stopwebserver|-force-start|-stop | -restart | -stopserver-start:启
24、动主守护程序 -stop:停止主守护程序 -restart:停止然后启动主守护程序 -startserver:启动 TimesTen Server 进程 -stopserver:停止 TimesTen Server 进程 -startwebserver:启动 TimesTen Web 服务器进程 -stopwebserver:停止 TimesTen Web 服务器进程 -force:使用 start、-stop 或restart,确保即使在生成警告的情况下也能启动或停止主守护程序。使用stopserver,可强制立即终止到 TimesTen 数据存储的客户机/服务器连接,TimesTen Se
25、rver 进程随后会退出。,2018/6/20,- 25,第四章 常用的TT命令,ttOptUpdateStats ttOptUpdateStats 为指定表或当前用户拥有的所有表计算精确的统计信息。语法:ttOptUpdateStats(Owner.TableName,InvalidateFlag,IntervalStatsFlag)如果没有指定 TableName,则将为当前用户拥有的所有表计算精确的统计信息。针对引用要计算统计信息的表的已准备语句,InvalidateFlag=1,确定是使这些语句失效 ;InvalidateFlag=0,还是不使这些语句失效(默认值为 0,即不使这些语句
26、失效)。IntervalStatsFlag指定是计算完全间隔统计信息 (IntervalStatsFlag =0) 或只计算单个间隔统计信息 (IntervalStatsFlag=1)(默认值为 0,即为定义了 T 树索引的列计算完全间隔统计信息;否则计算单个间隔统计信息)。举例:call ttOptUpdateStats(departments, 1, 0) 一般从Oracle中刷新了大量数据到TT中后,需要做一次ttOptUpdateStats操作,更新一下统计信息。在性能测试时可以用到这个命令。,2018/6/20,- 26,第四章 常用的TT命令,ttCacheUidPwdSet tt
27、CacheUidPwdSet 可设置 Oracle 用户的高速缓存管理用户 ID 和相应的口令。语法:ttCacheUidPwdSet(OracleUserID, OraclePassword)示例:call ttCacheUidPwdSet(xz_ocs,xz_ocs)如果 TimesTen 实例启用了访问控制,则只有实例管理员或具有 ADMIN 权限的用户才可以设置高速缓存管理用户 ID 和相应的口令。,2018/6/20,- 27,第四章 常用的TT命令,ttCacheStart 如果高速缓存代理策略为 manual,则 ttCacheStart 会启动高速缓存代理。语法:ttCache
28、Start示例:call ttCacheStart如果 TimesTen 实例启用了访问控制,则只有实例管理员或具有 ADMIN 权限的用户才可以启动高速缓存代理。 ttCacheStop 如果高速缓存代理策略为 manual,则 ttCacheStop 会停止高速缓存代理。语法:ttCacheStop(StopTimeout)可选的超时值可用于指定 TimesTen 主守护程序在尝试终止高速缓存代理之前等待该进程关闭的秒数(默认值为 100 秒;值为 0 秒时表示守护程序无限期等待)。示例:call ttCacheStop(180)如果 TimesTen 实例启用了访问控制,则只有实例管理员
29、或具有 ADMIN 权限的用户才可以停止高速缓存代理,2018/6/20,- 28,第四章 常用的TT命令,ttRepStart 如果复制代理策略为 manual,则 ttRepStart 会启动复制代理。语法:ttRepStart示例:call ttRepStart如果 TimesTen 实例启用了访问控制,则只有实例管理员或具有 ADMIN 权限的用户才可以启动复制代理。 ttRepStop 如果复制代理策略为 manual,则 ttRepStop 会停止复制代理。语法:ttRepStop示例:call ttRepStop如果 TimesTen 实例启用了访问控制,则只有实例管理员或具有
30、ADMIN 权限的用户才可以停止复制代理。,2018/6/20,- 29,第四章 常用的TT命令,ttisql 控制台命令indexes owner_name_pattern.table_name_pattern显示指定表的所有索引信息。如果不带参数,则显示当前用户的所有索引。autocommit 0|1自动提交开关,0:关闭自动提交。1:打开自动提交commit提交事务rollback回滚事务exit退出命令行,2018/6/20,- 30,第四章 常用的TT命令,ttisql 控制台命令passthrough 0|1|2|3设置PassThrough的参数值,0:所有的SQL只是在Time
31、sTen执行1:如果该SQL执行时产生语法错误,SQL(除了Insert、Delete、Update及DDL之外)将被PassThrough 到Oracle中执行;如果Insert、Delete及Update操作的目标表在TimesTen不存在,则将被将被PassThrough到Oracle中执行。注意:此时不包括DDL。2:同1,加上 如果Insert、Update及Delete针对的是ReadOnly Cache Group也将被PassThrough到Oracle中执行。3:所有的SQL(除了Commit、Rollback、Savepoint及TimesTen独有的设置其优化器参数的内置
32、存储过程)都被PassThrough到Oracle。,2018/6/20,- 31,第四章 常用的TT命令,ttisql 控制台命令sequences owner_name_pattern.sequence_name_pattern显示序列信息showplan 0|1显示执行计划,0:不显示。1:显示sqlquerytimeout timeout_seconds设置查询超时时间,单位:秒timing 0|1显示命令执行时间,0:不显示。1:显示 Tables 显示当前TT实例下表名。Cachegroup也显示为对应的表名。用法举例:tables %sub% 模糊匹配,查找当前TT实例中含有su
33、b的表名,2018/6/20,- 32,第五章 FAQ,在TT安装完成后,TT不能使用,如:/public/hn_ltocs/TimesTen/hn_ltocs/bin./ttisql hn_ltocsCopyright (c) 1996-2008, Oracle. All rights reserved.Type ? or help for help, type exit to quit ttIsql.All commands must end with a semicolon character.connect DSN=hn_ltocs; 830: Cannot create data s
34、tore file. OS-detected error: No such file or directoryThe command failed.Done.前面配置odbc.ini文件中有说到data store路径的配置,既然提示“不能创建data store文件,没有这个文件或目录”。那么就需要去看看这个路径的配置是否和实际中的一致,这个问题一般都是因为data store的路径配置不正确造成的。,2018/6/20,- 33,第五章 FAQ,安装TT实例时报如下错误:ERROR: TimesTen can only be installed by members of the grou
35、p sys. For a non-root installation, the user must be a member of the group which owns /etc/TimesTen/instance_info. Group members must also have write access to the directory and file. This group, currently sys, is the TimesTen administrators group. Please see your system administrator or consult the
36、 TimesTen installation guide for assistance.这个错误一般是因为当前用户没有对/etc/TimesTen/instance_info文件的写权限,在安装TT实例的时候,需要把TT的实例名写入到instance_info文件中,但因为没有这个文件的写权限,所以会报错。解决办法是使用ll命令看看这个文件上次修改的用户名,换成那个用户登录进去后添加所有人可写的权限,然后再进行创建TT实例的操作。或者请系统管理员对该文件增加写权限。,2018/6/20,- 34,第五章 FAQ,创建cachegroup时报错5105: OCI initialization f
37、ailed: Error due to failure of ttOCIEnvNlsCreate (called from ttBDbEnvAlloc/ttBDbInit).The command failed.并且:/home/xzabmsqlplus xzabm/xzabmcrmError 6 initializing SQL*PlusMessage file sp1.msb not foundSP2-0750: You may need to set ORACLE_HOME to your Oracle software directory发生这个错误时,需要联系系统管理员,检查用户权限,因为用户没有加入dba组,没有操作Oracle的权限。修改用户属性,加入到dba组,再次创建cachegroup,成功创建,,2018/6/20,- 35,深圳市高新技术产业园区南区南七道T3大厦B三层 ADD:3/F,T3 Building,Nanqi Road,South Area Shenzhen Hi-Tech Industrial Park,Shenzhen, P.R.C 电话(TEL):+86-755-26745688传真(FAX):+86-755-26745666邮编(P.C.):518057http:/ -,/ 联系我们 Contact Us,共享人:易定豪 ,