1 Oracle的Schema用户
$ sqlplus sysprod as sysdba
CREATE USER oratt IDENTIFIED BY oracle;
GRANT CREATE SESSION, RESOURCE TO oratt;
alter user oratt quota unlimited on users;

2TimesTen端的Schema用户,与Oracle数据库端统一
$ ttisql ttdb
create user oratt identified by timesten;
grant create session, create table to oratt;

2 TimesTen端的Cache管理员
CREATE USER cacheadm IDENTIFIED BY timesten;
GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE, DROP ANY TABLE TO, ALTER ANY TABLE,www.cungun.com DELETE ANY TABLE ,SELECT ANY TABLE to cacheadm;

ttisql "uid=oratt;pwd=timesten;dsn=ttdb"
ttisql "uid=cacheadm;pwd=timesten;dsn=ttdb"
测试连贯TimesTen页游数据库
[timestenrac2 conf]$ ttisql "uid=oratt;pwd=timesten;dsn=ttdb"

Copyright (c) 1996, 2021, Oracle and/or its affiliates. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "uid=oratt;pwd=;dsn=ttdb";
Connection successful: DSN=TTDB;UID=oratt;DataStore=/u01/database/data/ttdb;DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;DRIVER=/home/oracle/tt181/install/lib/libtten.so;LogBufMB=256;LogBufParallelism=8;LogDir=/u01/database/log;PermSize=512;TempSize=64;OracleNetServiceName=prod;
(Default setting AutoCommit=1)
Command> exit
Disconnecting...
Done.
[timestenrac2 conf]$ ttisql "uid=cacheadm;pwd=timesten;dsn=ttdb"
Copyright (c) 1996, 2021, Oracle and/or its affiliates. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "uid=cacheadm;pwd=;dsn=ttdb";
Connection successful: DSN=TTDB;UID=cacheadm;DataStore=/u01/database/data/ttdb;DatabaseCharacterSet=AL32UTF8;ConnectiwwwwwwonCharacterSet=AL32UTF8;DRIVER=/home/oracle/tt181/install/lib/libtten.so;LogBufMB=256;LogBufParallelism=8;LogDir=/u01/database/log;PermSize=512;TempSize=64;OracleNetServiceName=prod;
(Default setting AutoCommit=1)
Command>

3 Oracle端的Cache管理员
此管理员用户名为cacheadm, 口令为oracle。该用户名与Timeten端cache管理员雷同
先切换到指定目录 ,因为此目录下有需执行的SQL脚本:

cd $TIMESTEN_HOME/install/oraclescripts
sqlplus sysprod as sysdba

执行以下SQL:
CREATE TABLESPACE cachetblsp DATAFILE 'cachetblsp.dbf' SIZE 100M;

CREATE USER cacheadm IDENTIFIED BY oracle DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp;

grantCacheAdminPrivileges "cacheadm"

4在TimesTen中缓存Oracle Cache管理员的口令
应用timesten cache管理员登录:
这个明码是Cache Agent后盾用的,执行如autorefresh这样的操作,就得事后用ttCacheUidPwdSet存起来。
$ ttIsql "DSN=ttdb;UID=cacheadm;PWD=timesten;OraclePWD=oracle" <<<<<这里有两个明码,一个是TT端cacheadm,一个是Oracle数据库端cacheadm
call ttCacheUidPwdSet('cacheadm','oracle'); <<<<存储Oracle数据库端cacheadm的明码

留神:DNS文件中OracleNetServiceName的设置,必须与tnsnames.ora中保持一致,也就是这个到Oracle的主动工作须要应用网络连接,这个配置要统一能力找到
Oracle数据库,后面cacheadm和其明码都存好了,也就能够主动执行一些数据保护工作,比方主动定时刷新数据。

5缓存功能测试
(1)在Oracle库中创立测试表(基表)
$ sqlplus oratt/oracleprod
CREATE TABLE readtab (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32));

插入数据:
INSERT INTO readtab VALUES (1, 'Hello');
COMMIT;

(2)赋权给缓存管理员cacheadm,该用户对表readtab有select对象权限,对writetab有select,insert,update,delete对象权限。

GRANT SELECT ON readtab TO cacheadm;

(3)启动缓存代理
$ ttAdmin -cacheStart ttdb
从ttstatus能够查看以后缓存代理过程,截取ttstatus的局部信息
Type PID Context Connection Name ConnID
Cache Agent 5991 0x0000000001251e10 Marker(140183514806016) 6
Cache Agent 5991 0x00007f7eb00a4ae0 LogSpaceMon(140183516911360) 7
Cache Agent 5991 0x00007f7eb801ec70 Timer 3
Cache Agent 5991 0x00007f7ebc0c8820 Refresher(S,5000) 4
Cache Agent 5991 0x00007f7ebc1fa330 BMReporter(140183512700672) 5
Cache Agent 5991 0x00007f7ec004a1f0 Refresher(S,5000)(140183510595 1
Cache Agent 5991 0x00007f7f0807e9d0 Handler 2

$ ttisql "uid=cacheadm;pwd=timesten;dsn=ttdb;oraclepwd=oracle"
CREATE READONLY CACHE GROUP readcache <<<<<<创立只读缓存组
AUTOREFRESH INTERVAL 5 SECONDS <<<<<<5秒主动刷新一次
FROM oratt.readtab <<<<<<刷新对象oratt.readtab表,这里页定义了该表
(keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32));

缓存组信息如下:
Command> cachegroup

Cache Group CACHEADM.READCACHE:

Cache Group Type: Read Only
Autorefresh: Yes
Autorefresh Mode: Incremental
Autorefresh State: On
Autorefresh Interval: 5 Seconds
Autorefresh Status: ok
Aging: No aging defined

Root Table: ORATT.READTAB
Table Type: Read Only

(4) 刷新操作,Oracle与TimesTen数据统一:

$ ttisql "uid=cacheadm;pwd=timesten;dsn=ttdb;oraclepwd=oracle"
LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
Oracle端查问
SQL> select * from oratt.readtab;

KEYVAL STR


2 World
1 Hello
3 Hallo
4 Four
5 Five
6 Six

6 rows selected.

TimesTen端查问
Command> select * from readtab;
< 1, Hello >
< 2, World >
< 3, Hallo >
< 4, Four >
< 5, Five >
< 6, Six >
6 rows found.

目前Oracle数据库端与TimesTen端数据同步,后续当Oracle数据库端表readtab数据变更,则TimesTen端数据主动装置同步。