Timesten 学习(windows)

1. TimeTen简介

    TimeTen是oracle推出的基于内存管理的关系型数据库软件。TimesTen就是ten times,意思就是比传统的数据库要快一个数量级。传统的数据库和应用程序是两个不同的应用系统,它们之间的通讯是通过IPC连接来实现的。而TimesTen则是直接把数据库的内存映射到应用程序的地址空间中,简单来说,这时候TimesTen访问数据库中的数据,就象访问应用程序自己的数组、字符串变量一样,只不过TimesTen有一套完善的机制来实现数据的一致性和完整性。这种直接嵌入到应用程序的运行地址空间机制比IPC要高效很多。

 

2.TimeTen的下载和安装注意事项

下载地址:http://www.oracle.com/technology/global/cn/software/products/timesten/index.html

安装: TimeTen的安装过程同一般的软件安装过程一样,没什么好说的,但有一些地方需要说明一下。

       第一,安装TimesTen的访问控制(Access Control)。我们在安装TimesTen软件是,有一步会让我们选择是否启动数据的访问控制,如下图-1-所示。如果我们不启用他,那我们只能以安装TimesTen的当前用户作为访问数据的唯一用户,如果我们的TimesTen不与oracle数据库连接,不以oracle数据做为数据源我们可以不启动这个访问权限,仅用TimesTen创建一个Datastore进行访问,当但前系统用户进行访问就可以了。但是一般我们在使用TimesTen时都需要同其他数据库进行连接,比如Oracle数据库,把Oracle数据库中的数据作为数据源,加载数据到内存供应用程序使用,这个时候我们就需要启用访问控制(Access Control)功能。我们可以在安装的时候启动这个功能,也可以在安装完之后在启动他。我们运行CMD命令提示符程序,键入命令:ttmodinstall,然后根据提示选择yes还是no就可以了,如图-2-所示:

image

                         图-1-

image

                          图-2-

在两个问题我们都选NO,因为我们不需要改变端口,第三问题才是是否要启动Access Control功能,我们选YES,系统会提示要停止TimesTen服务,待服务重启后就更改成功了。注意,一旦启用了Access Control功能后我们是不能取消该功能的,如果要取消,除非是重新安装TimesTen软件才行。

      在这里我们需要弄清楚3种用户类型:

      一是操作系统用户,如我们的Administrator,Guest用户等,是安装TimesTen软件的用户,也叫做TimesTen数据库实例用户(instance user),每安装一次TimesTen软件就创建了一个唯一的TimesTen数据库实例,在timesten 7.0第一次安装后默认的实例名称为“tt70_32”,如果我们需要多个实例就必需多次安装TimesTen软件,对于Windows操作系统而言,每用windows用户都只能安装一个TimesTen实例,对于Unix系统一个用户则可以安装多个实例,再安装第二个实例时,安装过程为提示你输入不同实例名称,TCP端口和webserver端口。只有TimesTen实例管理员用户组(TimesTen instance administrators group)的OS用户才能安装TimesTen软件。一般我们的Administrator管理员用户默认为该用户组,同时我们还可以通过设置“控制面板/管理工具/计算机管理/系统工具/本地用户和组/组”中新建一个timesten用户组,然后把安装TimesTen的用户加入到该组中就可以了,而且加到TimesTen用户组的OS用户的用户类型还必需是计算机管理员不能是受限用户,否则在安装时会报权限不足。

      二是TimesTen用户,我自己理解成是数据源(DSN)用户。当我们安装好Timesten创建了实例对象后,这时我们新建一个DSN数据源,用软件中的ttisql工具通过命令 connect ; 连接到这个数据源,这时我们的用户默认为我们在上文中讲到的timeten实例用户也就是操作系统用户。就可以用命令 create user identified by 'tt_pws';  grant admin,ddl to ;来创建一个timesten用户并给他赋权限。对于没有启用访问控制(Access Control)功能的数据库实例我们不能为其创建其他的TimesTen用户,对于这种实例只有唯一的一个操作系统用户作为他的Timesten用户。这里我们还要注意之用实例用户才可以创建timesten用户。我只所以把Timeten用户也理解为数据源(DSN)用户,是因为我们在建立基于ORCLCE数据库数据的数据源时,我们会为该数据源指定一个oracle数据库用户,我们在建立不用oracle用户的数据源时我们就需要不同的TimesTen用户,因为当我们用某个timesten用户连接数据库时,timesten软件会默认的以timesten用户名作为登录oracle数据库的用户名,这也就是说,我们建立的TimesTen用户名必需要和oracle数据库的用户名同名,密码可以不一样,所以对于每一个数据源,如果我们用的是不同用户连接oracle数据库,那我们就得建立对应的不同的timesten用户,所以这时TimesTen用户也可以理解为是针对数据源(DSN)的用户。但其实这些TimesTen用户在所有的数据源中都是可以使用的,只不过用错了用户就取不到数据而已。

     三是oracle数据库用户。对于这种用户,我就不多加解释了。在这里我总结一下就是:Timesten实例用户也就是安装TimesTen的操作系统用户,必需是计算机管理员类型,用来创建TimesTen用户,并为其授权,当我们启用访问控制功能时,我们必需为每个TimesTen用户都授予admin和ddl权限。TimesTen是作为访问控制的一个中间层用户,只有启用了访问控制功能后才能创建该类型用户,他的用户名要和Oracle数据库的用户名相同,在没用启用Access Control功能时,在windows操作系统中为把system用户默认的做为实例用户和TimesTen用户。

 

      第二,在TimesTen安装过程中会提示是否安装Cache Connect to Oracle选项,如果我们需要用到oracle数据库数据作为数据源操作,那么我们就选择安装这个组件,当然我们也可以在安装完TimesTen之后再安装该组件,安装方法是,在windows中我们双击TimesTen安装程序,这时会跳出一个界面让我们选择移除还是更改TimesTen程序,我们选择更改,进入下一个页面后就可以看到Cache Connect to Oracle的安装选项,打上钩就可以安装该组件了,同理我们也可以通过这种方式来卸载该组件。安装该组件后我们就可以设置数据源通过client/server模式访问oracle数据库数据了。

 

