TimesTen for Windows 使用指南(4) Cache Connect

下面介绍在Windows平台上,TimesTen如何通过Cache Connect访问Oracle。如果试验的时候,Oracle是和TimesTen在同一台机子上,则不用过多的配置。如果Oracle和 TimesTen不在同一台机子上,则必须安装Oracle的客户端程序,目前TimesTen支持的Oracle客户端如下:

Oracle 10g Release 2 (Oracle 10.2.0.1.0 or above)
Oracle 10g Release 1 (Oracle 10.1.0.5.0 or above)
Oracle 9i Release 2 (Oracle 9.2.0.8.0 or above)

不管通过哪种Oracle模式,首先必须启动Oracle数据库以及listener。

D:\>oradim -startup -sid orcl -syspwd welcome
D:\>lsnrctl

并能成功地通过和TimesTen在同一台服务器上的SqlPlus来成功访问Oracle,才算Oracle配置好。

由于Cache Connect访问Oracle的时候,必须有一个用户在TimesTen和Oracle中是一样的,通过这个用户登录TimesTen之后,然后 Cache Connect的底层通过这个用户去和Oracle通讯,来进行数据的两边同步。在前面我们已经创建了用户tt,那么现在在oracle中,我们也创建同样的用户tt,并授予相应的Oracle权限。

sqlplus / as sysdba
SQL> [color=green]CREATE USER tt IDENTIFIED BY tt;[/color]
SQL>[color=green] GRANT connect, resource, create any trigger TO testuser;[/color]
SQL>[color=green] COMMIT;[/color]
SQL> [color=green]EXIT[/color]

现在到控制面板–>ODBC数据源管理–>系统DSN–>test,双击之后,点击General Connection页,在User Id这一栏填上tt,如下:

[img]http://www.ttisql.com/images/win-usage-10.jpg[/img]


然后再点击Cache Connect页,看到Oracle User ID已经填上了tt,且不能被修改了,这是因为这个用户名必须和TimesTen中的一样。在Oracle ID一栏填上Oracle的Service Name,在Oracle Password一栏填上对应的密码。如下图所示:


[img]http://www.ttisql.com/images/win-usage-11.jpg[/img]

点击确定即可。[color=red]现在用tt用户登录Oracle数据库,并创建测试用的表[/color]。

SQL> connect tt/tt@orcl
已连接。
SQL> [color=green]create table test(a int primary key, b char(10));[/color]
表已创建。
SQL> [color=green]insert into test values(1,’aaa’);[/color]
已创建 1 行。
SQL> [color=green]insert into test values(2,’bbb’);[/color]
已创建 1 行。
SQL> [color=green]commit;[/color]
提交完成。
SQL>


用ttisql登录到test数据源,设置好cacheuidpwd,启动cache agent,并创建只读的cache group,如下:

