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

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

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

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

  2. SDE用户密码到期

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

  3. C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)

    C# MVC 用户登录状态判断   来源:https://www.cnblogs.com/cherryzhou/p/4978342.html 在Filters文件夹下添加一个类Authenticati ...

  4. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

  5. SAP中关于用户IP信息的获取(转载)

    SAP中如何获取登录用户的IP? 或如何查看哪些IP登录到SAP中: 在Table: USR41中查看,具体字段的说明如下: MANDT   ---   ClientBNAME   ---   登录的 ...

  6. 【转载】SQL Server 2008 中新建用户登录并指定该用户的数据库

    提要:我在 SQL Server 中新建用户登录时,出现了三种错误,错误代码分别是 18456.15128.4064 -----------------------------------  正 文 ...

  7. Ubuntu中root用户和user用户的相互切换[转载自93度的饼干]

    Ubuntu中root用户和user用户的相互切换 Ubuntu是最近很流行的一款Linux系统,因为Ubuntu默认是不启动root用户,现在介绍如何进入root的方法. (1)从user用户切换到 ...

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

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

  9. iOS开发--应用设置及用户默认设置——转载

    [链接]iOS开发--应用设置及用户默认设置[1.bundlehttp://www.jianshu.com/p/6f2913f6b218 在iphone里面,应用都会在“设置”里面有个专属的应用设置, ...

随机推荐

  1. unreal3对象管理模块分析二

    上一篇主要记了UClass的创建,现在总结一下UObject的创建,可以从几个不同角度来理解. 从途径上看,可以根据UObject的构造函数来分个类: // Constructors. UObject ...

  2. Razor中的 内容标记块语法

    在C#中,有两种方法来进行内容块标记 第一种方式 用@: 来标识 @if (true) { @: 测试内容标记块 @DateTime.Now.ToString() } <hr /> 第2种 ...

  3. 【Qt官方例程学习笔记】Analog Clock Window Example (画笔的平移/旋转/缩放应用)

    这个例子演示了如何使用QPainter的转换和缩放特性来简化绘图. 值得学习的: 定时器事件ID检查: 在定时器事件中检查定时器id是比较好的实践. QPainter抗锯齿: We call QPai ...

  4. SQL语言 持续更新中……

    SQL提供了很多的聚集函数  COUNT([DISTINCT\ALL]*) SUM([DISTINCT\ALL]<列名>)AVG().…… WHERE 子句中是不能用聚集函数作为条件表达式 ...

  5. 又见GCD (HDU 2504)

    这个题真的很水,但我竟然连错,在此警醒自己!!! 写代码改了东边,忘了西边,“认真”这两个字又被我吃了,打脸啪啪啪啪. #include<iostream> using namespace ...

  6. 关于UsedRange方法选中了空区域的解决方案

    使用worksheet.usedrange属性去制作数据透视表的时候会出现blank项,debug时发现它选中了空的区域. 解决方案: 属性usedrange包含着带格式的.空白的单元格(即使设置过单 ...

  7. .NET 中文件嵌套,例如:cshtml文件下面嵌套css和js【机器翻译】

    越来越多的我发现自己在我的一些较大的Web项目中丢失了文件.有很多内容要处理 - HTML视图,几个派生CSS页面,页面级CSS,脚本库,应用程序范围的脚本和页面特定的脚本文件等等.幸运的是,我使用R ...

  8. 【原创】谈谈redis的热key问题如何解决

    引言 讲了几天的数据库系列的文章,大家一定看烦了,其实还没讲完...(以下省略一万字). 今天我们换换口味,来写redis方面的内容,谈谈热key问题如何解决. 其实热key问题说来也很简单,就是瞬间 ...

  9. [转]AFNetworking 3.0迁移指南

    http://www.jianshu.com/p/047463a7ce9b?utm_campaign=hugo&utm_medium=reader_share&utm_content= ...

  10. jenkins+maven+Tomcat+shell构建自动化部署

    https://yq.aliyun.com/articles/685931 1.官网下载war包:jenkins本质上就是一个web应用,直接下载jenkins的war包通过tomcat运行即可.ht ...