日期:2014-05-17  浏览次数:20796 次

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> CREATE USER tt IDENTIFIED BY tt;
SQL> GRANT connect, resource, create any trigger TO testuser;
SQL> COMMIT;
SQL> EXIT

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




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




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

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


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

D:\>ttisql test
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> call ttcacheuidpwdset(’tt’,'tt’);

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

Command> call ttcachestart;

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

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

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

Command> call ttGridCreate('myGrid');

Command> call ttGridNameSet('myGrid');

Command> create readonly cache group read
>  autorefresh interval 5 seconds
>  from test
>