D:\>[color=green]ttisql test[/color]
Copyright (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=test";
Enter password for ‘tt’:
Connection successful: DSN=test;UID=tt;DataStore=C:\TimesTen\ds\test;DatabaseCha
racterSet=ZHS16GBK;ConnectionCharacterSet=US7ASCII;DRIVER=C:\TimesTen\tt70_32\bi
n\ttdv70.dll;OracleId=orcl;TypeMode=0;
(Default setting AutoCommit=1)
Command> [color=green]call ttcacheuidpwdset(’tt’,'tt’);[/color]

[color=red]这一步的前提必须设置系统环境变量TNS_ADMIN:D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN ,在这个文件夹里有tnsnames.ora文件。另外要设置oracle的用户tt具有DBA权限。[/color]

Command> [color=green]call ttcachestart;[/color]

[color=red]在此之后要创建一个cache grid[/color],只有cache grid的第一个数据库成员需要执行这个操作。注意,只有cache manager user能创建和管理cache grid,一个cache database只能属于一个cache grid,然后可以使用过程ttgridinfo来检查是否创建成功。[color=red]在创建cache grid前,要先创建表空间,然后建timesten用户,操作创建grid才不会报错。[/color]

创建一个新的表空间:创建一个单独的表空间来管理缓存到timesten 的对象
SQL>[color=green]create tablespace timesten datafile 'D:\oracle\product\10.2.0\oradata\orcl\timesten.dbf' size 50m;[/color]

创建timesten 用户:运行initCacheGlobalSchema.sql脚本来创建用户,这用户拥有存储cache grid 和grid member信息的表。这个脚本在%TimesTen_install_dir%/oraclescripts 目录下。
SQL>[color=green]@c:\TimesTen\tt1121_32\oraclescripts\initCacheGlobalSchema "timesten";[/color]

Command> [color=green]call ttGridCreate('myGrid');[/color]

Command> [color=green]call ttGridNameSet('myGrid');[/color]

Command> [color=green]create readonly cache group read
> autorefresh interval 5 seconds
> from test
> (a int primary key, b char(10));[/color]
Command>

这里要说明的是,如果前面创建test的时候的字符集和Oracle数据库中的字符集不一样的话,就会报错而不能登录。这时候要统一两者的字符集,为方便起见,修改test数据源的字符集。首先必须destroy掉test数据源(通过控制台命令ttdestroy test完成),因为字符集是在数据源创建的时候起作用的,所以只能destroy掉,然后在ODBC数据源管理中修改test数据源的字符集,使得它和 Oracle的一样,然后执行上面的步骤即可。

[color=red]注:在使用destroy时,此操作只有admin用户才能操作,建立的用户tt是不能完成此操作的,此时必须清空之前操作的ODBC数据源中填入的用户名tt,使其默认使用admin用户连接ODBC进行操作。操作完成后C:\TimesTen\ds文件夹相应的文件会被删除,重新建立数据源后会重新建立。[/color]

创建完之后可以通过cachegroups命令检查一下,并通过load加载初始化数据:

Command> cachegroups ;

Cache Group TT.READ:
Cache Group Type: Read Only
Autorefresh: Yes
Autorefresh Mode: Incremental
Autorefresh State: Paused
Autorefresh Interval: 5 Seconds
Root Table: TT.TEST
Table Type: Read Only
1 cache group found.

Command> load cache group read commit every 10 rows;
2 cache instances affected.
Command> select * from test;
< 1, aaa >
< 2, bbb >
2 rows found.
Command>

此后,在Oracle数据库中插入到test表的数据,5秒钟之后都会被刷新到TimesTen中来,Cache Connect正常运转了。通过ttstatus命令可以看到cache agent已经启动:

D:\>ttstatus cache
TimesTen status report as of Wed Dec 24 23:28:50 2008

Daemon pid 284 port 17000 instance tt70_32
TimesTen server pid 3284 started on port 17002
TimesTen webserver pid 3360 started on port 17004

————————————————————————
Data store c:\timesten\ds\test
There are 11 connections to the data store
Data store is in shared mode
Shared Memory KEY Global\test.SHM.2 HANDLE 0×248
Type PID Context Connection Name ConnID
Cache Agent 3396 0×00b5d310 Handler 2
Cache Agent 3396 0×00bccf18 Timer 3
Cache Agent 3396 0×06591ce0 Aging 4
Cache Agent 3396 0×06601260 ttora70 5
Cache Agent 3396 0×06662fb8 ttora70 6
Subdaemon 3120 0×006cc398 Worker 2042
Subdaemon 3120 0×066d1170 Flusher 2043
Subdaemon 3120 0×06700628 Checkpoint 2044
Subdaemon 3120 0×0674f8b0 Aging 2045
Subdaemon 3120 0×0679eb38 HistGC 2046
Subdaemon 3120 0×067eded0 Monitor 2047
Replication policy : Manual
Cache agent policy : Manual
TimesTen’s Cache agent is running for this data store
————————————————————————
Access control enabled.
End of report

D:\>

而且还多了一堆辅助的子线程。

至此每当oracle数据库中的数据更新后,5秒后timesten里德数据也会同步更新。

[color=red]注:网上一些例子都是timesten7及之前版本的,在timesten11里并不适用,可参考官方文档:[/color]
http://download.oracle.com/docs/cd/E13085_01/doc/timesten.1121/e13073/gettingstarted.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值