发表于: 2006.07.05 22:10
分类: TIMESTEN
出处: http://yangtingkun.itpub.net/post/468/130399
---------------------------------------------------------------
配置READONLY CACHE GROUP的过程并不算很复杂,但是由于对Timesten数据库和Cache Connect to Oracle特性都不是很了解,按照文档进行配置的时候还是出了一些小的问题。这篇文章简单总结整理一下。
第一步首先是安装Oracle的客户端或服务器。这个步骤就不描述了。
第二步是安装Timesten的Cache Connect to Oracle选项。在Windows平台,安装极其简单,点击几个按钮,基本上就搞定了。对于Linux和Unix系统,安装也不是很复杂,但是比Windows环境要复杂一些,需要考虑用户以及操作系统的一些参数的调整。这步也不打算详细描述,以后有时间会整理一个安装的文档。
第三步是设置系统的DSN。这个步骤其实应该是整个例子的关键所在。如果配置正确了,那么后面的操作其实都是很简单的。但是由于对Timesten使用较少,对Timesten的体系结构了解的不是很清晰,这个步骤很容易出现问题。
对于Windows系统和Unix系统的主要区别在于:Windows系统提供数据源工具,可以图形化配置DSN。而UNIX环境需要建立一个文本的DSN文件,里面包含必要的参数。
其实,对于不同的平台来说,要实现相同的功能需要配置的参数是一样的,只不过配置的方式和配置文件不大相同。
配置Cache Connect to Oracle需要配置文件中包含一下参数:
Data Store Path、Permanent Data Size、Temporary Data size。这三个参数和不配置Cache Connect的配置一样。除了上面的三个参数,还需要:U(SER)ID、OraclePWD以及OracleId。正确的配置了这些参数,就能保证Timesten数据库能正确访问Oracle数据库。如果是UNIX平台,且设置了ACCESS CONTROL,则还需要PWD参数。
然后通过TTISQL使用配置好的DSN。连接后,Timesten会将连接信息和一些初始化的设置显示在屏幕上。
第四步,也是最后一步,就是通过SQL来建立和维护Cache Group。
下面贴出一个简单的例子。
首先登陆Oracle,建立测试的用户和表。
SQL> CREATE USER YANGTINGKUN IDENTIFIED BY ABC;
用户已创建
SQL> GRANT CONNECT, RESOURCE TO YANGTINGKUN;
授权成功。
SQL> CONN YANGTINGKUN/ABC@TEST1
已连接。
SQL> CREATE TABLE T (ID NUMBER(5) PRIMARY KEY, NAME VARCHAR2(30));
表已创建。
SQL> INSERT INTO T VALUES (1, 'YANGTK');
已创建 1 行。
SQL> INSERT INTO T VALUES (2, 'ABC');
已创建 1 行。
SQL> COMMIT;
提交完成。
下面配置系统的DSN,设置DSN名称为TEST_CACHE,UID为YANGTINGKUN,ORACLEID为TEST1,ORACLEPWD为ABC。
F:>TTISQL TEST_CACHE
Copyright (c) 1996-2006, 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_CACHE";
Connection successful: DSN=TEST_CACHE;UID=YANGTINGKUN;DataStore=F:timestenstoreTEST_CACHETEST_CACHE;DRIVER=C:WINDOWSSystem32ttdv60.dll;OracleId=TEST1;PermSize=20;TempSize=20;
(Default setting AutoCommit=1)
Command> CALL TTCACHEUIDPWDSET('YANGTINGKUN', 'ABC');
Command> CALL TTCACHESTART();
Command> CREATE READONLY CACHE GROUP TESTCACHE
> AUTOREFRESH INTERVAL 5 SECONDS
> FROM T (ID INT PRIMARY KEY, NAME VARCHAR(30));
Warning 5112: Cache table YANGTINGKUN.T contains VARCHAR column(s). Oracle VARC
HAR comparison rule is different.
Command> DESC T;
Table YANGTINGKUN.T:
Columns:
*ID INTEGER NOT NULL
NAME VARCHAR (30) INLINE
1 table found.
(primary key columns are indicated with *)
Command> SELECT * FROM T;
0 rows found.
Command> LOAD CACHE GROUP TESTCACHE COMMIT EVERY 30 ROWS;
2 rows affected.
Command> SELECT * FROM T;
< 1, YANGTK >
< 2, ABC >
2 rows found.
到这里,只读的CACHE GROUP以及配置完成。
Command> INSERT INTO T VALUES (3, 'AAA');
8225: Table T is read only
The command failed.
由于表是只读的,因此修改必须在Oracle上进行:
SQL> INSERT INTO T VALUES (3, 'AAA');
已创建 1 行。
SQL> COMMIT;
提交完成。
然后切换到timesten数据库进行查询:
Command> SELECT * FROM T;
< 1, YANGTK >
< 2, ABC >
< 3, AAA >
3 rows found.
Command>
数据以及自动刷新过来了,这种刷新采用的是增量刷新,Timesten会自动在Oracle数据库中建立一些表和触发器。
SQL> SELECT * FROM TAB;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
T TABLE
TT_02_7391_L TABLE
TT_02_AGENT_STATUS TABLE
TT_02_SYNC_OBJS TABLE
TT_02_USER_COUNT TABLE
SQL> SELECT TRIGGER_NAME FROM USER_TRIGGERS;
TRIGGER_NAME
------------------------------
TT_02_7391_T
CACHE GROUP的清除比创建简单得多:
Command> DROP CACHE GROUP TESTCACHE;
Command> CALL TTCACHESTOP();
不过这个时候需要注意,Oracle中还有一些表没有清除掉。
SQL> SELECT * FROM TAB;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
T TABLE
TT_02_AGENT_STATUS TABLE
TT_02_SYNC_OBJS TABLE
TT_02_USER_COUNT TABLE











