这章将讨论怎样使用SQL语句来创建并管理简单的缓存集合。也可使用基于浏览器的Cache Administrator来创建缓存集合。
安装TimesTen和Oracle
在能够创建缓存集合之前,必须安装TimesTen和Oracle环境。完成以下任务:
1. 在TimesTen主机上安装Oracle Client。
2. 创建必需的Oracle帐号。
3. 创建一个TimesTen帐号。
4. 创建TimesTen DSN。
在TimesTen主机上安装Oracle Client
Cache Connect to Oracle特性使用Oracle共享库来与Oracle数据库进行通信。可以通过在安装了TimesTen的机器上安装Oracle Client来安装这些库文件。安装Oracle 9iClient或Oracle Database 10g。Oracle客户端的版本不必与Oracle服务器端的版本相同。Cache Connect支持下面的Oracle客户端和服务器端的版本:
• Oracle 10g Release 2 (Oracle 10.2.0.1.0 或之后)
• Oracle 10g Release 1 (Oracle 10.1.0.5.0或之后)
• Oracle 9i Release 2 (Oracle 9.2.0.8.0或之后)
安装Oracle Client时,选择Application UserInstallation Type。不必专门配置一个服务目录来用于Cache Connect to Oracle,所以可以跳过安装过程的这一步。
安装Oracle Client以后,安装TimesTen。
注意:如果在安装Oracle Client之前安装了TimesTen,必须重新启动操作系统(Windows)或TimesTen(UNIX)。
创建必需的Oracle帐号
在能够使用Cache Connect to Oracle之前,必须从数据库管理员处获得一个Oracle帐号。如果操作者实际拥有数据库管理权限,则在Oracle服务器上打开命令窗口并启动SQL*Plus,以系统管理员身份登录:
sqlplus system/password@Oracle_Service_Name
例如,为了在由连接串、system1确定的Oracle数据库上给testuser创建一个新Oracle帐号,操作如下:
sqlplus system/manager@system1
SQL> CREATE USER testuser IDENTIFIED BY 11;
SQL> GRANT connect, resource, create any trigger TO cddbo;
SQL> COMMIT;
SQL> EXIT
为了与本章余下的部分讨论的一些示例缓存集合操作保持一致,Oracle用户为cddbo,口令为11,并且是system1中的一个Oracle帐号。
在TimesTen上创建一个帐号
作为实例管理者,使用ttIsql工具来连接到数据存储TT_tt70_32.。数据存储实例由TimesTen在安装时定义,用来使实例管理者能够执行数据存储连接管理任务。
然后使用CREATE USER和GRANT语句来创建一个名为cddbo的用户,拥有ADMIN和DDL权限:
ttIsqlTT_tt70_32.
Command> CREATE USER pgmrnew IDENTIFIED BY 'pgmrnew';
Command> GRANT ADMIN, DDL TO pgmrnew;
注意:此帐号必须与Oracle数据库帐号和口令相同。
创建TimesTen DSN
在Window系统中,创建一简单的TimesTen系统数据存储(System DSN),名称为cddboDSN。
关于cddboDSN,设置如下:
• Data Store Path and Name:c:/temp/cddbods
• Permanent Data Sz (MB):16
• Temporary Data Sz (MB):16
• User ID:pgmrnew(此ID也用作Oracle User ID)
• Oracle ID:orcl
• Oracle Password:pgmrnew
• DatabaseCharacterSet:ZHS16GBK。此数据库字符集必须与Oracle数据库字符集相同。为了得到Oracle数据库字符集信息,在Oracle数据库上输入下列查询:
SELECT value FROM nls_database_parameters
WHERE parameter='NLS_CHARACTERSET';
对于其余设置,使用缺省值。
创建READONLY缓存集合
在已经安装TimesTen和Oracle并进行配置以后,就可以创建缓存集合。
这部分将讨论怎样创建一个简单READONLY缓存集合,以缓存Oracle数据库中单一表中的内容。尽管一个缓存集合可以由多个表组成,这里只缓存一个Oracle表以保持示例的简单。
图 2.1 显示一个缓存一单个Oracle表的READONLY缓存集合。
图2.1简单READONLY缓存集合

第1步:创建一Oracle表
图2.2创建一Oracle表

连接到新帐号并创建一数据表:
sqlplus testuser/mypsswrd@system1
SQL> CREATE TABLE readtab (a NUMBER NOT NULL PRIMARY KEY,
b VARCHAR2(31));
然后插入一些记录并进行提交:
SQL> INSERT INTO readtab VALUES (1, 'hello');
1 row created.
SQL> INSERT INTO readtab VALUES (2, 'world');
1 row created.
SQL> COMMIT;
Commit completed.
第2步:创建缓存集合
图2.3创建READONLY缓存集合

