ArcSDE 入门简介
ArcSDE是空间数据与GIS程序之间的一个重要的“通路”,使用它可以将ArcGIS等程序与关系数据库系统联系起来,这些关系数据库并不是如ACCESS的桌面型,而是类似ORACLE和SQLSERVER的分布式关系数据库服务系统。
ArcSDE提供了两种数据联结架构,即两层和三层模型,一般我们都是使用的三层架构,如果用户需要使用前者,可以在ArcCatalog中选择“产生一个直接联结”。
Sdemon命令可以允许管理员管理和监视ArcSDE服务,在SDE服务启动后,始终存在一个giomgr的SDE服务器进程,它负责监听连接请求(服务器名和端口)、验证连接(密码和用户)、给每个成功的连接分配一个独立的gsrvr进程,而gsrvr负责在客户端和服务器之间进行通讯(使用相同的服务器名和端口)。
ArcSDE是一种客户端/服务器模式,因此存在几个需要注意的属性:
1. Home目录 它是一个被记录的路径,成为SDEHOME,这个目录中包含可执行文件,配置文件和动态共享库等。
2. 两个进程 giomgr和gsrvr(作用如前)
3. 由于SDE走的是TCP/IP协议,因此服务器名和端口在通讯在起着重要的作用。服务建立后,服务名和端口号被存储在“C:\WINNT\system32\drivers\etc”的services文件中。它有两种形式:服务名:端口、IP:端口。
4. 配置参数 配置参数被保存在一个名为SDE.SERVER_CONFIG的表中,缺省的参数文件为giomgr.defs,它被存放在SDEHOME中的etc文件夹中。
启动服务:
1. 使用正常服务启动程序
2. Sdemon –o start –p sde
参数配置:
SDE服务的参数是可以被修改的,这个过程可以通过修改数据库中表或修改service.sde或dbinit.sde两个文件,这两个文件都被保存在SDEHOME中的etc文件夹中。
对于一个SDE服务而言,外界程序联系到它的方法是通过TCP/IP协议的,因此,在默认的情况下,当我们打开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
SDE服务的监视:
为了显示SDE服务的状态,我们需要使用sdemon命令来显示一些信息:
1. 状态监视
Sdemon –o status
2. 数据锁
Sdemon –o info –I locks
SDE提供了四种锁,它们分别是:
对象锁:用于版本和地理数据库的激活
表锁:用于锁定表
区域锁Area Locks:用于锁定一个要素类的空间范围
状态锁State Locks:用于锁定一个要素类或表的版本状态
3. 用户状态
Sdemon –o info –I users
SDE服务故障解决:
1. 启动SDE服务时发生了什么?
l SDE服务程序启动一个giomgr进程
进程从dbinit.sde文件中获得系统环境变量l
进程探测服务的license是否已经安装l
l 进程读取services.sde文件
进程获得TCP/IP协议和服务名l
l Giomgr使用dbinit.sde和系统变量定义的连接信息连接到一个DBMS上
Giomgr遍历所有锁定表l
l 服务启动了。giomgr进程开始监听它的端口,以确定外界是否有连接
2. SDE客户端连接服务时候发生了什么?
l Giomgr进程监听着它的端口
程序确认一个连接到服务的连接请求l
l Giomgr比较程序计算机的锁定时间和它的主机时间,如果它的时间大于MAXTIMEDIFF,则不允许连接
l Gimogr开始比较客户端程序的ARCSDE版本和ARCSDE服务端版本,如果前者比后者旧,连接将被拒绝
l Gimogr进程启动一个gsrvr进程,为客户端程序服务
Gsrvr进程获得共享内存l
l Gsrvr进程连接到DBMS上一旦上面的过程成功,giomgr将继续监听下一个连接
除次以外,我们还可以通过命令行的方式来管理服务和数据,这些程序都放在%SDEHOME%\bin文件夹内,如:
Alphabetical listing of commands
Command Description
cov2sde
Converts ArcInfo coverages to ArcSDE feature classes.
sde2cov
Converts ArcSDE feature classes to ArcInfo coverages.
sde2shp
Converts an ArcSDE feature class to an ESRI shapefile.
sde2tbl
Converts ArcSDE tables into INFO and dBASE tables.
sdeconfig
Manages your ArcSDE server configuration file
sdedbtune
Exports and imports an ArcSDE dbtune file.
sdeexport
Creates an ArcSDE export file.
sdegcdrules
Manages ArcSDE geocoding rules
sdegroup
Merges feature classes.
sdeimport
Imports data from an ArcSDE export file.
sdelayer
Administers feature classes.
sdelocator
Manages ArcSDE locators.
sdelog
Administers ArcSDE log files.
sdemon
Manages the ArcSDE server.
sderaster
Manages ArcSDE raster layers.
sdeservice
Manages the ArcSDE service on Windows NT platforms.
sdesetup
Initial setup program for ArcSDE for your RDBMS.
sdetable
Administers business tables and their data.
sdeversion
Manages versions of a geodatabase.
sdexinfo
Provides descriptive information of an ArcSDE export file.
sdexml
Administers XML columns.
shp2sde
Converts an ESRI shapefile to an ArcSDE feature class.
tbl2sde
Converts INFO and dBASE tables into ArcSDE tables.