3.TimesTen的简单应用

3.1 建立数据源DSN

     Timesten是通过ODBC和JDBC数据库驱动程序来访问数据的。所以我们就建立数据源DSN,让Timesten连接到该DSN来访问数据库数据。在这儿,我们就要弄清楚两类四种DSN的概念和用法,分别是系统DSN和用户DSN、服务端DSN和客户端DSN。

      所谓系统DSN和用户DSN是针对操作系统用户而言的DSN划分,我们打开“控制面板/管理工具/ODBC数据源管理器”就可以很清楚的看到这两类DSN,其中用户DSN只能对创建该DSN的用户可用,而系统DSN是不分用户,是对这台电脑公用的。我们可以在‘用户DSN’和‘系统DSN’页中分别建立这两类数据源,用户DSN和系统DSN的名称可以相同,但是他们内部不允许重名。如果有重名系统会优先查找和使用用户DSN。虽然用户DSN和系统DSN内部不可以重名,但是他们所指向的数据源却可以是相同的。

     所谓服务端DSN和客户端DSN是针对具体的应用而言的DSN划分,在上中我提到,如果我们安装了Cache Connect to Oracle组件,我们就可以用client/server模式访问oracle数据库,这种访问过程就是通过建立服务器端和客户端DSN的方式来实现的。当我们在安装TimesTen软件的时候,如果我们选择典型安装模式时,系统会自动给我们安装两类数据驱动程序分别是:TimesTen Client 7.0 和 TimesTen Data Manager 7.0。我们可以在ODBC数据源管理器的驱动程序页看到他们。如下图-3-所示:

image

                           图-3-