使用ttIsql工具来连接cddboDSN数据存储。在命令提示符下,使用ttCacheUidPwdSet程序来传递缓存管理用户ID和口令作为参数。然后调用ttCacheStart程序来为数据存储启动缓存代理。在这个示例中,缓存管理用户ID是cddbo,并且口令为11:
> ttIsql cddboDSN
Command> call ttCacheUidPwdSet('pgmrnew','pgmrnew');
Command> call ttCacheStart;
接下来,使用CREATE CACHE GROUP语句来创建名为readcache的READONLY缓存集合,用来在TimesTen中缓存Oracle表tsr20_user的内容:
Command> CREATE READONLY CACHE GROUP readcache
> AUTOREFRESH INTERVAL 5 SECONDS
> FROM tsr20_user
>(code char(5) NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL);
第3步:加载缓存集合
加载Oracle表中的内容到缓存集合表中。
Command> LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
185 cache instances affected.
检查tsr20_user表的内容:
Command> SELECT * FROM tsr20_user;
< -000, test >
……………………
< 05999, 系统管理员05999 >
185 rows found
使用ttIsqlcachegroups命令来检查READCACHE缓存集合的定义:
Command> cachegroups;
Cache Group TESTUSER.READCACHE:
Cache Group Type: Read Only
Autorefresh: Yes
Autorefresh Mode: Incremental
Autorefresh State: On
Autorefresh Interval: 5 Seconds
Root Table: PGMRNEW.TSR20_USER
Table Type: Read Only
1 cache group found.
第4步:更新Oracle表
图2.4使用Oracle更新自动刷新TimesTen

使用SQL*Plus,插入多行到READTAB并提交事务:
SQL> INSERT INTO readtab VALUES (3, 'Hello');
1 row created.
SQL> INSERT INTO readtab VALUES (4, 'Again');
1 row created.
SQL> COMMIT;
Commit completed.
5秒之后,TimesTen将从Oracle自动刷新缓存数据。在ttIsql中检查READTAB表的内容:
Command> SELECT * FROM readtab;
< 1, hello >
< 2, world >
< 3, Hello >
< 4, Again >
4 rows found
第5步:删除缓存集合
在TimesTen窗口中,使用DROP CACHE GROUP语句从TimesTen数据存储中删除缓存集合:
Command> DROP CACHE GROUP readcache;
第6步:停止缓存集合
调用ttCacheStop程序停止数据存储的缓存代理:
Command> call ttCacheStop;
激活SQL passthrough特性
这部分将讨论怎样在DSN中设置PassThrough属性来命令TimesTen通过SQL定向到Oracle。
图 2.5 显示从一个应用将SQL传递到Oracle表。缓存表通过自动刷新机制从Oracle接收更新。
图2.5从Cache Group to Oracle传递SQL

第1步:创建新的TimesTen DSN
在Window系统中,创建一新的TimesTen系统数据源(System DSN),名称为cddboPT,使用与指定给cddboDSN的相同的属性。另外,设置PassThrough属性值为‘2’,以直接传递不在缓存集合中的Oracle表的查询和程序调用到Oracle。
对于cddboPT,设置如下:
• Data Store Path and Name:c:/temp/cgPT2d
• Permanent Data Sz (MB):16
• Temporary Data Sz (MB):16
• User ID:pgmrnew(此ID也用作Oracle User ID)
• Oracle ID:orcl
• Oracle Password:pgmrnew
• PassThrough:2
• DatabaseCharacterSet: ZHS16GBK。此数据库字符集必须与Oracle数据库字符集相同。为了得到Oracle数据库字符集信息,在Oracle数据库上输入下列查询:
SELECT value FROM nls_database_parameters
WHERE parameter='NLS_CHARACTERSET';
对于其余设置,使用缺省值。
第2步:创建READONLY缓存集合
图2.6创建READONLY缓相聚集合

在TimesTen窗口中,连接到DSN cddboPT,设置缓存管理用户ID和口令,启动缓存代理,并创建READONLY缓存集合:
ttIsql cgPT2
Command> call ttCacheUidPwdSet('pgmrnew','pgmrnew');
Command> call ttCacheStart;
Command> CREATE READONLY CACHE GROUP readcache
> AUTOREFRESH INTERVAL 5 SECONDS
> FROM tsr20_user
> (code char(5) NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL);
第3步:加载缓存集合
加载Oracle表的内容到缓存集合表中。
Command> LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
4 cache instances affected.
第4步:更新缓存集合表
图2.7更新TimesTen缓存集合表

