TimesTen在LINUX下的安装和使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle TimesTen 内存数据库在Linux下的安装和使用
(依据TimesTen版本11.2.1)
作者:秦诺
thor.qin@
2010年10月8日
内容目录
1 TimesTen简介 (3)
1.1 内存数据库 (3)
1.2 In-Memory Database Cache (4)
2 TimesTen的安装 (5)
2.1 创建数据库管理员用户 (5)
2.2 下载TimesTen安装包 (5)
2.3 用数据库管理员用户安装TimesTen (6)
3 配置和创建数据库 (9)
3.1 配置Oracle数据库的连接(In-Memory Database Cache) (9)
3.1.1 配置Instant Client (9)
3.2 在oracle数据库端配置缓存信息 (10)
3.2.1 创建独立的缓存用户表空间 (10)
3.2.2 创建TimesTen 架构 (11)
3.2.3 创建缓存管理员(数据库用户) (11)
3.2.4 授予缓存管理员必要的系统权限 (11)
3.2.5 授予缓存管理员表权限(需要被缓存的表) (11)
3.3 配置TimesTen需要的环境变量 (11)
3.4 配置ODBC数据源信息 (12)
3.4.1 服务器数据源的配置 (12)
3.4.2 客户端数据源的配置 (12)
3.5 创建TimesTen缓存数据库 (13)
3.5.1 添加一个ODBC信息 (14)
3.5.2 Linux上启动数据库之前需要完成的一些动作 (14)
3.5.3 启动数据库 (14)
3.5.4 在TimesTen 数据库中创建用户 (15)
3.5.5 关联Oracle 中的cacheadm和TimesTen中的cacheadm用户 (15)
3.5.6 创建缓存网格 (15)
3.5.7 启动缓存代理 (16)
3.5.8 创建缓存组 (16)
3.5.9 启动数据复制代理 (16)
3.5.10 加载数据到缓存中 (17)
4 使用Sql Developer访问TimesTen数据库 (17)
5 OCI编程需要注意的问题 (17)
5.1 Oracle数据库功能限制 (17)
5.2 附加的TimesTen OCI限制 (18)
5.3 附加的TimesTen OCI 区别 (18)
5.4 使用ttSrcScan工具 (19)
1 TimesTen简介
Oracle 内存数据库 TimesTen 是一个针对内存进行了优化的关系数据库,它为应用程序提供了当今实时企业和行业(如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。
Oracle 内存数据库 TimesTen 作为独立或嵌入式数据库部署在应用层中,利用标准的 SQL 接口对完全位于物理内存中的数据库进行操作。
它也可以用作 Oracle 数据库的内存中数据库缓存,以改进用户应用程序的响应时间和吞吐量。
1.1 内存数据库
Oracle 内存数据库 TimesTen 是一个优化内存的关系数据库,提供了响应时间极短且吞吐量极高的应用程序,可满足各行业应用程序的需求。
Oracle 内存数据库 TimesTen (TimesTen) 通过改变数据在运行时驻留位置的假设来提供实时性能。
通过在内存中管理数据,并相应地优化数据结构和访问算法,数据库操作能够以最大效率执行,从而大大提高响应速度和吞吐量,甚至能够与完全使用缓存磁盘的 RDBMS 相媲美。
TimesTen 是一个可嵌入到应用程序中的数据库,通过消除了进程间通信和网络开销,进一步提高数据库操作的性能。
Oracle 内存数据库 TimesTen 使用行级锁定和提交后读取 (committed-read) 隔离,通常与多用户和多线程应用程序一起部署。
应用程序通过 JDBC、ODBC、Oracle 调用接口、Pro*C/C++ 和 Oracle
PL/SQL 编程接口,使用标准 SQL 访问 TimesTen 数据库。
通过运行 TimesTen 实现了应用程序的最佳响应时间后,如果运行在不同服务器上的多个应用程序共享一个数据库时,会使用常规的客户端/服务器访问。
Oracle TimesTen 数据库是持久的且可恢复。
通过事务日志记录与数据库检查点相结合实现了磁盘的持久性。
TimesTen Re p lication 支持 TimesTen 数据库之间的实时事务复制。
由于应用程序的任务关键特性,大多数部署都添加了 TimesTen Re p lication 选件以实现高可用性和负载平衡。
可用性是大多数实时应用程序的一项必需要求。
全天候运营的行业(如电信业)和可以通过 W e b 访问的全球系统(如旅行和预订网站)不容许服务中断。
证券交易系统在金融市场开放时必须持续保持可用状态。
TimesTen Re p lication 提供了以下性能和一致性方面的功能:
•灵活的体系结构支持在 L AN 和 WAN 上可用的各种配置选项。
•基于事务日志的复制模式可以实现高效率和低开销。
•异步复制可提供最佳性能,且应用程序将与用户数据库中复制元素的接收过程完全分离。
•同步复制提供了活动数据库和备用数据库之间更高可信度的数据一致性;将一直锁定应用程序,直至在备用数据库上接收到事务并将其提交。
•备用数据库使用可用于读取;可以通过配置其他的只读用户来提供更多的读取容量。
•与 Oracle 集群件无缝集成可实现故障检测和到备用数据库的故障切换。
•联机升级允许单个服务器脱机升级软件,而无需中断其他服务器。
对于现有数据已存在于 Oracle 数据库中的应用程序,将数据的性能关键子集缓存到内存数据库 TimesTen 是一个缩短应用程序事务响应时间的实用解决方案。
请参阅此处的 Oracle I n-Memor y
Data b ase Cac h e 概述。
1.2I n-Memor y Data b ase Cac h e
Oracle I n-Memor y Data b ase Cac h e 是一个数据库选件,它为 Oracle 数据库提供了实时、可更新的缓存。
Oracle I n-Memor y Data b ase Cac h e 将来自数据库的对性能极其关键的一系列表和表碎片缓存到应用程序层,从而缩短应用程序事务响应时间。
企业数据库中的大部分数据都是历史数据,并且很少有人访问。
但是,掩藏在这些数据下面的信息应该能够在被请求时可即时访问。
您的最佳客户、未完成的订单、最近的事务以及产品目录都是很好的示例。
通过内存缓存和 Oracle 数据库之间的自动数据同步,I n-Memor y Data b ase Cac h e 能够在 Oracle 内存数据库 TimesTen 中自动复制和管理这些信息,以供他人实时访问。
I n-Memor y Data b ase Cac h e 使用“缓存组”的概念,来描述一组映射到 Oracle 数据库中的所有表或部分表的缓存表。
缓存组可以包含这些表的所有或部分行和列。
可以使用多个缓存组来缓存 Oracle 数据库中不同的相关表集合。
在内存数据库 TimesTen 中管理内存缓存表的方式与管理普通的关系型数据库表类似。
因此,Oracle I n-Memor y Data b ase Cac h e 为应用程序提供了关系数据库的所有共性和功能、缓存和 Oracle 数据库的一致性透明维护以及内存数据库的实时性能。
内存缓存表是持久保存且可恢复的。
通过事务日志记录与数据库检查点相结合实现了磁盘的持久性。
大多数缓存产品都是只读的,因此只限于一组很少的功能。
由于 I n-Memor y Data b ase Cac h e 支持完全的 SQL 读/写操作,因此可以用于众多不同种类的应用程序。
对 I n-Memor y Data b ase Cac h e 中缓存表的更新可以同步或异步方式直写到 Oracle 数据库中,这取决于性能和一致性之间的折衷。
对于只读缓存组,Oracle 数据库的增量更新只能按照用户指定的时间间隔异步刷新到内存缓存中的缓存表。
对于缓存数据集不能预先确定的应用程序,其数据可以按需加载到内存缓存中。
例如,呼叫中心应用程序在将呼叫路由至限定的呼叫代理时,可能选择加载呼叫方的当前结算单,而不是将所有客户的整套计费信息预先加载到内存缓存中。
自动数据老化特性对动态数据加载进行了补充,可以将旧数据或最近最少使用的 (LR U) 数据从缓存中删除。
数据老化使应用程序可以在保持内存中“热”数据可用的同时,为新数据释放空间。
I n-Memor y Data b ase Cac h e 的设计为即使在 Oracle 数据库服务器或网络连接丢失的情况下也能继续运行。
系统可以跟踪向缓存表提交的事务,并在连接恢复时立即将其传送回 Oracle 数据库。
同样,系统还可以跟踪向 Oracle 数据库中的缓存表提交的事务,并在与 Oracle 数据库的连接重新建立时立即将其刷新到内存数据库 TimesTen。
支持内存缓存之间的复制以实现高可用性。
可以使用活动-备用配置部署 Oracle I n-Memor y
Data b ase Cac h e,活动-备用配置中的缓存表在内存缓存间进行实时复制。
2TimesTen的安装
本文中的安装和配置都是基于Ub untu 10.04系统 (包括但不限于X u b untu、K u b untu E tc.) (包括但不限于 Des k to p E dition、Ser v er E dition E tc.) (包括但不限于x86-32、amd64E tc.),在编写本文的时候
Ub untu 10.10正式版即将放出,可以预知本文同样适用于10.10及其以后的版本。
2.1 创建数据库管理员用户
建议为计算机建立单独的数据库管理员用户,该用户对数据库拥有全部管理权限,该用户需要隶属于root组,而主组不必是root组。
如果是仅安装客户端组件,则不需要单独创建一个用户,使用当前登录用户即可。
•在系统中建立一个timesten用户,主组是root:
2.2 下载TimesTen安装包
•这里选择安装包的时候注意查看本机是64位系统还是32位系统,下载对应的安装包,查看本机安装的是64位还是32位:
如果显示64表是使用的是64位系统,否则是32位系统。
•进入用户目录,下载TimesTen安装包,这里要访问 Oracle 主页,选择对应版本的安装包:/technology/global/cn/software/products/timesten/index. html
由于我们的机器是64位的,所以我们选择:适用于 Linux x86 (64 位)的 TimesTen I n-Memor y
Data b ase 11.2.1.6.1 (297,385,980字节)
2.3 用数据库管理员用户安装TimesTen
•使用数据库用户登录,或在终端中切换到该用户身份:
•解压缩安装包(这里下载是Linux 64位安装包):
•进入安装包目录:
•执行setu p.s h进行安装:
•安装过程的提示:
回答:Y继续
询问安装实例名称,输入希望命名的实例名,我们这里使用默认值,所以直接回车继续
确认实例名称,回答:Y继续
询问要安装哪些组件,如果是安装服务器,则输入1,如果只安装客户端则选择3,回车继续
(只安装客户端的情况一般用在客户端/服务器模式,这种情况下,数据库和应用程序不在同一台计算机上,此时安装客户端的计算机通过TCP连接与服务器交互。
)
询问安装位置的时候我们使用用户的主目录作为安装目标目录(也是默认值),直接回车继续
询问默认的守护进程配置文件的路径,接受默认值回车继续
询问默认的守护进程日志文件的位置,接受默认值回车继续
询问哪些用户有直接连接和管理TimesTen数据库的权利,默认情况下,安装程序会让执行安装用户的主组具有管理数据库的权利,用户也可以指定一个不同的组,或者设置成全局可以访问,这样所有系统帐号都可以直接管理TimesTen数据库。
我们这里选择默认值,让 root 组拥有管理权限(timesten用户的主组),直接回车继续
TimesTen提示我们使用的g++编译器是4.1(g++的版本号是4.4.3),而TimesTen为不同的编译器准备了两套二进制库,一个是兼容于g++3.4.6的,另一套是兼容于4.1.0的(g++ 3 使用的是 stdc++5 而g++ 4 使用的是 stdc++6 如果混用不同的编译器会导致库冲突,不是很好解决),当前为4.1.0的库建立了符号链接,如果想使用g++3开发程序的话,需要手工重新建立正确的符号链接。
询问是否安装快速入门和文档,直接回车继续
询问是否不安装快速入门而只安装文档,直接回车继续
询问文档的安装路径,接受默认值,回车继续
到此,TimesTen数据库的安装就结束了。
3配置和创建数据库
安装好TimesTen后并不能让数据库马上运行起来(最起码还要创建一个数据库实例),下面用搭建一个大型Oracle业务数据库的前端缓存数据库为例来介绍如何配置和创建TimesTen数据库并让TimesTen缓存Oracle数据库(独立运行TimesTen也是可以的,省掉了和Oracle的同步,配置起来更加简单,如果能掌握缓存服务器的搭建,那么搭建一个独立的TimesTen是很容易的事情)。
3.1 配置Oracle数据库的连接(I n-Memor y Data b ase Cac h e)
为了能缓存Oracle数据库,首先安装TimesTen的机器必须能访问到Oracle数据库,如果TimesTen 和Oracle安装在同一台服务器上,那么默认就可以访问到Oracle了,如果Oracle数据库安装在不同的服务器上,那么可以通过安装Oracle客户端或I nstant Client组件库来访问Oracle,在安装
TimesTen11g 的时候,TimesTen自带了一个I nstant Client 库目录,省去了自己下载I nstant Client的麻烦。
3.1.1 配置 I nstant Client
这里以使用自带的I nstant Client为例,首先要
把/h ome/timesten/TimesTen/tt1121/ttoracle_h ome/instantclient_11_1加入ld搜索目录:
然后设置timesten用户的环境变量,编辑 /h ome/timesten/.b as h rc 文件,加入:
然后让改动生效:
创建T N S_A DM IN目录:
最后在 T N S_A DM IN指向的目录里创建 tnsnames.ora 文件,用来指定 oracle 服务器,tnsnames.ora 的例子:
修改后用自带的$OR A CL E_H OM E/s q l p lus 登录测试一下,看看能否正确连接。
如果连接正常,则可以开始配置Oracle数据库端。
3.2 在oracle数据库端配置缓存信息
为了让TimesTen能够缓存Oracle数据库中的数据,Oracle数据库中必须要做一些设置,下面具体介绍需要有哪些动作。
以下假设我们已经配置了一个Oracle数据库的连接,T N S名成为 t h or。
3.2.1 创建独立的缓存用户表空间
首先使用S q lPlus连接到Oracle,这里需要用户拥有DB A的权限或者拥有创建表空间的权限:
3.2.2创建 TimesTen 架构
在 s q l p lus 中运行
会要求指定表空间的名字:这里输入ttusers
3.2.3创建缓存管理员(数据库用户)
3.2.4授予缓存管理员必要的系统权限
会要求输入用户名,这里输入:cac h eadm
3.2.5授予缓存管理员表权限(需要被缓存的表)
3.3 配置TimesTen需要的环境变量
TimesTen 本身需要的环境变量很少,如果需要访问Oracle数据库(做成I n-Memor y Data b ase Cac h e)则需要配置一个 T N S_A DM IN环境变量(参考:配置 I nstant Client)
如果为了让Ja v a程序能访问到TimesTen(比如S q l De v elo p er),则还需要添加如下变量到用户的环境变量表中:
3.4 配置ODBC数据源信息
TimesTen 数据库使用 ODBC数据源来定义数据库,无论是服务器还是客户端都要拥有 ODBC 数据源定义才能建立和访问数据库。
对于服务器来说,数据源中一般要指定Dri v er, DataStore, PermSi z e,
Tem p Si z e, PLSQL等参数,如果是前端缓存库,还要指定Data b aseC h aracterSet和
Oracle N etSer v ice N ame参数,一般连接数据库采用直连的方式连接到数据库(共享内存模式):
Dri v er=/h ome/timesten/TimesTen/tt1121/li b/li b tten.so 。
对于客户机则只需要指定TTC_S E R V E R和TTC_S E R V E R_DS N参数即可。
系统数据源配置文件一般存在于/h ome/timesten/TimesTen/tt1121/in f o 下面,名字是
s y s.od b c.ini,数据源配置文件还可以是用户数据源配置文件,用户数据源配置文件会优先被查找,它存放在用户家目录下,命名为:“.od b c.ini”,根据我的观察,似乎如果只安装TimesTen客户端的话,似乎TimesTen只会查找用户数据源配置,而系统数据源文件估计需要添加环境变量指定后才能被找到。
3.4.1 服务器数据源的配置
数据源文件是个INI文件,[ODBC Data Sources] 片段指定了当前存在哪些数据源,是一个总列表,比如:
这里列出了4个数据源,前面是数据源的名字,后面是描述,而使用数据源名字作为片段名字的片段,则是某个数据库的具体配置信息,比如:
这里指定了一个数据库,名字是sampledb_1121 采用直连方式访问,数据文件位置是:
/home/timesten/TimesT en/tt1121/info/DemoDataStore/sampledb_1121,总占用内存大小是
40M,临时内存是32M,支持PLSQL语法,数据库字符集是 US7ASCII。
3.4.2客户端数据源的配置
客户端数据源的配置和服务器类似,但是配置客户端数据源之前还要配置主机连接信息,说白了就是要指定服务器的I P地址和端口号,这个配置文件命名为:s y s.ttconnect.ini,也存放在 in f o 目录下,以
s y s 开头可见也表示系统配置,如果是用户配置则也存在于用户主目录下,命名为 .ttconnect.ini。
该配置文件内容很简单,就是为每个主机+端口号的组合命名,比如:
这里命名了一个叫 ttLocal H ost_1121 的连接名,网络地址是 ttLocal H ost 和 local h ost 同意,TCP端口号是:53389
配置完主机信息,就可以配置客户端数据源信息了,客户端数据源配置和服务器的没有区别,也需要由列表区和详细信息区组成,不同的是详细信息中不在描述驱动和数据源存储等信息,取而代之的是只有主机配置文件中的主机名信息和服务器数据源名称信息,比如:
这里描述了一个客户端数据源名字是 sam p led b CS_1121,主机名是 ttLocal H ost_1121,服务器数据源名称是 sam p led b_1121
客户端数据源用来在只安装了TimesTen客户端组件的机器上访问远程主机的数据源,比如使用S q l De v elo p er 在工作站上访问服务器中的数据库就要指定客户度数据源。
3.5 创建TimesTen缓存数据库
了解了ODBC数据源的编写规则,我们以前面的实例为基础继续创建一个缓存数据库。
和Oracle等传统数据库不同,TimesTen不是首先连接到启动的数据库引擎中在建立数据库,而是首先定义好数据库配置,然后尝试启动它,在启动的时候数据库存储文件就被自动创建了。
所以建立数据库也可以简单的说等同于编写ODBC数据源信息。
3.5.1 添加一个ODBC信息
这里定义了个一个叫M y DB的数据源,存储的位置是/h ome/timesten/TimesTen/tt1121/d b/M y DB,注意在启动之前,先要创建/h ome/timesten/TimesTen/tt1121/d b 目录。
3.5.2Linux上启动数据库之前需要完成的一些动作
TimesTen 依赖共享内存来工作,如果d b的PermSi z e大小超过系统设置的共享内存最大值,则启动会失败,需要修改共享内存限制,u b untu 下共享内存大小:32M,远远不够,加大共享内存数量:
加一行(改为最大2G):
如果是临时修改大小:(重启后会恢复原状)
3.5.3启动数据库
首先要确保 TimesTen 的主服务已经启动,如果没有启动的话,运行:
主服务启动后,运行:
此时如果数据库是第一次启动的话,会在存储空间创建数据库文件,并且把数据文件装入内存。
数据库的启动是自动的,如果有连接进来就会启动数据库,而当所有连接都断开的时候,数据库将会从内存中
卸载,这是可以配置的,可以配置为自动启动并且永远驻留内存,由于启动数据库的时间比较长,所以配置为永远驻留是很有用的,另外还可以配置为延时卸载。
本命令运行成功的话则已经连接到数据库,可以执行数据库语句了。
3.5.4在TimesTen 数据库中创建用户
为了能够同步Oracle数据库中的数据,需要在TimesTen数据库中建立缓存管理员用户,今后只有该用户可以远程访问数据库执行建立、更新或删除数据缓等动作。
然后创建一个和oracle数据库中需要同步的表的所有者同名的timesten用户,这句话有点绕口,比如说:我要缓存 oracle 中 h r 用户的 em p lo y ee 表,那么我就要在 timesten 中创建一个 h r 用户:
3.5.5关联 Oracle 中的cac h eadm和TimesTen中的cac h eadm用户
也就是说要告诉 timesten 我们前面在oracle中创建的 cac h eadm 用户的用户名和密码,这个操作需要使用cac h eadm 用户登录:
3.5.6创建缓存网格
首先解释一下缓存网格和缓存组的概念,当然这是我自己的理解,缓存网格是一个逻辑容器,这个容器中可以存放多个数据库,缓存组中定以了一到多张数据表,缓存组其实可以看成一个视图,因为它里面的表必须是父子关联的,如果是没有关系的表就必须单独放在不同的组中,所以有可能一个组就是一张表(这也是说它象视图的原因),一个主机上可以创建多个缓存网格,一个网格中可以管理多个数据库,但是一个数据库只能关联到一个网格,如果一个网格中存在多个数据库(不管是远程的,还是本机的),那么该网格中的缓存组在存储数据的时候有可能会进行分布式存储(对于用户来说是透明的)。
所以网格可以用来很方便的扩张缓存的容量。
创建缓存表格的操作需要使用cac h eadm 用户登录,如果前面的登录没有退出则可以继续操作:
如果该网格存在的话,只需要执行关联动作:
查看cac h e网格的信息:(验证动作是否都成功执行)
3.5.7启动缓存代理
仍然需要cac h eadm用户操作:
3.5.8创建缓存组
缓存组里可以有多张表,但如果是多张表的话,必须是父子关联的,缓存组可以是只读或者可以变更的,只读的缓存组会在oracle数据库数据修改的时候自动更新缓存信息,而可变更的组会在缓存表中的数据修改的时候自动更新到oracle数据库。
缓存组中的数据可以设置为预加载,或设置为按需加载。
我们的需要是创建按需加载的动态异步写缓存组:
看看是否成功:
3.5.9启动数据复制代理
3.5.10加载数据到缓存中
由于我们创建的是动态缓存组,所以只要用s q l语句(select, insert, u p date,delete) 进行操作就会导致数据被加载,这里要注意要想缓存被同步的话,S q l语句中必须带有主键,否则数据操作只会在内存中完成,不会去同步数据库: 所以如果使用 select count(*) f rom u_state 的话,只会返回内存中被缓存的记录数。
4使用S q l De v elo p er访问TimesTen数据库
使用 S q l De v elo p er 可以以图形化的方式访问和管理数据库,但想使用S q l De v elo p er连接到TimesTen 的话,还有一些基本需求必须满足:
1)使用 S q l De v elo p er 建议安装 Sun Ja v a Jd k6 (不是j re)如果实在不愿意安装sun j d k 也可以使用 O p enJD K替代,经实验也没有什么问题。
但是要在 S q l De v elo p er 的配置文件(s q lde v elo p er.con f)中增加一句话:
这样 S q l De v elo p er 就不会检查j a v a j d k 环境了。
2)启动 S q l De v elo p er 后还要打开 "工具->首选项->数据库->第三方JDBC驱动",安装
tt j d b c6.j ar(TimesTen安装路径中的 li b 目录下)。
3)要想连接 TimesTen 数据库必须至少安装了 TimesTen 客户端,并配置了 ODBC 数据源。
4)把TimesTen安装目录下的Li b目录加入ld搜索路径。
5)添加 CL A SSP A T H 环境变量指向TimesTen安装目录下的Li b目录。
执行完以上配置就可以在Oracle S q l De v elo p er 中新建连接选对话框中找到 TimesTen 连接选项卡,输入数据源的名称,用户名和密码(如果是直连则不需要)就可以连接到TimesTen数据库了。
5OC I编程需要注意的问题
5.1 Oracle数据库功能限制
TimesTen数据库不支持如下Oracle数据库功能:
•A d v anced Queuin g(高级队列)
•A n y Data(A n y型的数据)
•O b j ect su pp ort(不支持对象)
•LOB data t yp es(LOB数据类型)
•Collections(集合)
•Cartrid g e Ser v ices(磁带服务)
•Direct p at h loadin g(直接路径加载)
•Date/time inter v als(日期/时间间隔)
•I terators(枚举器)
•B F I L E(二进制文件)
•Cr yp to g ra ph ic Tool k it(加解密工具包)
•X ML DB su pp ort(X ML数据库支持)
•S p atial Ser v ices(空间数据库服务)
•Ev ent h andlin g(事件处理)
•Session s w itc h in g(会话切换)
•Scrolla b le cursors(可滚动的游标)
5.2 附加的TimesTen OC I限制
TimesTen OC I具有如下限制:
•data b ase的T yp eMode 属性必须设置为0
•connection的Du p licateBindMode属性必须设置为0
•connection的DDLCommitBe h a v ior属性必须设置为0
•不支持异步调用
•不支持连接池和会话池
•只支持按名称方式调用OC I Descri b e A n y()。
不支持PL/SQL 对象
•TimesTen不支持客户机/服务器自动故障转移
•T N S Pin g 工具不承认到TimesTen 的连接
•不支持从IN S E RT,U PD A T E和D E L E T E语句检索隐含的RO WI D的值(S E L E CT F OR U PD A T E语句是可以的)
•不直接支持从内置的存储过程返回数据集
•从语句快、存储过程或函数只能返回一个引用游标
•使用OC I Bind A rra y O f Struct()和OC I De f ine A rra y O f Struct()绑定和定义结构只支持SQL语句而不支持PL/SQL
•Oracle 的工具比如SQL*Plus和SQL*Loader是不支持的(可以使用tt I s q l工具和内置的存储过程ttBul k C p来代替)
5.3 附加的 TimesTen OC I 区别
TimesTen 和Oracle 都支持XA,但是TimesTen 不支持通过OC I使用XA。
使用OC I的时候 TimesTen
自动为DML语句关闭'自动提交'的特性。
5.4 使用ttSrcScan工具
如果你拥有写好的OC I程序,想看看使用了哪些不被TimesTen支持的功能,那么你可以使用ttSrcScan命令行工具扫描你的程序来检查不支持的函数、包、类型、类型编码、属性、模块和常量。
这是一个独立的工具,你可以独立的运行而不需要TimesTen或Oracle。
它读取源代码然输出H TML和文本文件,如果这个工具找到了不支持的对象那么它会记录并给出一个替代的建议 。
你可以在安装目录下的q uic k start/sam p le_util目录中找到这个工具。