如何查看timesten表结构?

269 阅读1分钟

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 ANYwww.cungun.com TABLE TO, ALTER ANY TABLE, 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>如果相对electron有更多直观理解的, 也可以参考其格式如下:

www.cungun.com

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端数据自动安装同步。