`
huaxin803
  • 浏览: 116719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TimesTen内存数据库-第二章 快速开始

 
阅读更多

这章将讨论怎样使用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缓存集合

clip_image008

第1步:创建一Oracle表

图2.2创建一Oracle表

clip_image010

连接到新帐号并创建一数据表:

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缓存集合

clip_image012

使用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

clip_image014

使用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

clip_image016

第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缓相聚集合

clip_image018

在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缓存集合表

clip_image020

使用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 内存数据库的java开发手册【pdf】

    Timesten内存数据库将数据存储在内存中,显著提高了数据读取和写入的速度,尤其适合需要快速事务处理和实时分析的业务场景。它支持SQL标准,并且可以与Oracle数据库无缝集成,为应用程序提供了一种高效的数据存储...

    timesten内存数据库

    **二、timesten内存数据库的关键特性** 1. **完全的数据库功能**:timesten不仅是一个简单的数据缓存,而是一个功能全面的数据库管理系统,支持SQL-92标准,具备索引、事务管理、物化视图等功能,确保了数据的一致...

    TimesTen内存数据库资料

    TimesTen内存数据库是一款由Oracle公司开发的高性能、实时的列式内存数据库系统。它专为需要高速数据处理和低延迟的应用场景设计,如金融交易、电信、物联网(IoT)和大数据分析。以下是对TimesTen内存数据库的详细...

    oracle timesten内存数据库介绍

    ### 二、Oracle Timesten内存数据库 Oracle Timesten是一款高性能的内存数据库,特别设计用于高速事务处理和实时数据分析。它能够提供极低的延迟和高吞吐量,非常适合电信行业的实时计费和交易处理等应用场景。...

    timesten 内存数据库 sql语法参考【pdf】

    **Timesten内存数据库SQL语法参考** Timesten内存数据库是Oracle公司推出的一款高性能、低延迟的内存数据存储系统,特别适用于需要实时处理大量数据的应用场景。它将数据存储在内存中,从而提供了比传统磁盘数据库...

    内存数据库Timesten-SQL

    首先,文档标题为“内存数据库Timesten-SQL”,说明这是关于Timesten内存数据库的SQL语言参考指南。文档的描述中提到“Oracle TimesTen In-Memory Database SQL Reference Guide Release 7.0”,指出这是一份关于...

    TimesTen内存数据库

    Oracle TimesTen In-Memory Database是一个完全驻留在物理内存中的数据库,它通过标准SQL接口提供快速的数据访问。这种设计使得应用程序可以直接与数据交互,避免了传统数据库通过IPC连接带来的延迟。此外,TimesTen...

    TimesTen安装配置-Oracle 内存数据库.doc.doc

    Oracle TimesTen是一款高性能的内存数据库系统,设计用于实时数据处理和快速查询响应。它被广泛应用于交易处理、实时分析和其他对速度有极高要求的应用场景。以下是对TimesTen安装配置的详细步骤和涉及的知识点: 1...

    timesten 内存数据库的C++开发参考手册【pdf】

    Timesten是Oracle公司的一款高性能、实时的内存数据库系统,它设计用于处理大量的在线事务处理(OLTP)工作负载,尤其是在需要快速响应时间和低延迟的场景中。在C++环境下开发Timesten应用,可以充分利用C++的性能...

    oracle timesten内存数据库文档

    Oracle Timesten是一款高效、高性能的内存数据库系统,由甲骨文公司开发,主要用于实时应用程序。它设计的目标是提供亚毫秒级的数据访问速度,从而极大地提升了数据处理的速度和响应时间。以下是对每个文档的详细...

    Timesten内存数据库与Json数据转换

    ### Timesten内存数据库与JSON数据转换 #### 概述 在现代软件开发过程中,内存数据库因其高速的数据处理能力而受到广泛青睐。Oracle Timesten就是一款高性能的内存数据库产品,它被设计用于实时分析、交易处理等...

    Timesten内存数据库新特性.ppt

    总的来说,Oracle TimesTen 11gR2的新特性极大地扩展了其作为内存数据库平台的能力,使其更易于集成到现有的Oracle应用环境中,同时也为开发者提供了更丰富的工具集,如OCI和Pro*C/C++,以构建响应快速、高性能的...

    Oracle timesten 深入内存数据库

    综上所述,Oracle Timesten内存数据库是为需要快速响应和高性能的实时应用而设计的。其独特的优势在于其内存优化的设计,能够提供比传统磁盘数据库更快的处理速度和更高的可伸缩性。由于其易安装、易配置的特点,...

    Oracle Timesten内存数据库自动数据清理机制探究.pdf

    Oracle Timesten内存数据库自动数据清理机制探究.pdf

    TimesTen Patchset 17019459 -01

    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

    129255-oracle_timesten_in-memory_database

    - **改变数据存储位置的假设**:与传统基于磁盘的数据库不同,Oracle TimesTen In-Memory Database 将数据主要存储在内存中,这极大地提高了访问速度和效率。 - **优化的数据结构和访问算法**:通过对数据结构和访问...

    Oracle_TimesTen内存数据库_6.0版推荐编程实践

    ### Oracle_TimesTen内存数据库_6.0版推荐编程实践 #### 一、概述 Oracle TimesTen内存数据库6.0版是一款高性能的内存数据库管理系统,主要用于实时数据分析和交易处理等场景。为了帮助开发者构建高性能且稳定的...

    Timesten内存数据库支持json格式的包

    在Oracle的Timesten内存数据库中,由于原生不支持JSON格式处理,开发人员面临着将JSON数据与数据库之间进行转换的挑战。为了克服这一限制,文章的作者编写了一个名为PK_TT_JSON的PL/SQL包,这个包的主要功能是帮助在...

Global site tag (gtag.js) - Google Analytics