对于这两种驱动程序,如果我们在安装TimesTen时选择Custom模式,那么我们就可以有选择安装他们,一般在安装Oracle数据库的主机上,我们需要安装TimesTen Data Manager 7.0驱动,在远程的客户机上就需要安装TimesTen Client 7.0驱动,这也就告诉我们要使用TimesTen数据库我们的服务器和客户机端都要安装TimesTen软件。服务端DSN中要指定数据源文件的地址和日志文件的地址,同时也要指定Oracle数据库的用户名,字符集等信息。一般来说,服务器端DSN是供所有用户使用的,所以这类DSN要在系统DSN页中定义,对于客户端DSN我们即可以在用户DSN页中定义,也可以在系统DSN页中定义,这就看具体需要了。

     现在我们就看看怎样建立一个服务器端DSN,我们打开ODBC数据源管理器,选择系统DSN页,点击‘添加’按钮,在弹出的驱动程序选择页选择TimesTen Data Manager 7.0驱动,下一步,弹出如图-4-所示的Data Source定义界面,我们在Data Store页中填写唯一的数据源名称,填写数据存储文件和日志文件的目录(注意只是目录,不是文件名),指定该数据库的字符集,在数据库类型模式中用3个选项:空、0-Oracle、1-TimesTen。如果我们不选0-Oracle模式,也就是说我们不和oracle数据库连接,而只是建立一个独立的TimesTen管理的数据库,这样在后面的General Connection和Cache Connect页中就不需要填数据库SID,用户和密码信息了。同时我们还要注意,如果我们选择了0-Oracle模式,那我们在这里指定的数据库字符集就必需和我们要连接的Oracle数据库的字符集一致,我们可以用这个语句来查看Oracle数据库字符集:

select * from nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';

image

                                    图-4-

       在First Connection页,我们要指定永久数据文件大小(Pemanent Data Size)和临时数据文件大小(Temporary Data Size),单位是M,默认值和最小值是6M。如下图-5-

image

                                          图-5-

       在General Connection页,如果我们选择的数据库模式是0-Oracle,那么我们就要在这里填写访问该服务端DSN的TimesTen用户的User ID,如果是不是Oracle数据库模式,这一步可以不写。如图-6-

image

                                          图-6-

     在NLS Connection页中,我们需要填写连接该DSN时的字符集,这个地方就相当于我们ORCLE_HOME在注册表中的NLS_LANG注册项的值。如图-7-

image

                                          图-7-

      在Cache Connect页,如果我们选择的数据库模式是0-Oracle,那么我们就要在这里选择oracle数据的SID,以及填写访问的用户密码,在之前的General Connection页中我们填写了timesten用户名为apps,在该页中我们可以看到Oracle User ID项的值也默认为相同的apps用户,且不允许更改,这也就是我在上文说的为什么要把TimesTen用户名定义成跟Oracle用户名相同的原因。在这里还有一个PassThroug选项,用来设置TimesTen同Oracle数据库进行交互的形式的,是只读了,还是自动更新等,共列出有4种类型。

image

                                          图-8-

       在Server页中,我们可以定义每个服务进程的最大连接数(默认为10),每个DSN允许的服务进程数,和每个服务堆栈的大小。这里我们就以默认值,不设置。

      其实我们设置好了服务端进程我们就可以用安装TimesTen时安装的TTISQL程序来连接这个服务器端数据源并进行操作了。

     下面我们再来看看如何设置客户端DSN数据源:

     同上我们在ODBC数据源管理器中的用户DSN页或者系统DSN页,点击添加,这时我们选择TimesTen Client 7.0驱动,在弹出的数据源定义界面中填写客户端DSN名称和描述。选择一个服务端名称,在安装TimesTen时会自动生成一个默认的demo_server_tt70_32服务器端,表示本机。

image

                                          图-9-

如果我们需要连接远端的服务器,那我们可以点击Servers按钮,在弹出的窗口中会列出所有在本机定义了的Servers,我们点击新建(Setup)按钮,弹出如图-10所示的定义界面,填写服务名称,第一个NetWork是服务端的域名或IP地址,第二个Network是远程服务端的连接端口,是我们在服务端安装TimesTen是指定的端口,默认为17002,如果我们要查看该端口,可以在服务器端在CMD命令提示符程序下键入命令:ttstatus来查看

image

                                          图-10-

C:\Documents and Settings\deadog>ttstatus
TimesTen status report as of Wed Dec 17 19:55:05 2008

Daemon pid 296 port 17000 instance tt70_32
TimesTen server pid 1668 started on port 17002
TimesTen webserver pid 1652 started on port 17004

