用户方案地理数据库管理
管理存储在方案(除 sde 用户方案之外)中的地理数据库的方法与管理这些地理数据库所依赖的 sde 主地理数据库的方法稍有不同。本主题介绍了几个与主地理数据库具有不同操作过程的管理任务。
地理数据库的所有者即为 ArcSDE 管理员。也就是说,地理数据库存储方案的所有者户相当于 sde 主地理数据库中的 sde 用户,而且是执行用户方案地理数据库中的管理任务的用户。
您可以在用户方案地理数据库的连接和从用户方案中删除地理数据库中获取其他用户方案地理数据库的信息。
启动和停止用户方案中的地理数据库
存储在方案(不包括 sde 方案)中的地理数据库取决于主地理数据库。启动或关闭主地理数据库后,所有关联的地理数据库都会自动启动或关闭。尝试独立启动存储在用户方案中的地理数据库将导致类似如下所示的错误:
init_DB DB_instance_open_as_dba: -93 DBMS error code: 1017 ORA-01017: invalid username/password; logon denied
列出服务器中出现的地理数据库
您可以通过对 sdemon –o info 命令使用 –I 选项找出服务器中正在运行的地理数据库。该选项将返回出现在服务器上的各种地理数据库的相关信息。
sdemon –o info –I instances Instance Created Id SDE Thu Oct 28 16:30:20 2004 0 MAP Mon Feb 27 11:18:04 2006 1
此外,您还可以使用 SQL 查询 INSTANCES 系统表,以获取有关用户方案地理数据库的信息。
有关 sdemon 命令的详细信息,请参阅 ArcSDE 随附的《ArcSDE 管理命令参考》。
为存储在用户方案中的地理数据库创建存储过程
每个地理数据库自身都拥有一套存储过程数据包,创建地理数据库时会自动在 ArcSDE 管理员方案中创建这些数据包。
此外,如果您提供方案名称,则还可以通过 SQL*Plus 在地理数据库中创建独立的数据包。例如,要在 Thor 用户方案中创建 dbtune_util 数据包,可在 SQL prompt 处发出以下命令:
@dbtune_util.sps THOR
将数据加载到用户方案地理数据库中
您可以利用 ArcGIS Desktop(推荐方法)或 ArcSDE 命令,通过与将数据加载到 sde 主地理数据库相同的方式,将数据加载到某个用户(sde 用户除外)的方案中所存储的地理数据库中。
请一定注意,如果在 ArcGIS Desktop 中以同一用户身份连接到同一 Oracle 数据库的两个不同地理数据库,尝试在这两个地理数据库之间复制和粘贴数据集时,粘贴操作将失败。这是由于两个数据库存储在同一用户方案中,数据集不具有唯一完全限定的名称。
只要这两个表分属不同的方案,您就可以利用出现在某地理数据库中的表名将表加载到其他地理数据库中。
注册表和图层
地理数据库的所有者可以使用 SQL 或 ArcSDE 命令在其他地理数据库中创建表,但每个表只能在一个地理数据库中进行注册。
如果已在其他方案中注册了该表,则将返回 SE_TABLE_REGISTERED_OUTSIDE_SCHEMA 错误。
以下是使用 ArcSDE 注册名为 mytable 的表(此表使用 SQL 创建)的示例:
sdetable –o register –t mytable –i 2299:schemaname –u user –p passwd
此示例介绍了如何使用 sdelayer 命令创建名为 mylayer 的图层。
sdelayer –o create –l mylayer,shape –i port:schemaname –u user -p passwd
有关使用 sdetable 和 sdelayer 命令的详细信息,请参阅 ArcGIS Server Enterprise 安装介质中提供的《ArcSDE 管理命令参考》。
创建用户拥有的地理数据库的备份
如果方案地理数据库中的所有表都属于方案所有者(也就是说,如果没有其他任何用户在地理数据库中创建数据),该地理数据库所有者不拥有其他任何地理数据库中的数据,而且您所使用的存储格式不是 ST_Geometry,则可创建该地理数据库所有者方案的备份。
大多数情况下,建议对 Oracle 系统进行完整备份。如果用户的数据遍布同一 Oracle 数据库中的多个地理数据库中,或者正在使用 ST_Geometry 存储格式(ArcGIS 9.3 及之后版本中 ArcSDE 地理数据库的默认存储格式),则需要一份完整的 Oracle 系统备份。这是由于用户方案中的地理数据库依赖于数据库内其他方案中的信息;因此,仅创建包含此地理数据库的方案的备份是不足够的。有关创建数据库备份的信息,请参阅 Oracle 文档。