设为首页 收藏本站
查看: 1067|回复: 0

[经验分享] timesten系列五:如何定义cache,和后台oracle数据库同步数据

[复制链接]

尚未签到

发表于 2016-8-3 06:05:11 | 显示全部楼层 |阅读模式
TT最典型的应用,就是TT后台连接一个oracle数据库,TT只保留少量的最需要的数据以提供最快的访问速度,尔后台oracle数据库则用来保留所 有的数据,在TT需要的时候,可以从oracle里面自动抽取数据到TT,当然,TT里面的数据也可以自动同步到oracle,这个功能,是目前其他内存 型数据库暂时无法提供的,或者不可能做到这么好的,毕竟TT和oracle是同一家公司的产品,当然能够更好的无缝集成了。


在TT里面,cache有下面几种类型
1.read only
数据从oracle 自动刷新到 TT里面,TT里面无法做修改。
典型应用是在TT里面保存只读的产品信息,用户信息等等,定期从oracle刷新该信息
2.异步写
数据在TT里面更新,异步传递到oracle 。
这种比较适合在TT上面做事务性操作,然后同步到oracle
3.同步写
数据在TT里面更新,同步传递到oracle 。
这种比较适合在TT上面做事务性操作,然后同步到oracle
4.人工管理的cache
在这种模式下,数据可以同时在TT和oracle里面更新,自动同步到对方。
这种方式最灵活,但是需要考虑数据冲突的问题,比如同时在oracle和TT上面修改统一条记录,怎么处理。
当然TT提供了基于时间戳的处理机制。

同步的原理是在oracle上面更新的数据会通过trigger捕获记录下来,然后通过cache agent定期来获取这些信息同步到TT。
而TT上的同步则是通过分析TT的操作日志来获得做了那些DML操作,然后通过cache agent同步到oracle .
由于我们第一次安装TT的时候,没有安装 cache connect to oracle ,所以还无法实现和oracle的通信,
所以首先我们需要做得就是安装 cache connect to oracle .

如果在配置cache之前,没有安装oracle client,请先安装好oracle client 。
TT支持如下版本的oracle client
9.2.0.8 or above
10.1.0.5 or above
10.2.0.1 or above

很简单的操作步骤,还是执行 setup.sh
./setup.sh -installCache ,然后安装提示,一路next下去,就ok了,详细信息请看下面的log


[timesten@rac01 linux86]$ ./setup.sh -installCache

There is 1 TimesTen instance installed locally :

1) tt70 (TimesTen7.0.5.0.0)

NOTE: There is only one instance which can be upgraded.

Instance Name : tt70
Product Installed : TimesTen7.0.5.0.0
Installation Directory : /oracle/timesten/TimesTen/tt70
BitLevel : 32
Component Installed : Client/Server and DataManager
Daemon Port : 17000

Would you like to upgrade this instance? [ yes ]

Extracting Cache Connect to Oracle ...

The following variables have been set in the file :
/oracle/timesten/TimesTen/tt70/bin/ttThunk

ORACLE_HOME=/oracle/product/10.2.0/db_1
LD_LIBRARY_PATH=/oracle/timesten/TimesTen/tt70/lib:/oracle/product/10.2.0/db_1/lib32:/oracle/product/10.2.0/db_1/network/lib32:/oracle/product/10.2.0/db_1/lib:/oracle/product/10.2.0/db_1/network/lib

Would you like to enable the Cache Connect to Oracle Administrator? [ yes ]
What TCP/IP port number would you like Cache Connect to Oracle Administrator to listen on? [ 17004 ]

NOTE: To access the TimesTen Cache Connect to Oracle Administrator
go to the url: http://localhost:17004/cache


Restarting the daemon ...
TimesTen Daemon stopped.
TimesTen Daemon startup OK.
End of TimesTen installation.

然后检查timesten 用户的.bash_profile文件,确认 ORACLE_HOME是否设置为正确的oracle client的安装目录,
确认LD_LIBRARY_PATH ,一定要包含
$ORACLE_HOME/lib:$ORACLE_HOME/network/lib


然后在oracle上面创建 用户,以便TT用来连接到oracle
sqlplus '/as sysdba'
create user tt identified by tt;
grant connect,resource to tt;

然后修改我们创建的wzy_tt70 data store的系统级DSN(info/sys.odbc.ini),加上如下信息
#oracle数据库用户名
UID=tt
#oracle数据库连接sid
OracleId=rac1
#oracle数据库密码
OraclePwd=tt

修改后的完整DSN如下(注意:DatabaseCharacterSet必须和oracle的一致):
[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

在oracle client端的tnsnames.ora 里面添加一个名字叫rac1(对应上面定义的OracleId)的别名,如下

RAC1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
(INSTANCE_NAME = rac1)
)
)

在oracle里面创建一个测试表
sqlplus tt/tt@rac1
create table t1(id number(2) primary key);

开始创建cache group ,
ttIsql wzy_tt70
Command>call ttCacheUidPwdSet('tt','tt'); #设置连接到oracle的用户名和密码
Command>call ttCacheStart; #启动cache


创建一个read only的语法如下

CREATE READONLY CACHE GROUP readcache AUTOREFRESH INTERVAL 1 SECONDS FROM t1 (id number(2) not null primary key);

注意:from t1后面是跟oracle里面需要同步的表的名字,一定要有同样的列和字段类型,而且一定要有pk或者非空的唯一性索引字段

一个只读的cache group创建好了,然后从oracle里面load一次数据,用如下语法:
LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;

然后在oracle里面insert数据,看看是否能在TT里面出现。

创建一个同步的cache group语法如下:
CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP update_t1
FROM t1 (id number(2) not null primary key);

其他的都和创建read only的语法一样。。。

那我们最关心的应该还是创建一个用户管理的cache group,因为只有用户管理的cache group ,才能实现
双向的数据同步,数据可以在oracle上面修改,也可以在TT上修改,都能及时同步到对方。
创建一个用户管理的cache group语法如下:

CREATE USERMANAGED CACHE GROUP update_anywhere_t1
AUTOREFRESH
MODE INCREMENTAL
INTERVAL 5 SECONDS
FROM t1(id number(2) primary key,PROPAGATE);

其他的操作和read only一样,比如创建完成之后,需要第一次load数据 。

其中:MODE INCREMENTAL 说明我们从oracle里面是用增量的方式同步数据(会在oracle上面自动创建trigger和额外的表来记录oracle dml的信息),INTERVAL 5 SECONDS 定义每5S从oracle同步一次信息, 尔 PROPAGATE 则定义 TT的dml操作需要同步到 oracle 。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-252203-1-1.html 上篇帖子: 在RED HAT ENTERPRICE LINUX4 上安装ORACLE 10G (10.2.0.1.0) 下篇帖子: ★★★ oracle外连接,Oracle中Left Outer Join和外关联(+)的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表