這種模式應該是最有價值的
兩台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方面的内容。。。