《TimesTen学习(一)安装篇》http://blog.itpub.net/23135684/viewspace-717741/
《TimesTen学习(二)连接创建第一个数据库》http://blog.itpub.net/23135684/viewspace-1189880/
《TimesTen学习(三)远程连接TimesTen数据库》http://blog.itpub.net/23135684/viewspace-1190342/
这篇文章将重点讨论一下Data Manager守护进程相关的内容。
首先我们要明确Data Manager Daemon守护进程是在TimesTen服务端安装过程中就会创建的进程,通过ttDaemonAdmin -start|-stop启动和停止(参考安装篇)。
1.Data Manager Daemon的功能。
Data Manager Daemon包含以下的功能:
1).管理共享内存访问。
2).协助进程恢复。
3).管理数据库的统计信息,例如,哪些数据库在使用,哪些应用进程连接到了哪些数据库。
4).管理内存策略。
5).开始复制进程、TimesTen服务器和cache agent。
注意:应用程序是连接到TimesTen数据库,而不是连接到Data Manager Daemon。
2.自动启动Data Manager Daemon。
如果想TimesTen实例在每次服务器重启的时候自动启动,那么以root用户运行setuproot脚本,setuproot脚本被存放在<install_dir>/bin目录下:
[root@ttdb ~]# cd /home/timesten/TimesTen/tt1122/bin
[root@ttdb bin]# ./setuproot -install
Would you like to install the TimesTen daemon startup scripts into /etc/init.d? [ yes ] yes
Copying /home/timesten/TimesTen/tt1122/startup/tt_tt1122 to /etc/init.d
Successfully installed the following scripts :
/etc/init.d/tt_tt1122
/etc/rc.d/rc0.d/K45tt_tt1122
/etc/rc.d/rc1.d/K45tt_tt1122
/etc/rc.d/rc2.d/S90tt_tt1122
/etc/rc.d/rc3.d/S90tt_tt1122
/etc/rc.d/rc5.d/S90tt_tt1122
/etc/rc.d/rc6.d/K45tt_tt1122
所有Unix平台,Data Manager Daemon的启动脚本都被放置在/etc/init.d目录下。
同样可以通过setuproot对自动启动进行卸载,例如:
[root@ttdb bin]# ./setuproot -help
setuproot [-install] [-uninstall] [-help] [-verbose]
-install Install TimesTen daemon startup scripts
-uninstall Un-install TimesTen daemon startup scripts
-help Display this help message
-verbose Display extra installation/uninstallation information
3.关闭TimesTen。
TimesTen由被加载到共享内存的数据库、用户连接、replication和cache agents组成。关闭TimesTen将完成以下的工作:
1).友好的断开用户连接。
2).关闭所有replication和cache agent。
3).如果数据库内存策略是manual,将从共享内存卸载数据库。
4).停止TimesTen Daemon。
4.管理TimesTen Daemon选项。
ttendaemon.options文件包含了TimesTen Daemon选项。安装期间,安装程序根据在安装提示输入设置一些选项值,保存在该文件中。
在Windows平台,ttendaemon.options文件位于daemon home目录下:
<install_dir>\srv\info
在Unix平台,ttendaemon.options文件位于daemon home目录下:
<install_dir>/info
ttendaemon.options文件控制着以下特性:
1).Daemon监听的网络端口。
2).TimesTen实例中subdaemon的最小值和最大值。
3).是否启动TimesTen服务器。
4).是否使用共享内存段作为客户端/服务器的内部进程通信方式。
5).系统预生成的服务器进程数。
6).用户日志、支持日志的位置及大小。
7).向后兼容性。
8).TimesTen实例的最大用户数。
9).数据通过NFS进行访问,仅针对Linux环境。
10).Oracle Database TNS_ADMIN的值,该文件的TNS_ADMIN选项值不能被修改。
11).致命错误之后调整默认的数据库恢复。
ttmodinstall工具用于改变ttendaemon.options文件的大多数公共选项,如果不能使用该工具修改的特殊选项,必须手动修改ttendaemon.options文件,在手动修改前需要先停止TimesTen Daemon。
下面是TimesTen安装后的ttendaemon.options文件内容:
[timesten@ttdb info]$ pwd
/opt/TimesTen/tt1122/info
[timesten@ttdb info]$ cat ttendaemon.options
# Commented values are default values
#-supportlog /opt/TimesTen/tt1122/info/ttmesg.log
#-maxsupportlogfiles 10
#-maxsupportlogsize 10485760
#-userlog /opt/TimesTen/tt1122/info/tterrors.log
#-maxuserlogfiles 10
#-maxuserlogsize 0x100000
#
-verbose
-tns_admin /opt/TimesTen/info
-server 53397
-server指定TimesTen Server监听端口(这个是连接TimesTen数据库的端口,和Daemon监听端口要区分开)。
-serverpool number指定预产生的TimesTen服务器进程数,这样可以提高客户端的连接请求的性能,如果没有设置该值,那么没有进程是预产生的,进程的数量除了受到TimesTen配置影响外,还受到操作系统的限制。
-maxConnsPerServer NumberOfChildServerProcesses 该参数设置单一服务器进程能够处理的最大客户端数,如果值大于1,那么子服务器进程运行在多线程模式,所以单一的服务器进程能为数据库的多个客户端连接服务,该值的范围在1到2047,默认值是1。如果该参数大于1,注意设置ServerStackSize参数值,参见第10点的内容。
-serversPerDSN NumberOfChildServerProcesses 在服务器可以有多个服务器进程服务多个输入的连接,ServersPerDSN属性指定初始化的服务器进程数,每个新进入的连接产生一个新的服务器进程,直到到达ServersPerDSN。当达到ServersPerDSN值,存在的服务器进程处理多个连接,直到到达MaxConnsPerServer参数指定的值。该参数值的范围是1到2047,默认值为1。
maxConnsPerServer和serversPerDSN两个参数是相关的,这两个属性不是用来限制通过DSN的客户端连接数,它们控制怎样在服务器进程之间分发连接。例如,如果MaxConnsPerServer设置为2,ServersPerDSN设置为5,那么会发生以下的情况:
1).到达数据库的第一个连接会由第一个服务器进程来处理,到达服务器的连接2~连接5会由初始化的服务器进程2~服务器进程5来处理,每个进程对应一个连接。
2).到达服务器的连接6,ServersPerDSN到达了限制值,MaxConnsPerServer没有到达限制值,连接6会由第一个服务器进程处理,到达的连接7~连接10由服务器进程2~5处理。
3).到达数据库的第11个连接,由于ServersPerDSN和MaxConnsPerServer两个参数都到达限制值,所以新产生的服务器进程6开始处理这个连接。
5.设定Daemon监听地址。
默认情况下,Daemon监听服务器所有的IP地址,如果需要固定监听某一个或多个IP,那么可以在ttendaemon.options配置文件中加入如下的配置:
-listenaddr address
监听多个IP地址需要配置多条-listenaddr记录,最多可以配置监听4个IP地址。
6.TimesTen日志。
TimesTen日志分为两类:用户错误日志和支持日志。用户错误日志类似Oracle Database中的告警日志;支持日志除了包含用户错误信息外,还包括Oracle技术支持需要的日志信息。
下面ttendaemon.options中的参数用于控制用户错误日志、支持日志的位置和大小,以及系统中存储的文件数。
-supportlog path -f path 指定支持日志文件的位置,默认地址是<daemon_home>/ttmesg.log。
-maxsupportlogfiles num 一旦日志文件到达了指定大小,TimesTen主Daemon自动循环日志文件,这个选项指定支持日志文件保留的个数,默认是10个。
-maxsupportlogsize nBytes 指定支持日志文件的最大值,默认是100MB。
-userlog logfile logfile:用户指定使用的日志文件位置以及名称,默认文件是<daemon_home>/tterrors.log。
也可以是:
-userlog [syslog] syslog:将错误消息发送到对应的操作系统日志文件中。
-maxuserlogfiles num 这个参数和maxsupportlogfiles参数的含义相同,只是该参数用于限定日志文件。
-maxuserlogsize nBytes 指定用户日志文件最大值,默认是10M。
-showdate 该参数只在UNIX平台适用,表示日期应该出现在所有消息的前面。
ttDaemonLog工具可以用来查看日志相关信息。
设置-noserverlog选项可以禁止产生日志。
7.修改subdaemon的个数。
TimesTen使用subdaemon执行以下的任务:
1).管理数据库。
2).刷新事务日志缓存到磁盘。
3).执行定期的检查点。
4).实施各种表的老化。
5).发现并处理死锁。
6).回滚直接方式下应用异常终止的事务。
7).执行数据库必要的后台过程。
TimesTen主Daemon根据需要动态的生成subdaemon,可以手动指定daemon可能产生subdaemon的范围,指定一个最小值和最大值,默认最小值是4,最大值是50。可以通过在ttendaemon.options文件中配置-minsubs和-maxsubs两个参数来设置新的值。
8.允许数据库访问NFS文件系统。
默认情况下,TimesTen系统不能访问NFS文件系统中的数据。在Linux x86 64bit的系统中,可以将checkpoint和事务日志文件放在NFS文件系统中。
如果要启动访问NFS文件系统,在ttendaemon.options文件中加入如下的参数:
-allowNetworkFiles
9.启动Linux大页支持。
启动Linux大页支持TimesTen,在ttendaemon.options文件中加入以下内容:
-linuxLargePageAlignment Size_in_MB
Size_in_MB是在/proc/meminfo中Hugepagesize的值,单位是MB。
10.配置子服务器进程线程堆栈大小。
设置每个客户端连接的子服务器进程线程堆栈的大小,在ttendaemon.options文件中加入以下的内容:
-ServerStackSize ThreadStackSize
ThreadStackSize单位是KB,在32bit系统默认值是128KB,在64bit系统默认值是256KB,如果每个子服务器进程最大客户端连接数是1,ThreadStackSize设置将被忽略,因为单一的客户端连接是通过子服务器进程的主线程进行服务的。只有当maxConnsPerServer参数大于1才需要设置该参数。
11.客户端通过IPC直接连接到服务器共享内存段
默认情况下,在应用链接的TimesTen驱动和TimesTen服务器之间通过TCP/IP进行通信。
如果客户端应用和TimesTen服务器在相同的机器上,针对IPC(内部进程通信)可以直接连接到服务器共享内存段。
例如,这个特性对在32bit客户端应用与64bit数据库进行通信的时候在性能方面是有利的。
在ttedaemon.options文件中加入-serverShmIpc参数告诉TimesTen服务器尝试客户端通过IPC的方式直接连接到服务器的共享内存段。
12.管理共享内存段大小
启用了通过IPC直接连接到共享内存段才需要设置该参数。
在ttendaemon.options文件中加入-serverShmSize size告诉TimesTen Server创建一个指定大小的共享内存段(MB),如果这个参数错误,TimesTen服务器创建一个64MB大小的共享内存段。
一个合适的共享内存段大小依赖于:
1).预期并发连接到属于同一个TimesTen服务器实例的所有数据库的数目。
2).在每个子连接中并发分配的语句数目。
3).一个查询传递的数据量。
指导原则:
1).最大允许1Gb。
2).TimesTen需要1MB内存内部使用。
3).每个连接需要固定的16KB大小的块。
4).每个语句占用的空间会随着查询传递的数据量来增大或减小,TimesTen通过增加双倍或减半的算法来增大或减小语句缓存大小。
例如,如果用户应用预期最多有100个启用共享内存的客户端/服务器连接,如果每个连接预期最大有50个语句,最大返回128KB的数据,使用下面的公式配置serverShmSize值:
serverShmSize = 1 MB + (100 * 16) KB + (100 * 50 * 128) KB
= 1 MB + 2 MB + 625 MB = 628 MB
如果共享内存段空间不够,TimesTen将拒绝通过共享内存段的方式连接到TimesTen数据库。
--end--