ArcSDE空间数据库中SDE用户使用探讨(转)
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用户使用探讨(转)的更多相关文章
- ArcSDE空间数据库中SDE用户使用探讨 (转载)
ArcSDE作为空间数据库解决方案,应用非常广泛,本短文将尝试描述SDE的工作机制,简要说明空间数据库中SDE用户的使用方法.ArcSDE如何工作ArcSDE属于中间件技术,其本身并不能够存储空间数据 ...
- SDE用户密码到期
系统使用Arcsde for oracle 11g ,一直使用正常,突然有一天客户打电话说系统中地图不显示了.登陆GIS服务器,发现sde数据已经无法链接,错误提示:“ [ORA-28002: the ...
- 去除ArcMap连接空间数据库中多余的属性表
这个操作目前可能不具有可行性,但是为了完整性还是在下面讲一下吧.如有兴趣的小伙伴,可以按照下面的操作方式去尝试. 一.需求 去除ArcMap连接空间数据库中多余的属性表. PL/SQL中查询得到的内容 ...
- ArcGIS Engine开发之旅07---文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 、打开栅格数据
原文:ArcGIS Engine开发之旅07---文件地理数据库.个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 .打开栅格数据 对文件地理数据库.个人地理数据库和 ArcSDE 地理 ...
- 强制删除正在连接的Oracle用户,以删除SDE用户为例
. 有时候想强制删除一个已经连接的Oracle用户,不能直接删除,可以用Kill会话信息. 比如今天想删除一个被连接的SDE用户,可以用以下方法删除一个“正在被连接”的用户. 1.查看所有用户的会话信 ...
- mysql 5.7中的用户权限分配相关解读!
这篇文章主要介绍了MySQL中基本的用户和权限管理方法,包括各个权限所能操作的事务以及操作权限的一些常用命令语句,是MySQL入门学习中的基础知识,需要的朋友可以参考下 一.简介 各大帖子及文章都会讲 ...
- DDD 领域驱动设计-领域模型中的用户设计
上一篇:<DDD 领域驱动设计-如何控制业务流程?> 开源地址:https://github.com/yuezhongxin/CNBlogs.Apply.Sample(代码已更新,并增加了 ...
- .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息
在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...
- sde用户下使用sqlplus登录错误ORA-12547: TNS:lost contact
环境:linux + oracle +arcsde 解决:root用户下增加$ORACLE_HOME/bin/oracle文件的s权限 [oracle@localhost bin]$ chmod ...
随机推荐
- USACO 1.3.6 Ski Course Design[滑雪课程设计]
先说说思路: 这题比上一道坑人的wormholes简单多了!我一看到这题,“XXX设计”,还以为要用到什么dp呢,没想到是水题 用两层循环,第一层循环相差17中的上界,第二层遍历所有的山峰计算答案.并 ...
- Warning: Static member accessed via instance reference
Warning: Static member accessed via instance reference Shows references to static methods and fields ...
- 「NOI.AC」Leaves 线段树合并
题目描述 现在有一棵二叉树,所有非叶子节点都有两个孩子.在每个叶子节点上有一个权值(有\(n\)个叶子节点,满足这些权值为\(1\dots n\)的一个排列).可以任意交换每个非叶子节点的左右孩子. ...
- 牛客国庆集训day5 B 电音之王 (大数乘模)
链接:https://www.nowcoder.com/acm/contest/205/B来源:牛客网 题目描述 终于活成了自己讨厌的样子. 听说多听电音能加快程序运行的速度. 定义一个数列,告诉你a ...
- (一)ByteDance编程题
题目: 公司的程序员不够用了,决定把产品经理都转变为程序员以解决开发时间长的问题. 在给定的矩形网格中,每个单元格可以有以下三个值之一: 值0代表空单元格 值1代表产品经理 值2代表程序员 每分钟,任 ...
- Django 10 GET和POST(HttpRequest对象,GET和POST请求,文件上传,HttpResponse对象的cookie)
Django 10 GET和POST(HttpRequest对象,GET和POST请求,文件上传,HttpResponse对象的cookie) 一.HttpRequest对象 #HttpRequest ...
- P5020 货币系统 (NOIP2018)
传送门 BFS解法 显然如果一个面额A可以被其他面额表示出来 那么这个面额A就没用了 且如果A不能被其他面额表示,那么A一定有用(A本身的值只有自己可以表示) 发现面额最大不超过 25000 那么设 ...
- Zookeeper查看版本
[root@ooccpp lib]# Zookeeper version: ---, built on // : GMT Clients: /[](queued=,recved=,sent=) /[] ...
- Nohup后台运行程序
场景:我现在需要跑脚本批量处理一些数据,但是我又不想盯着控制台看这个脚本的输出结果,想把这些输出结果记录到一个日志文件里面 方案:可以使用 Linux 的 nohup 命令,把进程挂起,后台执行 用法 ...
- SQL 优化通用方法
1. 尽量避免用sub-queres, 可以采用join代替 2. exists代替in not exists 和not in 这两个的性能值得深究,应该不是差太多 3. 索引优化 4. 一些操作会导 ...