ArcSDE作为空间数据库解决方案,应用非常广泛,本短文将尝试描述SDE的工作机制,简要说明空间数据

库中SDE用户的使用方法。

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管理进程(见注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命令来提高数据库效率。

注1:这是传统的ArcSDE应用服务器连接(Application-server connection)的工作方式,在这种方式中

,ArcSDE服务器进程(giomgr)分配名为gsrvr的进程来全面负责客户机与服务器的元数据通信。ArcSDE

8.1版本之后,出现新的连接方式,即直接连接方式(Direction-connection),在这种连接方式中,

gsrvr进程功能嵌入到客户机连接应用程序中,如ArcCatalog或其它ESRI软件产品。此种方式下,Gsrvr的

功能由客户端连接应用程序完成。

测试环境:ArcSDE 9.0,Oracle 9.2.0.4.0,Windows NT

参考:
1、 Config_tuning_GD_oracle
2、 Understanding ArcSDE
3、
网站:Support.esri.com

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服务了。
(图1)
sdeservice –o modify –r
<SDEHOME|SDE_DBA_PASSWORD|LICENSE_SERVER|NLS_LANG>
-p
<old_DB_ASMIN_password> -v <new_value> [-i <service>] [-q]

2、sdemon命令

sdemon命令是ArcSDE命令行工具中尤为常用的一个。Sdemon命令通常是在管理ArcSDE服务的时候使用。打

开命令行窗口后,键入sdemon命令,然后按回车。这时便可见以下画面: 图片
1
与其它的命令行操作相比,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服务和这样的连接没有直接的交互。这样的

二级连接可以通过后台数据库直接管理。
其它常用的sde命令行还有,sdelayer、sdetable、sdeimport等等,具体信息可以查看ArcSDE帮助中的

Administrator Command Reference

ArcSDE空间数据库中SDE用户使用探讨(转)的更多相关文章

  1. ArcSDE空间数据库中SDE用户使用探讨 (转载)

    ArcSDE作为空间数据库解决方案,应用非常广泛,本短文将尝试描述SDE的工作机制,简要说明空间数据库中SDE用户的使用方法.ArcSDE如何工作ArcSDE属于中间件技术,其本身并不能够存储空间数据 ...

  2. SDE用户密码到期

    系统使用Arcsde for oracle 11g ,一直使用正常,突然有一天客户打电话说系统中地图不显示了.登陆GIS服务器,发现sde数据已经无法链接,错误提示:“ [ORA-28002: the ...

  3. 去除ArcMap连接空间数据库中多余的属性表

    这个操作目前可能不具有可行性,但是为了完整性还是在下面讲一下吧.如有兴趣的小伙伴,可以按照下面的操作方式去尝试. 一.需求 去除ArcMap连接空间数据库中多余的属性表. PL/SQL中查询得到的内容 ...

  4. ArcGIS Engine开发之旅07---文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 、打开栅格数据

    原文:ArcGIS Engine开发之旅07---文件地理数据库.个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 .打开栅格数据 对文件地理数据库.个人地理数据库和 ArcSDE 地理 ...

  5. 强制删除正在连接的Oracle用户,以删除SDE用户为例

    . 有时候想强制删除一个已经连接的Oracle用户,不能直接删除,可以用Kill会话信息. 比如今天想删除一个被连接的SDE用户,可以用以下方法删除一个“正在被连接”的用户. 1.查看所有用户的会话信 ...

  6. mysql 5.7中的用户权限分配相关解读!

    这篇文章主要介绍了MySQL中基本的用户和权限管理方法,包括各个权限所能操作的事务以及操作权限的一些常用命令语句,是MySQL入门学习中的基础知识,需要的朋友可以参考下 一.简介 各大帖子及文章都会讲 ...

  7. DDD 领域驱动设计-领域模型中的用户设计

    上一篇:<DDD 领域驱动设计-如何控制业务流程?> 开源地址:https://github.com/yuezhongxin/CNBlogs.Apply.Sample(代码已更新,并增加了 ...

  8. .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息

    在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...

  9. sde用户下使用sqlplus登录错误ORA-12547: TNS:lost contact

    环境:linux + oracle +arcsde   解决:root用户下增加$ORACLE_HOME/bin/oracle文件的s权限 [oracle@localhost bin]$ chmod ...

随机推荐

  1. CF352B Jeff and Periods 模拟

    One day Jeff got hold of an integer sequence a1, a2, ..., an of length n. The boy immediately decide ...

  2. 洛谷P1894 [USACO4.2]完美的牛栏The Perfect Stall

    题目描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在 ...

  3. uwsgi01---uwsgi文件

    1. 安装 pip install uwsgi //测试uWSGI是否安装成功 在终端中输入以下命令查看uwsgi的版本:uwsgi --version 2.简单运行 运行uwsgi:uwsgi -- ...

  4. mysql 备份时间 %date~0,4%和 %time~0,2%等用法详解

    比如在windowscmd命令行窗口执行date命令后这个环境变量的值为 当前日期:2014-09-01 星期六 或2014/09/01 周六 那么如下的各个操作的意义如下:%date:~0,4% 表 ...

  5. ListItemType.AlternatingItem 和 ListItemType.Item

    项目中后台绑定Reapter项时,判断 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.Alte ...

  6. chafen

    //f(u)>=f(v)+w //求最大值 跑最短路 v->u -w //求最小值 跑最长路 u->v w

  7. Docker 使用samba 共享文件

    Docker 使用samba 共享文件   docker run -it --name samba \ -p 139:139 -p 445:445 \ -v /home/develop/code/de ...

  8. jenkins插件之火线扫描(静态代码扫描)

    参考网址: https://blog.csdn.net/oggboy/article/details/78646622

  9. sofa-boot(1)helloworld项目

    本示例参考:https://www.sofastack.tech/sofa-boot/docs/QuickStart 示例采用sofa-boot 3.1.1版本. 如下步骤: 1.进入https:// ...

  10. 问题:modbus_tk开发中遇到[Errno 98] Address already in use (已解决)

    案例: from modbus_tk import modbus_tcp,defines import time s = modbus_tcp.TcpServer(port=5300) def mai ...