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

来源:互联网 发布:西安软件公寓公租房 编辑:程序博客网 时间:2024/05/16 14:42

这章将讨论怎样使用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 9Client或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 User Installation 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权限:

ttIsql TT_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

使用ttIsql cachegroups命令来检查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_name COMMIT EVERY 0 ROWS。

e. 在加载每个缓存集合之后,提交事务并发送一个检查点。

f. 使用日志重新将应用连接到TimesTen数据存储。

g. 启动缓存代理。

8

如果需要复制,则在缓存集合表上创建TimesTen复制计划。

9

如果要复制缓存集合表或缓存集合是异步写(AWT)方式,则启动复制代理。

注意:当复制代理正在运行时,不能创建或删除AWT缓存集合。

10

加载缓存集合并提交(如果不执行第7步)。使用LOAD

CACHE GROUP cache_group_name COMMIT EVERY ROWS。对于n的推荐值为256。


原创粉丝点击