其中TimesTen server pid 1668 started on port 17002就是指的该服务端口。

     选择好了服务端名称,点刷新(Refresh)就可以列出远端服务器的所有系统DSN,我们选择一个数据源,填写User ID和Password以及连接字符集,说明一下,这里的User ID是我们定义的TimesTen用户ID,在没有为TimesTen创建用户是,这里我们可以不填,在连接时,系统会以当前操作系统用户名作为timesten用户名进行连接。设置好后,我们可以点击下面的两个长按钮来分别测试与TimesTen服务端的连接和数据源连接。如果没报错,说明设置正确,要注意的是,我们在点击Test Data Source Connection时,必需先在服务器连接数据源一次,这样会在服务器端生成一个TimesTen数据库文件,然后在客户端再测试连接数据源,否则的话客户端会报找不到数据文件的错误。

 

3.2 测试TimesTen连接数据源创建用户和表操作

      在上文,我们已经设置好了DSN数据源,现在就让我们来连接测试一下。在TimsTen安装程序组中选择启动ttisql程序,或者在cmd的dos命令中直接键入ttisql来启动该程序。在该程序中使用同Oracle一样的SQL命令来创建用户,授权用户,创建、插入、查询表等操作。命令提示符以分号(;)结尾表示输入结束。注意必需以TimesTen数据库实例用户登录才能创建用户。请看下例:

Copyright (c) 1996-2008, Oracle.  All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
All commands must end with a semicolon character.

Command> connect test_c;
Connection successful: DSN=test_c;TTC_SERVER=demo_server_tt70_32;TTC_SERVER_DSN=
Test1_S;UID=lightning;DATASTORE=C:\TimesTen\DataStore\Test1;DATABASECHARACTERSET
=ZHS16GBK;CONNECTIONCHARACTERSET=ZHS16GBK;LOGDIR=C:\TimesTen\DataStore\Test1;PER
MSIZE=6;TEMPSIZE=6;TYPEMODE=0;
(Default setting AutoCommit=1)
Command> create user apps identified by 'apps';
Command> grant admin,ddl to apps;
Command> create table apps.readtab(a number not null primary key,
>                                                           b varchar2(31));
Command> insert into apps.readtab values(1,'Just');
1 row inserted.
Command> insert into apps.readtab values(2,'Test');
1 row inserted.
Command> select * from apps.readtab;
< 1, Just >
< 2, Test >
2 rows found.
Command>

从以上的命令中看到,当我们连接到test_c,由于我们在之前的客户端DSN设置时没有指定用户(如上图-9-),所以默认的UID=lightning是OS用户,我们新建了一个用户apps,并为其创建一了张readtab表,插入了2行数据。现在我们更改一下客户端DSN的设置,用apps用户来连接这个数据源,如图-11-所示:

image

                                          图-11-

现在我们再用ttisql连接test_c数据源看能不能查到该表的数据。

Copyright (c) 1996-2008, Oracle.  All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
All commands must end with a semicolon character.

Command> connect test_c;
Connection successful: DSN=test_c;TTC_SERVER=demo_server_tt70_32;TTC_SERVER_DSN=
Test1_S;UID=apps;DATASTORE=C:\TimesTen\DataStore\Test1;DATABASECHARACTERSET=ZHS1
6GBK;CONNECTIONCHARACTERSET=ZHS16GBK;LOGDIR=C:\TimesTen\DataStore\Test1;PERMSIZE
=6;TEMPSIZE=6;TYPEMODE=0;
(Default setting AutoCommit=1)
Command> select * from readtab;
< 1, Just >
< 2, Test >
2 rows found.
Command>

在显示的连接信息中可以看到UID变成了apps,然后也查到了我们上面新建的表数据。需要说明的是现在的这个表readtab只是TimesTen数据库的表,其数据存在服务器端的Timesten数据文件中,与他连接的Oracle数据库中并没有创建这个表,要真正的让TimesTen同Oracle数据进行数据交换和共享,我们需要在TimesTen中为Oracle数据创建不同类型的共享缓冲组(Cache Group),如只读(ReadOnly)共享缓冲组,同步写入(SYNCHRONOUS WRITETHROUGH)共享缓冲组,异步写入(SYNCHRONOUS WRITETHROUGH)共享缓冲组等,以后我们再一起学习。

问题说明:

 http://blogold.chinaunix.net/u2/81359/showart.php?id=2148586

http://www.cublog.cn/u/7121/showart_1088749.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7373708/viewspace-700669/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7373708/viewspace-700669/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值