ArcSDE空间数据库中SDE用户的作用

ArcSDE空间数据库中SDE用户的作用


发布日期: 2015-06-05 更新日期: 2015-06-05 编辑:xuzhiping 浏览次数: 5467

标签:

摘要: ArcSDE的基本介绍 ArcSDE,即数据通路,是ArcGIS的空间数据引擎,它是在关系数据库管理系统(RDBMS)中存储和管理多用户空间数据库的通路。从空间数据管理的角度看,ArcSDE是一个连续的空间数据模型,借助这一空间数据模型,可以实现用RDBMS管...

ArcSDE的基本介绍

ArcSDE,即数据通路,是ArcGIS的空间数据引擎,它是在关系数据库管理系统(RDBMS)中存储和管理多用户空间数据库的通路。从空间数据管理的角度看,ArcSDE是一个连续的空间数据模型,借助这一空间数据模型,可以实现用RDBMS管理空间数据库。在RDBMS中融入空间数据后,ArcSDE可以提供空间和非空间数据进行高效率操作的数据库服务。ArcSDE采用的是客户/服务器体系结构,所以众多用户可以同时并发访问和操作同一数据。ArcSDE还提供了应用程序接口,软件开发人员可将空间数据检索和分析功能集成到自己的应用工程中去。

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管理进程,进行空间数据字典的维护。

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空间数据库中,从权限管理级别上,SED用户可分成两类:

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

2.空间数据库一般用户,包括创建、浏览空间数据的除SDE外的其它oracle用户使用SDE用户。

SDE用户作为Oracle数据库的一般用户,可以创建自己的表或者存储过程;作为ArcSDE空间数据库管理员,在对象权限设置中,ArcSDE会自动授予SDE一些对象权限。SDE用户需要这些对象权限,以保证ArcSDE Geodatabase的完整性。空间数据库的一般用户在创建新的Geodatabase对象的时候,ArcSDE将这些新建对象的权限授予SDE用户。比如ACTC用户创建一个名称为Country的Geodatabase的要素类,此时数据库中同时生成Country(即B表,Business Table)的相应支撑表,即F表(Feature Table)和S表(SpatialIndex Table)。这时候,SDE用户将自动获取得到Country、F表和S表这几个表的Select权限。当用户将Country注册为版本,此时ACTC模式下生成记录编辑信息的A表(Additions Table)和D表(DeletionsTable)。这时候,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终止其连接。

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

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

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

注意:这是传统的ArcSDE应用服务器连接(Application-server connection)的工作方式,在这种方式中,ArcSDE服务器进程(giomgr)分配名为gsrvr的进程来全面负责客户机与服务器的元数据通信。ArcSDE8.1版本之后,出现新的连接方式,即直接连接方式(Direction-connection),在这种连接方式中,gsrvr进程功能嵌入到客户机连接应用程序中,如ArcCatalog或其它ESRI软件产品。此种方式下,Gsrvr的功能由客户端连接应用程序完成。

SDE命令使用举例

1、sdeservice命令

sdeservice命令是ArcSDE众多命令行中的一个,只能使用于Windows操作系统中。这个命令可以改变SDE用户的密码。ArcSDE是作为后台程序运行的,在Windows操作系统中,所有后台运行的程序都是作为相应的Windows服务(windows services)而存在的。这些Windows服务的信息是存储在Windows操作系统的注册表中的。

ArcSDE服务信息同样也存储在Windows注册表中。必须使用sdeservice命令才能创建支持ArcSDE的注册表信息。这个命令里提供了ArcSDE服务启动所需要的信息(比如说license)以及Windows系统中需要运行的命令(当ArcSDE服务启动时,需要运行的程序)。

创建ArcSDE服务的时候,必须指定SDE用户的密码。这个密码是加密存储在注册表里的。有了这个密码,系统注册表中的其它ArcSDE服务信息可以自动启动。Giomgr进程以SDE用户登陆到数据库中,使用的密码便是上面我们提到的存储在注册表中的SDE用户密码。

有时候,我们可能需要更改ArcSDE服务的某些配置信息。虽然这些修改可以通过注册表编辑器来实现,但使用sdeservice命令来进行注册表修改是最安全的方法。当然,需要提醒的是,有一些记录(例如ArcSDE管理员密码是加密存储的)只能通过sdeservice命令来修改。

通常,数据库管理员要定期修改SDE用户的密码。这时仅仅在数据库中或者Windows操作系统中修改SDE用户密码是无法启动ArcSDE服务的,还必须在注册表中修改这个密码。如果没有这一步操作,ArcSDE服务肯定是无法启动的。要想改变注册表中的这个密码,可以使用下图中给出的sdeservice –o modify命令来修改。这个命令可以用于修改SDEHOME目录、SDE用户、License服务器和NLS 语言。一旦SDE用户密码在数据库和注册表中都经过修改,这时我们便可以启动ArcSDE服务了。

2、sdemon命令

sdemon命令是ArcSDE命令行工具中尤为常用的一个。Sdemon命令通常是在管理ArcSDE服务的时候使用。打开命令行窗口后,键入sdemon命令,然后按回车。

与其它的命令行操作相比,sdemon命令行的参数是比较少的。下面分别描述以上几个sdemon操作的功能:

sdemon –o status 显示ArcSDE服务的状态

sdemon –o start 启动ArcSDE服务

sdemon –o shutdown 关闭ArcSDE服务

sdemon –o pause 暂停ArcSDE服务,禁止新的连接

sdemon –o resume 在暂停后重新允许与ArcSDE服务连接

sdemon –o info 提供ArcSDE服务和当前连接的信息,其中,users提供了所有使用应用服务器连接的用户的连接信息;config提供了ArcSDE服务配置的所有信息;stats显示当时ArcSDE服务的连接情况;locks显示当前所有锁定的layers、state、table、objects信息;vars显示ArcSDE服务所在主机上所有相应的环境变量的设置 sdemon –o kill -t <{all | pid}> 将与ArcSDE服务的连接断开,其中,all表示断开所有的连接;pid表示将进程号为该ID号的连接断开 需要指出的是,sdemon命令行只能对应用服务器连接(三级连接)有监听作用,因为只有这些连接是由giomgr进程(ArcSDE服务器的专用进程)为它们分配指定的gsrvr进程监控的。二级连接(或称为直接连接)中,gsrvr进程的功能已经嵌入到客户端软件中,ArcSDE服务和这样的连接没有直接的交互。这样的二级连接可以通过后台数据库直接管理。

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org