天天看点

ArcSDE工作机制

SDE工作机制

2007-09-25 18:03:01

ArcSDE属于中间件技术,其本身并不能够存储空间数据,它的作用可以理解为数据库的“空间扩展”。在基于Oracle的ArcSDE空间数据库中, ArcSDE保存了一系列Oracle对象,用于管理空间信息。这些对象统称为资料档案库(Repository),包含空间数据字典和ArcSDE软件程序包。ArcSDE需要SDE用户管理空间资料档案库,这类似于Oracle中需要SYS用户管理数据字典。Oracle的数据字典存储在SYSTEM 表空间中;相应地,在存储ArcSDE空间资料档案库的时候,也需要使用特定的表空间。通常,为了方便起见,默认使用名称也是SDE的表空间管理空间数据字典。

ArcSDE 的工作机制中,SDE用户负责ArcSDE与Oracle的交互,通过维护SDE模式下的空间数据字典以及运行其模式中的程序包,来保证空间数据库的读/ 写一致性。在ArcSDE服务启动的过程中,SDE用户通过Oracle验证,并且创建和维护一个Oracle会话连接,连接的程序便是giomgr,即 ArcSDE服务器管理进程,该进程一直存在,负责监听用户连接请求,分配相应的gsrvr管理进程(见注1),进行空间数据字典的维护。

ArcSDE的安全性

ArcSDE的安全机制完全依赖于Oracle,空间数据库用户(包括SDE),需要Oracle的用户密码才能够访问空间数据,ArcSDE本身并不保存任何认证信息。

在Oracle中,SDE用户的最小系统权限设置要求是:

Create procedure / Create table / Create sequence / Create trigger / Create session

由此可见,SDE亦属于Oracle数据库中的普通权限用户。

对于Oracle来说,虽然SDE属于非DBA用户,但是在ArcSDE架构中,SDE的地位比较特殊,是ArcSDE管理员。只有SDE可以完成一些特定的工作:比如启动/停止ArcSDE服务;终止某些用户连接;压缩多版本数据库等。SDE用户虽然不是一个真正的Oracle DBA用户,但是在ArcSDE工作过程中,软件会进行一些特定的对象权限操作。因此,应该将SDE用户等同于Oracle DBA用户处理,就像SYS或者SYSTEM一样,必须严格保护其密码。

在ArcSDE空间数据库中,从权限管理级别上,可以把用户分成两大类:

1、 空间数据库管理员,只有并且只能是SDE

2、 空间数据库一般用户,包括创建、浏览空间数据的除SDE外的其它oracle用户 使用SDE用户,强烈推荐遵循两个原则:

  • SDE用户不用于加载空间数据
  • SDE存储资料档案库的表空间不用于存放空间数据

SDE用户的特殊对象权限

SDE 用户作为Oracle数据库的一般用户,可以创建自己的表或者存储过程;作为ArcSDE空间数据库管理员,在对象权限设置中,ArcSDE会自动授予 SDE一些对象权限。SDE用户需要这些对象权限,以保证ArcSDE Geodatabase的完整性。空间数据库的一般用户在创建新的Geodatabase对象的时候,ArcSDE将这些新建对象的权限授予SDE用户。比如ACTC用户创建一个名称为Country的Geodatabase的要素类,此时数据库中同时生成Country(即B表,Business Table)的相应支撑表,即F表(Feature Table)和S表(Spatial Index Table)。这时候,SDE用户将自动获取得到Country、F表和S表这几个表的Select权限。当用户将Country注册为版本,此时 ACTC模式下生成记录编辑信息的A表(Additions Table)和D表(Deletions Table)。这时候,SDE用户获得该A表和D表的Select / Insert / Update / Delete权限。在这些对象权限授予过程中,ACTC用户并未获取任何通知信息。

在ArcGIS Desktop的空间数据库连接中,并没有体现出来SDE用户的这些对象权限,如果使用SDE用户进行空间数据库连接,只能够观察到上例中的 Country表,其它的支撑表都被过滤掉了。如果需要完整查看SDE用户被授予的对象权限,可以通过Oracle的 USER_TAB_PRIVS_RECD视图获取。

SDE用户完成哪些特定工作

在空间数据库中,作为管理员的SDE完成一般用户不能完成的操作,以下举例说明:

1、 启动/停止ArcSDE服务

只有SDE能够与Oracle完成交互,启动或停止ArcSDE的服务。操作为:

sdemon –o start / shutdown (启动/停止)

这时候需要提交SDE用户密码。

2、 终止某个空间用户连接

在空间数据库连接中,有时候出连接进程挂起或者非法连接的时候,可以使用SDE终止其连接。操作为:

首先,从连接列表中获取该连接的信息

sdemon –o info –I users

在获取到需要终止的连接ID后,使用kill命令

sdemon –o kill –t < 连接 ID>

<连接ID> 完成此项操作需要提交SDE用户密码。

3、 压缩多版本数据库(Multi-versioned Geodatabase)

在ArcSDE Geodatabase中,随着数据编辑工作的进行,SDE空间资料档案库中相应元数据表、以及用户模式中的A表和D表的记录逐渐增加,会影响空间数据的访问效率,因此经常需要进行数据库版本的压缩工作。在确定数据库不存在任何锁定后,便可以进行压缩工作,操作为:

sdeversion –o compress –u sde

完成此项操作需要提交SDE用户密码。

作为ArcSDE管理员,SDE还要完成其它一些工作。比如,在控制空间数据的数据段、索引段存储的时候,SDE用户可以使用sdedbtune命令来提高数据库效率。

ArcSDE工作机制

一叶知秋

http://www.3snews.net/?uid-7693-action-spacelist-type-blog-itemtypeid-691