Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1115665
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2009-11-29 11:08:06

用户管理cache group可以实现不论在Timesten端还是Oracle端对表进行操作,都可以及时地将变化传递到对方。
下面创建了一个用户管理的cache group,自动刷新采用增量的模式,增量模式创建cache group时,会在Oracle上创建一个触发器实现增量刷新。
STATE的状态为ON,表示打开自动刷新,创建之后不需要load,Oracle端数据信息会自动刷新过来。之后还可以通过ALTER CACHE GROUP命令修改该状态。
表级别的设置,PROPAGATE表示在Timesten端的commit之后,会将变化及时发布到Oracle上,如果设置为NOT PROPAGATE,commit之后还需要flush才可以将变化刷新过去。
如果用NOT PROPAGATE就不能使用AUTOREFRESH,或者所有表都必须是readonly才行。
 
CREATE USERMANAGED CACHE GROUP UpdateAnywhereCustomers
AUTOREFRESH
MODE INCREMENTAL
INTERVAL 30 SECONDS
STATE ON
FROM
CUSTOMER (CUSTID INT NOT NULL,
NAME CHAR(100) NOT NULL,
ADDR CHAR(100),
ZIP INT,
PRIMARY KEY(CUSTID),
PROPAGATE);
 
在Timesten端update一条记录之后,在Oracle端能够及时看到变化。
Command> update customer set name='Jack' where custid=100;
SQL> select * from customer;
    CUSTID NAME       ADDR                   ZIP REGION
---------- ---------- --------------- ---------- ----------
       105 Deph       ShenNan Road            21 LuoHu
       106 Kaka       ShenNan Road            22 LuoHu
       150 Linda      ZhaoShang Road          88 SheKou
       234 Obma       CaiTian Road            19
       129 Jornde     CaiTian Road            23
       221 Adex       CaiTian Road            21
       100 Jack       DongBing Road           10 NanShan
       107 Grde       BaiShi Road             77
       101 Polo       KeYuan Road              7 NanShan
       147 Buker      ZhaoXie Road            16
已选择10行。
 
在Oracle端update一条记录,到达30秒更新周期时,会刷新到Timesten端去。
不是需要等待30秒,而是等待到达30秒的刷新周期。
 
用NOT PROPAGATE就不能使用AUTOREFRESH,创建之后需要LOAD一次数据,之后需要手动刷新Timesten才能同步Oracle端的数据。
在Timesten端的操作,也需要使用flush命令才可以同步到Oracle端。
CREATE USERMANAGED CACHE GROUP UpdateAnywhereCustomers
FROM
CUSTOMER (CUSTID INT NOT NULL,
NAME CHAR(100) NOT NULL,
ADDR CHAR(100),
ZIP INT,
PRIMARY KEY(CUSTID),
NOT PROPAGATE);
 
Command> update customer set name='Jack' where custid=100;
1 row updated.
Command> flush cache group updateanywherecustomers;
10 cache instances affected.
SQL> select * from customer;
    CUSTID NAME       ADDR                   ZIP REGION
---------- ---------- --------------- ---------- ----------
       105 Deph       ShenNan Road            21 LuoHu
       106 Kaka       ShenNan Road            22 LuoHu
       150 Linda      ZhaoShang Road          88 SheKou
       234 Obma       CaiTian Road            19
       129 Jornde     CaiTian Road            23
       221 Adex       CaiTian Road            21
       100 Jack       DongBing Road           10 NanShan
       107 Grde       BaiShi Road             77
       101 Polo       KeYuan Road              7 NanShan
       147 Buker      ZhaoXie Road            16
已选择10行。
阅读(1489) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~