在ArcSDE的相关帮助上经常会看到关于SDE Schema和User Schema的描述,一开始不是很理解是什么意思,而且在学习ArcSDE的时候也经常会把User Schema的意思理解错,这里就不再说明错误的意思了,下面就给大家介绍一下SdeSchema和User Schema是一个什么东东。
我们有一个Oracle11G的实例名称为orcl,然后我们进行正常的ArcSDE安装,Post Installation操作,那么数据库里面有一个sde用户和sde用户对应的数据库SDE,那么我们都知道SDE库里面存储着关于ArcSDE和Geodatabase的相关表。然后我们再通过数据库的方法创建一个aaa用户,该用户我们只需拥有connect和resource的角色,然后我们就可以使用aaa用户进行连接,那么我们在aaa用户下创建的ArcGIS对象(要素类等)就会在SDE库里面进行相关的注册。
截止到上面所说的相关信息我们统称为SDE Schema,也就是说我们用户的相关信息在SDE用户下进行注册。下面我们看看怎么创建User Schema,那么我们再创建一个用户bbb,我们需要给bbb赋予关于sde用户的相关权限。创建userschema我们可以使用ArcSDE命令来创建:
sdesetup –o install –d oracle11g –i5151:bbb –u bbb –p bbb
我们可以使用PL/SQL进入bbb用户查看,发现已经把相关的ArcSDE和Geodatabase的相关表也创建到bbb用户下,那么我们在该用户下创建一个要素类:
服务连接Service: 5151:bbb 直连连接Service: sde:oracle11g:orcl:bbb(ArcGIS10)
我们可以看到在bbb用户下创建的要素类信息只注册到bbb的相关表里面,并没有注册到sde用户下。这就是User Schema。
我们结合上面的图可以看出,使用SDE Schema统一由Sde用户进行管理,其他用户创建的对象都会在SDE用户下进行注册统一管理,那么使用User Schema就是有相关的user 用户进行管理,其实这个user的权限就是sde用户的权限。
之所以使用user schema,有什么优势呢,我个人总结了几条,但是只是个人意见
1:使用User Schema来存储在备份、恢复方面特别是使用数据库逻辑备份(IMP)比较方便。
这句话可能还是有所误解,因为没有进行测试,有用户反映是不是可以直接备份user Schema的数据,而不用备份sde schema的数据,这个是错误的。因为虽然user schema里面包含了gdb和sde的相关表,但是user schema的相关信息还是在sde 库里面有注册的,比如sde_instance,st_geometry_index等,所以说在备份方面还是需要备份这两个schema的(sde ,user)
sde 方案中的地理数据库始终是主地理数据库,并包含可在 Oracle 数据库中跟踪所有其他地理数据库的表 (SDE.INSTANCES)。sde 方案也包含 ST_Geometry 类型、其子类型和功能以及使用的系统表,如 ST_SPATIAL_REFERENCES。
2:使用User Schema来存储可以分门别类的将用户不同类别的数据库分开管理,比如针对于一个综合部门,他可以管线一个库,土地一个库等。这样我们就可以使用一个ArcSDE服务来连接不同的库。其实好多用户也会这样来做就是建立不同的数据库实例,一个数据库实例对应一个SDE Schema然后建立相应的ArcSDE服务,那么多个数据库实例就是多个ArcSDE服务,但是使用User Schema就可以使用一个ArcSDE服务管理多个User Schema库,效果是一样的。
反正既然ArcGIS提供了User Schema肯定有它的用途。
以下包括想要在同一 Oracle 数据库中拥有多个地理数据库的情况: 如果组织中较小的组,如部门或项目组,可以彼此相互独立工作,则这些小组可能想要自己的数据。可以为每个组创建一个地理数据库。 将开发环境从产品环境中分离 为地理数据库服务的特定应用程序单独调整每个地理数据库 保护敏感信息 例如,您可能想要一个保护在其自己的地理数据库中的敏感军事数据库,以使其他实例的所有者不能够看见该数据。 以下是在一个 Oracle 数据库中使用多个地理数据库时的规则: 一个用户只能拥有一个地理数据库。 只有一个地理数据库可以参考已注册到 ArcSDE 的数据集。 地理数据库归创建它的用户所有。对于这一地理数据库,该用户即为 ArcSDE 管理员用户。
既然上述说明了一个ArcSDE服务管理多个User Schema,那么这个连接数是针对某一个Schema的数据连接还是累计不同Schema的连接呢,我们做了一个实验就是连接不同的库,查询相关的连接信息
C:\Users\gis>sdemon -o info -I users ArcSDE Instance esri_sdeora Registered Server Tasks on lish at Tue Aug 3015:57:27 2011 ------------------------------------------------------------------------------ S-ID S-PID User Conn Client Machine:OS Started ----- ----- -------- ---- --------------------------------------------------- 332 6928 SDE AS Lish-PC:Win32:XDR Tue Aug 30 15:56:47 C:\Users\gis>sdemon -o info -I users -i 5151:nis ArcSDE Instance 5151:nis Registered Server Tasks on lish at Tue Aug 3015:57:38 2011 ------------------------------------------------------------------------------ S-ID S-PID User Conn Client Machine:OS Started ----- ----- -------- ---- --------------------------------------------------- 333 6684 NIS AS Lish-PC:Win32:XDR Tue Aug 30 15:56:50
可以ArcSDE服务的连接数是针对不同的Schema的,这个大家可以放心的使用。那么在我们使用一些关于针对User Schema的使用方面我们需要指明相关的Service信息。
sdetable –o register –t mytable –i 2299:schemaname –u user –p passwd sdelayer –o create –l mylayer,shape –i port:schemaname –u user -p passwd sdesetup -o delete -d ORACLE11G -u theschemaowner -p nomira -i 5151:theschemaowner
文档下载地址:http://wenku.baidu.com/view/33c4b63b376baf1ffc4fad09.html