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’);
Command> call ttcachestart;
Command> create readonly cache group read
>  autorefresh interval 5 seconds
>  from test
> (a int primary key, b char(10));
Command>
 
这里要说明的是,如果前面创建test的时候的字符集和Oracle数据库中的字符集不一样的话,就会报错而不能登录。这时候要统一两者的字符集,为方便起见,修改test数据源的字符集。首先必须destroy掉test数据源(通过控制台命令ttdestroy test完成),因为字符集是在数据源创建的时候起作用的,所以只能destroy掉,然后在ODBC数据源管理中修改test数据源的字符集,使得它和Oracle的一样,然后执行上面的步骤即可。
 
创建完之后可以通过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,sql,sql,windows,cache,server)