Timesten for windows 配置流程

基本流程是基于百度后自己更改并添加部分注解。 



目  录

一.       安装TimesTen. 1

二.       配置TT数据库(即DSN)... 1

1.     配置过程... 1

2.     查看TT状态... 4

3.     创建TT用户... 5

三.       设置Cache Connect. 5

1.     创建Oracle用户... 5

2.     更新DSN配置... 6

3.     创建测试表... 7

4.     创建cache. 7

5.     创建TimesTen表空间... 8

6.     创建timesten 用户... 8

7.     创建Grid. 8

8.     创建Cache Group. 9

四.       用SQL Developer连接TT. 10

五.       异常处理... 12

1.     connect test_tt报错... 12

2.     执行call ttcacheuidpwdset(’tt’,'tt’)报错... 12

3.     create readonly cache group报错... 12


一. 安装TimesTen

1.      确认安装TimesTen的服务器上已经有jdk,且jdk的版本为1.5或1.6。

2.      确认服务器访问oracle的配置文件tnsnames.ora的路径,该路径是TimesTen安装时,需要指定的TNS_ADMIN的值。如“F:\oracle\product\10.2.0\client_1\NETWORK\ADMIN”。

二. 配置TT数据库(即DSN)

TT数据库中,一个DSN即是一个TT实例。

1.      配置过程

在安装TT软件后,可通过如下步骤配置DSN:

1.        进入“控制面板–> 管理工具 -> 数据源(ODBC)”,在“系统DSN”页签,选择“添加”。

2.        选择数据库驱动程序,TimesTen相关的驱动程序有2个,"TimesTen Client 11.2.2"是用于访问非本机数据库用的,由于我们要在本机建立数据库,所以选择"TimesTen Data Manager 11.2.2”。

3.        配置DSN基本属性。

在选择DataSourcePath时,要确保该目录已经存在。

且此处DatabaseCharacter Set必须与Oracle的字符集相同,如果不同,后面还需要重新配置数据源。

4.        配置数据库的大小。只需要设置Permanent Data Size和Temporary Data Size的大小,单位均是M。

5.        配置字符集。这里的字符集也是必须与Oracle保持一致。

6.        配置完成后,依次点击“OK”、“确定”,保存设置。

7.        在cmd窗口,执行ttisql test_tt,检查DSN是否创建成功。或是在ttisql下,执行connect test_tt。

正常情况下应如下图所示:

2.      查看TT状态

另外在一个cmd窗口,执行ttstatus检查tt状态:

C:\Documentsand Settings\Administrator>ttstatus

TimesTenstatus report as of Tue Sep 11 11:02:45 2012

 

Daemon pid 696port 53392 instance tt1122_32

TimesTenserver pid 1244 started on port 53393

------------------------------------------------------------------------

Data storee:\mydemo\test_tt

There are 12connections to the data store

Shared MemoryKEY Global\test_tt.e||mydemo.SHM.10 HANDLE 0x288

PL/SQL MemoryKEY Global\test_tt.e||mydemo.SHM.11 HANDLE 0x290 Address 0x5B8C000

0

Type            PID     Context    Connection Name             ConnID

Process         3420   0x01030d78  test_tt                           1

Subdaemon       1172   0x00b7c398  Manager                        2047

Subdaemon       1172   0x00bcfb00  Rollback                       2046

Subdaemon       1172   0x01845470  Flusher                        2045

Subdaemon       1172   0x01857170  Monitor                        2044

Subdaemon       1172   0x018e8ef0  Deadlock Detector              2041

Subdaemon       1172   0x0e339768  Checkpoint                     2043

Subdaemon       1172   0x0e38b4a8  Log Marker                     2042

Subdaemon       1172   0x0e3ed1f8  Aging                          2040

Subdaemon       1172   0x0e43ef38  HistGC                         2039

Subdaemon       1172   0x0e490c78  AsyncMV                        2038

Subdaemon       1172   0x0e4ea010  IndexGC                        2037

Replicationpolicy  : Manual

Cache Agentpolicy  : Manual

PL/SQLenabled.

---------------------------------------------------------------------

Accessible bygroup WWW-B1818C3ACBB\None

End of report

可以看到 DataStore e:\mydemo\test_tt 已经在运行了,且有一些后台的服务线程也已经启动。且显示了相应的TimesTen监听端口号。比如主守护进程(Daemon)的端口号是17000;Server端的监听端口号是17002,这个端口号是当Client/Server配置的时候,远程Client端连接过来时,Server端这边的服务端口号;还有WebServer(可能没有)的端口号 17004,TimesTen自身带有一个自用的webserver的。

3.      创建TT用户

在command窗口,执行如下命令创建TT用户tt:

C:\Documentsand Settings\Administrator>ttisql test_tt

 

Copyright(c) 1996-2011, Oracle.  All rightsreserved.

Type? or "help" for help, type "exit" to quit ttIsql.

 

connect"DSN=test_tt";

Connectionsuccessful: DSN=test_tt;UID=Administrator;DataStore=E:\MyDemo\test_tt

;DatabaseCharacterSet=ZHS16GBK;ConnectionCharacterSet=ZHS16GBK;DRIVER=C:\TimesTe

n\TT1122~1\bin\ttdv1122.dll;PermSize=64;TempSize=32;TypeMode=0;

(Defaultsetting AutoCommit=1)

Command>create user tt identifiedby tt;(密码不能存数字)

Usercreated.

Command>grant all to tt;

Command>quit;

三. 设置CacheConnect

1.      创建Oracle用户

由于CacheConnect访问Oracle的时候,必须有一个用户在TimesTen和Oracle中是一样的,通过这个用户登录TimesTen之后,然后 Cache Connect的底层通过这个用户去和Oracle通讯,来进行数据的两边同步。在前面我们已经创建了用户tt,那么现在在oracle中,我们也创建同样的用户tt,并授予相应的Oracle权限。

以Oracledba用户或系统用户登录Oracle,执行创建操作。

C:\Documents and Settings\Administrator>sqlplussystem/test@test

SQL> create user tt identified by aa;

用户已创建。

SQL> grant connect,resource,create anytrigger to tt;

授权成功。

SQL> grant dba to tt;

授权成功。

SQL> commit;

提交完成。

2.     更新DSN配置

在“控制面板–> 管理工具 -> 数据源(ODBC)”的“系统DSN”页签,找到之前配置的数据源test_tt,执行如下步骤更新配置:

1.        在“General Connection”页签,填上新建的TT(Timesten用户)访问Oracle的用户tt.

2.        在“IMDB Cache”页签,填上tt用户的密码,及本地配置的要访问的Oracle的服务名。

3.        配置完成后,依次点击“OK”、“确定”,保存设置。

3.      创建测试表

以tt用户登录Oracle,创建cache测试表,进入cmd窗口,输入。

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL> connecttt/aa@orcl

已连接。

SQL> createtable test(a int primary key, b char(10));

表已创建。

SQL> insertinto test values(1,aaa);

已创建 1 行。

SQL> insertinto test values(2,bbb);

已创建 1 行。

SQL> commit;

提交完成。

SQL>

4.      创建cache(此步骤所有操作需要管理员身份运行)

重新启动数据源test_tt:(此处需要映射到oracle文件夹)

C:\Documents and Settings\Administrator>ttisqltest_tt   //现在要求输入用户名tt的密码

 

Command> call ttcacheuidpwdset(tt,'tt); //前面创建的用户名和密码

(这一步为连接oracle的账号密码)

若出现如下错误:

5213: Bad Oracle loginerror in OCISessionBegin(): ORA-01017: invalid username/password; logon deniedrc = -1

 5935: Could not validate Oracle login: uid =ZSY, pwd = HIDDEN, OracleNetServiceName = orcl, TNS_ADMIN ="E:\PLSQL\instantclient_11_2", ORACLE_HOME= ""

可能是账号密码错误

则配置过TNS_ADMIN需要把环境变量改为ORACLE环境变量,重启命令行。

TNS_ADMIN = (ORACLE目录)E:\app\Administrator\product\11.2.0\dbhome_2\NETWORK\ADMIN

Command> call ttcachestart;

5209: Cannot startcache agent because no tns_admin specified during installation - usettModInstall -tns_admin to fix.. Cannot start cache agent because no tns_adminspecified during installation - use ttModInstall -tns_admin to fix.

返回cmd命令行:

C:\Users\Administrator>ttModInstall-tns_admin

5.     创建TimesTen表空间

在此之后要创建一个cache grid,只有cache grid的第一个数据库成员需要执行这个操作。注意,只有cachemanager user能创建和管理cache grid,一个cachedatabase只能属于一个cache grid,然后可以使用过程ttgridinfo来检查是否创建成功。

在创建cache grid前,要先创建表空间,然后建timesten用户,操作创建grid才不会报错。

创建一个单独的表空间来管理缓存到timesten 的对象  //表空间名字不可改

SQL>createtablespace timesten datafile 'D:\oracle\product\10.2.0\oradata\orcl\timesten.dbf'size 50m;

6.     创建timesten用户

运行initCacheGlobalSchema.sql脚本来创建用户,这用户拥有存储cache grid 和grid member信息的表。这个脚本在%TimesTen_install_dir%/oraclescripts 目录下。

在创建之前,请切换到脚本所在目录,再以oracle dba或system用户登录:

C:\TimesTen\tt1122_32\oraclescripts>

C:\TimesTen\tt1122_32\oraclescripts>sqlplus system/Younuoda2006@orcl

 

SQL>@initCacheGlobalSchema "timesten";

 

Please enterthe tablespace where TIMESTEN user is to be created

The valuechosen for tablespace is timesten

 

*******Creation of TIMESTEN schema and TT_CACHE_ADMIN_ROLE starts *******

1. CreatingTIMESTEN schema

2. CreatingTIMESTEN.TT_GRIDID table

3. CreatingTIMESTEN.TT_GRIDINFO table

4. CreatingTT_CACHE_ADMIN_ROLE role

5. Grantingprivileges to TT_CACHE_ADMIN_ROLE

** Creation ofTIMESTEN schema and TT_CACHE_ADMIN_ROLE done successfully **

 

PL/SQL 过程已成功完成。

7.     创建Grid

执行ttisql test_dsn连接内存库,创建Grid。

C:\Documents and Settings\Administrator>ttisqltest_tt

Command> call ttGridCreate('myGrid');

Command> call ttGridNameSet('myGrid');

8.      创建Cache Group

1.        创建Cache Group。

Command> create readonlycache group test_cg

           > autorefresh interval 5 seconds

           >from test

           > (a int primary key,b char(10));

其中,test_cg为Cache Group的名,test为前面在Oracle中创建的测试表。

2.        创建完后,执行cachegroups检查是否创建成功:

Command> cachegroups ;

Cache GroupTT.TEST_CG:

 

  Cache Group Type: Read Only

  Autorefresh: Yes

  Autorefresh Mode: Incremental

  Autorefresh State: Paused

  Autorefresh Interval: 5 Seconds

  Autorefresh Status: ok

  Aging: No aging defined

 

  Root Table: TT.TEST

  Table Type: Read Only

 

1 cache groupfound.

在未装载前,cache group的自动刷新状态是Paused。

3.  装载cache group。

Command> load cachegroup test_cg commit every 10 rows;

4.        检查cache group是否装载成功。

Command> select * from test;

< 1, aaa        >

< 2, bbb        >

2 rows found.

此后,在Oracle数据库中插入到test表的数据,5秒钟之后都会被刷新到TimesTen中来,Cache Connect正常运转了。

5.        通过ttstatus命令可以看到cache agent已经启动:

C:\Documents and Settings\Administrator>ttstatus test_tt

TimesTen status report as of ThuSep 13 16:18:14 2012

 

Daemon pid 2812 port 53392instance tt1122_32

TimesTen server pid 2640 startedon port 53393

------------------------------------------------------------------------

Data store e:\mydemo\test_tt

There are 16 connections to thedata store

Shared Memory KEYGlobal\test_tt.e||mydemo.SHM.10 HANDLE 0x294

PL/SQL Memory KEYGlobal\test_tt.e||mydemo.SHM.11 HANDLE 0x298 Address 0x5B8C0000

 

Type            PID     Context    Connection Name             ConnID

Cache Agent     1448   0x00df9ff0  Handler                           2

Cache Agent     1448   0x0c60ce30  Timer                             3

Cache Agent     1448   0x0d310540  Aging                             4

Cache Agent     1448   0x0d3ccd70  BMReporter(1976)                  6

Cache Agent     1448   0x0d600d10  Refresher(S,5000)                 7

Subdaemon       2924   0x00b7c398  Manager                        2047

Subdaemon       2924   0x00bcfb00  Rollback                       2046

Subdaemon       2924   0x01804dc0  Flusher                        2044

Subdaemon       2924   0x01816ac0  Monitor                        2045

Subdaemon       2924   0x018acce0  Deadlock Detector              2043

Subdaemon       2924   0x0da60048  Aging                          2042

Subdaemon       2924   0x0dac1038  AsyncMV                        2041

Subdaemon       2924   0x0db44260  Checkpoint                     2040

Subdaemon       2924   0x0db95fa0  Log Marker                     2039

Subdaemon       2924   0x0dbe7ce0  HistGC                         2038

Subdaemon       2924   0x0dc6e588  IndexGC                        2037

Replication policy  : Manual

Cache Agent policy  : Manual

TimesTen's Cache agent isrunning for this data store

PL/SQL enabled.

------------------------------------------------------------------------

Accessible by groupWWW-B1818C3ACBB\None

End of report

四. 用SQLDeveloper连接TT

在使用SQL Developer前,要确保本机上已经安装jdk。建议安装jdk1.5或jdk1.6版本。

工具首选项将timesten的jar包添加进去。

1.        打开SQL Developer。在第一次打开的时候,需要在java的安装路径下选择javaw.exe。

2.        新建连接。

选择“+”图标,或是在“连接”上右键选择“新建”。

3.        设置连接属性。选择“TimesTen”页签,连接类型为“直接驱动程序”,连接字符串的形式为“DSN=test_conn;DATASTORE=E:\MyDemo\test_tt;ORACLENETSERVICENAME=orcl;”

其中,dsn、datastore、oraclenetservicename均已在系统DSN下配置。

4.        配置完成后,点击“测试”,如果状态为成功,则表明连接成功;否则,请根据错误提示进行修改。

5.        测试后,选择“连接”。连接成功后,在数据库的图标上,会有个电源样式的小图标。表明该数据库是当前正在使用的数据库。

五. 异常处理

1.      connect test_tt报错

Command>connect test_tt;

  836: Cannot create data store shared-memorysegment, error 3

Thecommand failed.

检查之后,发现是在ODBC中设置DataStore的路径时出现错误,MyDemo目录是在E盘下而不是D盘。改了之后就能连接了。

2.      执行call ttcacheuidpwdset(’tt’,'tt’)报错

场景一:

Command> callttcacheuidpwdset('tt','tt');

 5010: No OracleNetServiceName specified in DSN

The commandfailed.

在testtt数据源中,要在General Connection页,在User Id这一栏填上tt,再点击Cache Connect页,看到Oracle User ID已经填上了tt。在Oracle ID一栏填上Oracle的ServiceName,在Oracle Password一栏填上对应的密码。

场景二:

Command>call ttcacheuidpwdset('tt','tt');

Warning  5183: Function kollglid2 was not in thelibrary. The function will not

becalled.

Warning  5183: Function kollgsnp2 was not in thelibrary. The function will not

becalled.

Warning  5186: The OCI client library in use does notcontain required routines

tosupport caching LOBS from Oracle.

该错误是由于tt用户没有dba权限引起的。

需要在Oracle中,执行

SQL> grant dba to tt;

SQL> grant create any table tott;

3.      create readonly cache group报错

Command>create readonly cache group read

> autorefresh interval 5 seconds

> from test

>(a int primary key, b char(10));

报错:

Warning  5002: Unable to connect to the cache agentfor e:\mydemo\testtt; check

agentstatus

Warning  5051: Commit message to cache agent failed.Cache agent must be restarted

可通过重启cache解决:

Command> call ttcachestop;

Command> call ttcachestart;

 

 

OCI连接TimesTen数据库

Note: 一套完全相同的代码,就可以同时用于访问Oracle数据库或TimesTen数据库。

首先我们在ORACLE数据库的配置文件tnsnames.ora中定义服务tnssampledb_1122(之前自己创建的TT Service Name)指向Oracle数据库。以下为tnsnames.ora中的tnssampledb_1122服务和Oracle数据库TTORCL的定义:

 

tnssampledb_1122 =

 (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521))

    )

    (CONNECT_DATA =

              (SID = orcl)

    )

 )

 

TTORCL =

tnssampledb_1122 =

 (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521))

    )

    (CONNECT_DATA =

              (SID = orcl)

    )

 )

之后需要修改TimesTen数据库配置文件tnsnames.ora(在安装文件里的network文件夹中)中tnssampledb_1122服务的定义,使其指向TimesTen:

tnssampledb_1122=

(DESCRIPTION=

(CONNECT_DATA =

 (SERVICE_NAME = sampledb_1122)(SERVER =timesten_direct)))

到此,配置完成,可用OCI连接TT数据库

猜你喜欢

转载自blog.csdn.net/qq249356520/article/details/78809210