这种模式应该是最有价值的
两台TT同时对外提供服务,TT直接通过复制实现数据同步,
同时每个TT都通过cache agent把变化的数据传递到后台的ORACLE,这种架构应该是我们最关心的,也是最有用的。
如何配置呢?
以如下环境为例说明
主机 rac01安装了TT ,data store放在 /oracle/timesten/TimesTen/tt70/info/wzy ,文件以wzy开头,DSN=wzy_tt70
主机 rac02安装了TT ,data store放在 /oracle/timesten/TimesTen/tt70/info/wzy ,文件以wzy开头,DSN=wzy_tt70
数据库为一RAC,分别装在rac01和rac02,SID分别为rac1和rac2
1.在oracle上面建立需要同步的表
sqlplus tt/[email protected]
create table t1(id number(2) primary key);
2.配置rac01和rac02的oracle client的tnsnames.ora,
加上
RAC1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac01)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
(INSTANCE_NAME = rac1)
)
)
3.配置rac01和rac02上得wzy_tt70,最后如下
[wzy_tt70]
Driver=/oracle/timesten/TimesTen/tt70/lib/libtten.so
DataStore=/oracle/timesten/TimesTen/tt70/info/wzy/wzy
DatabaseCharacterSet=WE8ISO8859P1
Authenticate=0
PermSize=64
TempSize=16
UID=tt
OracleId=rac1
OraclePwd=tt
4.在rac01和rac02的TT上面分别创建到oracle的cache
ttIsql wzy_tt70
Command>call ttCacheUidPwdSet('tt','tt');
Command>call ttCacheStart;
Command>CREATE USERMANAGED CACHE GROUP update_anywhere_t1
>AUTOREFRESH
>State off
>MODE INCREMENTAL
>INTERVAL 5 SECONDS
>FROM t1(id number(2) primary key,PROPAGATE);
注意:AUTOREFRESH 的 State 一定要设置为 off,因为我们同时打开了两台TT的写和复制功能,就不能自动把oracle的变化同步到TT了,所以在这种情况下,就不建议在oracle上面做事物操作了。
5.在rac01和rac02的TT上面分别创建到复制
ttIsql wzy_tt70
Command> CREATE REPLICATION reptest
>ELEMENT e_1 TABLE t1 MASTER wzy on "rac01" SUBSCRIBER wzy on "rac02"
>ELEMENT e_2 TABLE t1 MASTER wzy on "rac02" SUBSCRIBER wzy on "rac01"
6.启动rac01和rac02上面的replication agent
ttAdmin -repStart wzy_tt70
7.在rac01上面的TT从oracle load data
LOAD CACHE GROUP update_anywhere_t1 COMMIT EVERY 256 ROWS;
完工了,一个具有最高可用性的,而且最有实际价值的TT架构就完成了。。。
希望后面还有时间来写一些performance tuning ,trouble shooting 和best practices方面的内容。。。