在Oracle数据库上创建一张CUSTOMER表。
CREATE TABLE CUSTOMER (CUSTID INT NOT NULL,
NAME CHAR(100) NOT NULL,
ADDR CHAR(100),
ZIP INT,
REGION CHAR(10),
PRIMARY KEY(CUSTID));
插入若干数据。
创建一个ASYNCHROUS WRITETHROUGH cache group:
CREATE ASYNCHRONOUS WRITETHROUGH cache group Customers
FROM
CUSTOMER (CUSTID INT NOT NULL,
NAME CHAR(100) NOT NULL,
ADDR CHAR(100),
ZIP INT,
PRIMARY KEY(CUSTID));
如果之前创建的cache group已经在Timesten里建立了表CUSTOMER,再创建时会报错:
2207: Table CUSTOMER already exists
可以删除之前的cache group之后再创建,由于是cache table,所以不能只删除表,需要删除整个cache group。
8228: Cannot drop cache group table CUSTOMER; please use DROP CACHE GROUP instead
删除命令:
drop cache group CustomerOrders;
创建之后同样需要LOAD一次。
系统管理的cache group中,除了READONLY之外都不允许自动刷新。
创建ASYNCHROUS WRITETHROUGH cache group之前不允许启动Replication Agent。
5245: The operation cannot be executed while the Replication Agent for this datastore is running.
需要关闭Replication Agent才可以创建。
ASYNCHROUS WRITETHROUGH cache group是一个异步写到Oracle数据库的cache group,在Timesten上对该表做DML时,不需要等待Oracle提交后才commit,而是直接在Timesten端先commit
需要通过Replication Agent同步到Oracle端。
启动Replication Agent:
启动Replication Agent之前需要确定/etc/hosts文件中是否在IP地址和主机名。
如下:
10.0.0.1 rac01
10.0.0.2 rac02
通过命令:
ttAdmin -repStart
或在Command>内
call ttRepStart();
通过命令ttadmin -query 可以查看:
[oracle@rhel5 ~]$ ttadmin -query ldy_tt70
RAM Residence Policy : inUse
Replication Agent Policy : manual
Replication Manually Started : True
Cache Agent Policy : manual
Cache Agent Manually Started : True
ASYNCHROUS WRITETHROUGH cache group是不会自动刷新的,在Oracle的变化需要,Timesten手动刷新才能更新。
而在Timesten端的操作,只要启动了Replication Agent,并且Oracle数据库是有效的,几乎可以同时传递过去。
Timesten端:
Command> insert into customer values(221,'Adex','CaiTian Road',21);
Oracle端:
SQL> select * from customer;
CUSTID NAME ADDR ZIP REGION
---------- ---------- --------------- ---------- ----------
105 Deph ShenNan Road 21 LuoHu
106 Kaka ShenNan Road 22 LuoHu
221 Adex CaiTian Road 21
100 Harry DongBing Road 10 NanShan
107 Grde BaiShi Road 77
101 Polo KeYuan Road 7 NanShan
已选择6行。
体现异步写的特性:
在Oracle端插入一个custid=234的记录。
SQL> insert into customer values(234,'Peter','GaoXing Road',19,'FuTian');
不提交的情况下,在Timesten端插入同样custid的记录,但是其余内容不同。
插入与提交都不报错。
Command> insert into customer values(234,'Obma','CaiTian Road',19);
1 row inserted.
Command> commit;
此时如果Oracle端提交,则按Oracle端插入的内容插入,如果Oracle端rollback,则按Timesten端的内容插入。
如果数据库关闭,仍然能够在Timesten端进行操作,等待数据库有效时,通过Replication Agent同步到Oracle。
阅读(1460) | 评论(0) | 转发(0) |