使用ttIsql,插入一些行到tsr20_user:
Command> INSERT INTO tsr20_user VALUES ('0001','Just','00000', 'dd','0000','1',NULL);
1 row inserted.
Command> INSERT INTO tsr20_user VALUES ('0002',' Passing ','00000', 'dd','0000','1',NULL);
1 row inserted.
Command> INSERT INTO tsr20_user VALUES ('0002',' Through ','00000', 'dd','0000','1',NULL);
1 row inserted.
使用SQL*Plus检查 check the contents of the readtab table on Oracle:
SQL> SELECT * FROM tsr20_user;
CODE NAME
---------- -------------------------------
-000 test
……………………
05999 系统管理员05999
187 rows selected.
然后使用ttIsql检查TimesTen中表tsr20_user的内容:
Command> SELECT * FROM tsr20_user;
< -000, test >
……………………
< 05999, 系统管理员05999 >
187 rows found
第5步:删除缓存集合
使用ttIsql,输入DROP CACHE GROUP语句来从TimesTen数据存储中删除缓存集合:
Command> DROP CACHE GROUP readcache;
第6步:停止缓存代理
调用ttCacheStop程序来停止数据存储的缓存代理:
Command> call ttCacheStop;
创建缓存集合任务列表
表 2.1 创建缓存集合任务列表
任务序号
|
任务
|
1
|
确保已经安装Cache Connect to Oracle。使用ttIsql来验证:
connect “uid=myuid;pwd=mypwd;OraclePWD=mypwd;passthrough=3”;
SELECT COUNT(*) FROM DUAL;
exit
此查询应该返回1。如果不是,则检查以下内容:
• 设置以下环境变更:ORACLE_HOME、LD_LIBRARY_PATH、SHLIB_PATH
• 缓存管理用户ID和口令,以及Oracle ID
• Oracle服务器的状态
|
2
|
对所有要创建的缓存集合设计缓存集合计划。可能使用Cache
Administrator。
|
3
|
确保有足够的资源来加载所有的缓存集合。
设置First Connection属性:
•PermSize– 可以首先创建缓存集合,然后使用ttSize工具来估算PermSize属性的值。必须估算要使用ttSize工具进行缓存的行数。
•TempSize– 没有必要的意义。
•DatabaseCharacterSet– 确保它与Oracle数据库字符集相匹配。
文件系统大小推荐:
• 数据存储目录应足够大以处理两个检查点文件。每个检查点文件的最大值为20 MB +PermSize。
• 日志目录应足够大以处理积累在检查点之间的日志文件。注意,如果在自动刷新间隔期间Oracle表中有大量的更新,自动刷新事务可能相当大。 一个对于日志目录大小的处理规则是使它等于数据存储的大小加上3倍的LogFileSize的3倍。
• 临时目录应放在快速文件系统中,以提高执行大事务的速度。可以通过设置TMPDIR环境变量(UNIX)或TEMP环境变更(Window)来指定临时目录用于自动刷新操作。在设置环境变量之后,重新启动TimesTen
Daemon(UNIX)或机器(Window)。一个很大自动刷新事务在临时目录中要求很大空间。
|
4
|
如果缓存集合是自动刷新或异步写方式,要设置缓存管理用户ID和口令。缓存管理用户ID必须是一个Oracle用户,并且必须有相应的权限。
|
5
|
启动缓存代理。如果计划使用非日志模式(参阅第7步),则跳过此步。
|
6
|
创建并提交所有的缓存集合。
|
7
|
(选项)使用非日志模式加载缓存集合。
为了更快执行和降低资源使用,可以在非日志模式中加载缓存集合。非日志模式的缺点是:
• 所有到TimesTen数据存储已存在的连接必须停止。
• 加载操作不能进行复制。
执行下列任务来使用非日志模式加载缓存集合:
a.如果正在运行的话,停止缓存代理、复制代理以及TimesTen服务。
b.断开所有连接到TimesTen数据存储的应用。
c.使用First Connection attributesLogging=0、DurableCommits=0、LockLevel=1属性连接到数据存储。.
d.为每个集合发送下列SQL语句:LOAD CACHE GROUP
cache_group_nameCOMMIT EVERY 0 ROWS。
e.在加载每个缓存集合之后,提交事务并发送一个检查点。
f.使用日志重新将应用连接到TimesTen数据存储。
g.启动缓存代理。
|
8
|
如果需要复制,则在缓存集合表上创建TimesTen复制计划。
|
9
|
如果要复制缓存集合表或缓存集合是异步写(AWT)方式,则启动复制代理。
注意:当复制代理正在运行时,不能创建或删除AWT缓存集合。
|
10
|
加载缓存集合并提交(如果不执行第7步)。使用LOAD
CACHE GROUPcache_group_nameCOMMIT EVERYnROWS。对于n的推荐值为256。
|
分享到:
相关推荐
Timesten内存数据库将数据存储在内存中,显著提高了数据读取和写入的速度,尤其适合需要快速事务处理和实时分析的业务场景。它支持SQL标准,并且可以与Oracle数据库无缝集成,为应用程序提供了一种高效的数据存储...
**二、timesten内存数据库的关键特性** 1. **完全的数据库功能**:timesten不仅是一个简单的数据缓存,而是一个功能全面的数据库管理系统,支持SQL-92标准,具备索引、事务管理、物化视图等功能,确保了数据的一致...
TimesTen内存数据库是一款由Oracle公司开发的高性能、实时的列式内存数据库系统。它专为需要高速数据处理和低延迟的应用场景设计,如金融交易、电信、物联网(IoT)和大数据分析。以下是对TimesTen内存数据库的详细...
### 二、Oracle Timesten内存数据库 Oracle Timesten是一款高性能的内存数据库,特别设计用于高速事务处理和实时数据分析。它能够提供极低的延迟和高吞吐量,非常适合电信行业的实时计费和交易处理等应用场景。...
**Timesten内存数据库SQL语法参考** Timesten内存数据库是Oracle公司推出的一款高性能、低延迟的内存数据存储系统,特别适用于需要实时处理大量数据的应用场景。它将数据存储在内存中,从而提供了比传统磁盘数据库...
首先,文档标题为“内存数据库Timesten-SQL”,说明这是关于Timesten内存数据库的SQL语言参考指南。文档的描述中提到“Oracle TimesTen In-Memory Database SQL Reference Guide Release 7.0”,指出这是一份关于...
Oracle TimesTen In-Memory Database是一个完全驻留在物理内存中的数据库,它通过标准SQL接口提供快速的数据访问。这种设计使得应用程序可以直接与数据交互,避免了传统数据库通过IPC连接带来的延迟。此外,TimesTen...
Oracle TimesTen是一款高性能的内存数据库系统,设计用于实时数据处理和快速查询响应。它被广泛应用于交易处理、实时分析和其他对速度有极高要求的应用场景。以下是对TimesTen安装配置的详细步骤和涉及的知识点: 1...
Timesten是Oracle公司的一款高性能、实时的内存数据库系统,它设计用于处理大量的在线事务处理(OLTP)工作负载,尤其是在需要快速响应时间和低延迟的场景中。在C++环境下开发Timesten应用,可以充分利用C++的性能...
Oracle Timesten是一款高效、高性能的内存数据库系统,由甲骨文公司开发,主要用于实时应用程序。它设计的目标是提供亚毫秒级的数据访问速度,从而极大地提升了数据处理的速度和响应时间。以下是对每个文档的详细...
### Timesten内存数据库与JSON数据转换 #### 概述 在现代软件开发过程中,内存数据库因其高速的数据处理能力而受到广泛青睐。Oracle Timesten就是一款高性能的内存数据库产品,它被设计用于实时分析、交易处理等...
总的来说,Oracle TimesTen 11gR2的新特性极大地扩展了其作为内存数据库平台的能力,使其更易于集成到现有的Oracle应用环境中,同时也为开发者提供了更丰富的工具集,如OCI和Pro*C/C++,以构建响应快速、高性能的...
综上所述,Oracle Timesten内存数据库是为需要快速响应和高性能的实时应用而设计的。其独特的优势在于其内存优化的设计,能够提供比传统磁盘数据库更快的处理速度和更高的可伸缩性。由于其易安装、易配置的特点,...
Oracle Timesten内存数据库自动数据清理机制探究.pdf
TimesTen Patchset 17019459 -01 Description TIMESTEN 11.2.1.9.9 RELEASE Product Oracle TimesTen In-Memory Database Release TimesTen 11.2.1.9.9
- **改变数据存储位置的假设**:与传统基于磁盘的数据库不同,Oracle TimesTen In-Memory Database 将数据主要存储在内存中,这极大地提高了访问速度和效率。 - **优化的数据结构和访问算法**:通过对数据结构和访问...
### Oracle_TimesTen内存数据库_6.0版推荐编程实践 #### 一、概述 Oracle TimesTen内存数据库6.0版是一款高性能的内存数据库管理系统,主要用于实时数据分析和交易处理等场景。为了帮助开发者构建高性能且稳定的...
在Oracle的Timesten内存数据库中,由于原生不支持JSON格式处理,开发人员面临着将JSON数据与数据库之间进行转换的挑战。为了克服这一限制,文章的作者编写了一个名为PK_TT_JSON的PL/SQL包,这个包的主要功能是帮助在...