ArcSDE 服务详解
ArcSDE程序服务介绍: ArcSDE是空间数据与GIS程序之间的一个重要的“通路”,它是一种中间件,使用它可以将ArcGIS等程序与普通关系数据库系统联系起来当作一个地理数据库使用,这些关系数据库既包括如ACCESS数据库,也包括类似ORACLE和SQLSERVER的分布式DBMS;同时ArcSDE for Coverages系统,也可以以只读的方式访问诸如Coverage、Shapefile、ArcSotrm等基于文件的数据。
ArcSDE是一种C/S结构的组件,它提供了两种数据连接架构,即两层和三层模型,一般我们都是使用的三层架构,如果用户需要使用前者,可以在ArcCatalog中选择“产生一个直接联结”,它是直接通过ODBC访问DBMS而不通过 ArcSDE的数据服务器。
Sdemon命令可以允许管理员管理和监视ArcSDE服务,在SDE服务启动后,始终存在一个giomgr的SDE服务器进程,它负责监听连接请求(服务器名和端口)、验证连接(密码和用户)、给每个成功的连接分配一个独立的gsrvr进程,而gsrvr负责在客户端和服务器之间进行通讯(使用相同的服务器名和端口)。
ArcSDE是一种客户端/服务器模式的组件,存在几个需要注意的属性:
1. Home目录 它是一个被记录的路径,成为SDEHOME,这个目录中包含可执行文件,配置文件和动态共享库等。
2. 两个进程 giomgr和gsrvr(作用如前),当我们连接SDE数据库的时候,giomgr Service负责整个连接过程,比如寻找数据库和端口,到DBMS中查询SDE.SERVER_CONFIG表是否存在License记录等等。
3. 由于SDE走的是TCP/IP协议,因此服务器名和端口在通讯在起着重要的作用。服务建立后,服务名和端口号被存储在“C:/WINNT /system32/drivers/etc”的services文件中。它有两种形式:服务名:端口、IP:端口。
4. 配置参数 配置参数被保存在一个名为SDE.SERVER_CONFIG的表中,缺省的参数文件为giomgr.defs,它被存放在SDEHOME中的etc文件夹中。
安装ArcSDE Application Server是一件简单的事情,不过,如果中间迟迟搞不定,且你使用的是Windows系统,你只需要做两点:你的许可文件是否还有效;重启操作系统。
如何启动SDE服务:
(1). 使用正常服务启动程序
(2). 使用命令行的方式,如Sdemon –o start –p sde 参数配置: SDE服务的参数是可以被修改的,这个过程可以通过修改数据库中表或修改service.sde或dbinit.sde两个文件,这两个文件都被保存在 SDEHOME中的etc文件夹中。
对于一个SDE服务而言,外界程序联系到它的方法是通过TCP/IP协议的,因此,在默认的情况下,当我们打开<SDEHOME>/ora9iexe/etc/service.sde文件,我们会发现下面的代码:
esri_sde 5151/tcp #ArcSDE 9.0 for Oracle9i
这就是名为esri_sde的SDE服务的端口号,当执行Sdemon –o start –p sde时,系统会寻找这个文件的参数,看看是否匹配。如果匹配再验证密码和用户。
在一台机器上可以同时存在多个SDE服务,这些服务名将不一样,占用的端口也不一样,但是它们的参数都保存在service.sde文件,如: esri_sde2 5152/tcp #ArcSDE 9.0 for Oracle9i
SDE服务需要从dbinit.sde文件中读取一些系统的环境变量,以获得必要的关系数据库信息,如: # Oracle SID for service esri_sde. set ORACLE_SID=SDE 上面的语句指明了SDE服务使用的是那一个ORACLE数据库例程。下面是获得全部参数的命令: Sdemon –o info –I config 用户也可以打开SDE.SERVER_CONFIG表,查看其中的具体参数。
服务器的管理:服务器的管理包括服务的启动、暂停和关闭两个操作,在WINDOWS平台下,服务的启动关闭,例程的关闭都可以可视化实现,下面我们将介绍使用命令行的方式:
1. 启动一个远程SDE服务 Sdemon –o start –p mypassword –s service –i arcsde 上句中的-p后为密码,-s后为远程机器名,而-i为SDE服务名
2. 暂停一个服务 Sdemon –o pause –p mypassword
3. 重新启动 Sdemon –o resume –p mypassword
4. 关闭一个giomgr进程 Cd %SDEHOME%/tools Killp 100 (100为进程号) Do you really want to kill process with pid 100(y/n)? Y
5. 关闭一个服务 Sdemon –o shutdown –p mypassword
6. 关闭所有用户会话 Sdemon –o kill –t all
如果你忘记了命令,可以键入Sdemon -?来获取信息
SDE作为一种Windows Service,在启动的时候是需要一些基本配置参数的。它的参数文件包括两个,即dbinit.sde和service.sde,前者记录了该sde所依赖的DBMS,后者记录了服务名和端口号,如esri_sde 5151/tcp的信息。这两个文件都保存在<SDEHOME>/etc 中。尽管如此,在windows系统中,SDE服务的启动其实并不依赖于这两个文件,而是使用注册表的信息,我们打开 [HKEY_LOCAL_MACHINE]/[SOFTWARE]/[ESRI]/[ARCINFO]/[ARCSDE/[ARCSDE for Oracle]/esri_sde即可。
SDE在寻找到DBMS和端口后,就会在DBMS的Service_config表中寻找相应的记录来初始化服务。我们来看看这些参数:
ReadOnly 参数表是否以只读模式被访问,默认为否
CONNECTIONS最大连接数,即最大连接SDE的用户数量,在Windows上为48 个
TEMP,SDE访问时产生的临时文件存放地点
TCPKEEPALIVE,这是一个系统级别的参数,如果设置为true,则所有使用TCP 的服务都会每两个钟头去自动检查连接状态,可能会引起短暂的网络溢出现象
MAXBUFSIZE 最大缓冲值,由于SDE的数据不是直接发送,而是通过缓冲的方式送出,因此必须精确调整好这个值,如果值过大,MAXBUFSIZE*用户数>物理内存,将降低系统的性能
MINBUFSIZE 最小缓冲值,不要超过最大值的一般,一般1/3为佳,否则数据只有达到最小值才发送,会增加反应时间
MINBUFOBJCTS最小记录条数
SDE与DBMS之间(除了ACCESS),是通过一种被称为Array Buffer的机制来实现数据传输的,这也是一种缓冲器,我们是先通过这种机制将数据传送给SDE,SDE再使用自己的缓冲机制将数据发送到客户端,因此这是两种不同的缓冲器。MAXARRAYSIZE,即每次取出的记录条数、MAXARRAYBYTES,即每次取出的记录总容量,SHAPEPTSBUFSIZE,这些记录中几何数据的最大容量,ATTRBUFSIZE即属性的最大容量。
使用Array Buffer的方式传递Geometry分为两部分,即要素的metadata和point data,前者包括要素的ID,点的数量,实体类型;后者是储存点的实际空间。[SDE中几何对象都是使用有序点集和实体曲线来存储的]
这些数据的取值都是需要进行计算的,如果SHAPEPTSBUFSIZE=400000,而 MAXARRAYSIZE=100条记录,则每条记录的SHAPE值容量最大为4000bytes,则其构成要素的点最多为4000/16=250,如果有要素的点超过250,则不会被取出。如果该要素还有Z值或M值,则为4000/24,如果同时具有M和Z值,则为4000/32=125
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/muzai/archive/2010/04/13/5482222.aspx