arcsde数据库
在现在的开发过程当中,开发人员可能面临多个数据源,那么在一台服务器上部署多个ArcSDE服务就显得比较常见了,对Oracle数据库来说,一个ArcSDE服务是对应一个数据库实例,那么在建立过程是比较简单的,但是对SQLServer数据库来说就比较特殊了,因为我们可以在SQLServer数据库的同一个实例但是对应不同的Database,但是SQLServer数据库特殊在于如果的默认Database不是sde的话,你需要指定你的默认数据库,那么我在创建服务过程中就需要进行特殊的指定设置。
假设我们已经存在了一个针对sde数据库的ArcSDE服务,那么我们又建立了一个sde931的库,我们新设定的SDEHOME是C:\ArcSDE\sqlexe,那么大家都知道,我们需要使用sdeservice命令来创建相关的服务
[python] view plain print?
C:\Users\Administrator>sdeservice -o create -d sqlserver -p Super123 -s sde931 -i esri_sde2 -H C:\ArcSDE\sqlexe
Successfully created and registered esri_sde2 service
但是,如果我们对创建好的ArcSDE服务启动,我们可以看到会报如下错误
[python] view plain print?
-------------------------------------------------------
ArcSDE 9.3.1 for SQL Server Build 1632 Thu Feb 26 12:05:37 2009
-------------------------------------------------------
IDBInitialize::Initialize Failed
DB_open_instance() PCC_connect error: -2147217871
init_DB DB_instance_open_as_dba: -51
DBMS error code: -2147217871
Microsoft SQL Server Native Client 10.0: 登录超时已过期
这就是我上提到的我们需要注册默认数据库。我们可以看看帮助是怎么说的
[python] view plain print?
It is assumed the ArcSDE administrator user for which you are providing the password (-p) is SDE. It is also assumed that the name of the database to which the service applies is SDE. If your ArcSDE administrator user is not SDE, such as when you use a DBO schema in SQL Server, you must set the SDE_DBA_USER registry key to the login name of the DBO user using sdeservice -o register. If the name of your database is not SDE, you must set the ADMIN_DATABASE registry key to the name of your database using the sdeservice -o register command.
也可以参考相关的帮助文档:http://support.esri.com/en/knowledgebase/techarticles/detail/29575
那么我们第一个,就是需要将我们的默认数据库和默认SDE用户注册一下
[python] view plain print?
C:\Users\Administrator>sdeservice -o register -r ADMIN_DATABASE -v sde931 -d sqlserver -p Super123 -i esri_sde2 -H "C:\ArcSDE\sqlexe"
Successfully registered 'ADMIN_DATABASE' key for esri_sde2 instance
C:\Users\Administrator>sdeservice -o register -r SDE_DBA_USER -v sde -d sqlserver -p Super123 -i esri_sde2 -H "C:\ArcSDE\sqlexe"
Successfully registered 'SDE_DBA_USER' key for esri_sde2 instance
另外我们需要进入注册表,添加对SQLServer服务的依赖项,默认是没有的
HKEY_LOCAL_MACHINE——SYSTEM——CurrentControlSet——Services——esri_sde2(自己定义的SDE实例名)
需要在该实例添加
类型:REG_MULTI_SZ
名称:DependOnService
数据:MSSQLServer(这个根据用户的实例名称)也可以参考另外一个SDE实例的写法
我们也可以查看以下节点,验证是否填写正确
HKEY_LOCAL_MACHINE——SOFTWARE——ESRI——ArcInfo——ArcSDE——ArcSDE for SQLServer——esri_sde2(你的SDE实例名)
来查看是否已经添加好
ADMIN_DATABASE
DATASOURCE:该项对应的应该是数据库的机器名或者IP
SDE_DBA_USER
这样的话,我们就可以启动ArcSDE服务了
② 如何配置Oracle数据库使之成为ArcSDE数据库
Oracle数据库本身虽然具备空间数据库的支持组件,但是为了使用ArcSDE,还必须进行配置。可以安装ArcSDE for
Oracle10g并利用其配置工具进行配置。其安装过程不再赘述,因为主要都是点击下一步而已。下面主要讲解其配置流程。实际上,配置有两种方式。第一
种方式是使用VerifyOra工具(点击菜单“开始/所有程序/ArcGIS/ArcSDE/ArcSDE for Oracle10gR2 Post
Installation”);第二种方式是使用编程的方式。
以下先讲解第一种方式,即使用VerifyOra工具配置数据库的过程(实际上安装完ArcSDE for
Oracle之后会自动启动该工具)。为了叙述和测试的方便,首先使用Oracle数据库配置工具新建一个数据库,以后的测试都将使用该数据库。需要注意
的是,这样配置数据库仅用于学习之用,如果要用做生产数据库,那么必须对所有参数进行优化配置。
1、启动Oracle数据库配置向导(开始运行中输入dbca回车),并选择“创建数据库”之后点击“下一步”按钮
2、在模板列表中选择“一般用途”,并点击“下一步”按钮
3、在全局数据库名中输入“dbname1”,并点击“下一步”按钮
4、直接点击“下一步”按钮
5、在口令和确认口令中输入“password1”,直接点击“下一步”按钮
6、直接点击“完成”按钮
7、在确认对话框中直接点击“确定”按钮
8、系统随即开始创建数据库dbname1
9、数据库创建完毕后会显示数据库信息,点击退出按钮即完成数据库创建。
10、启动VerifyOra工具,系统显示配置向导,选择“Custom”模式,然后点击“下一步”按钮。。
11、系统显示选项对话框。“Define SDE User
Environment”即创建空间数据库管理员账号、表空间等环境信息。“Repository
Setup”即配置空间数据库,前提是必须存在SDE账号以及表空间。“Authorize
ArcSDE”即给空间数据库授权,否则空间数据库将不可使用。“Create ArcSDE
Service”即创建ArcSDE服务。可以看到,每一种选项都以前面所有配置为前提。这里为了学习的方便,全部选项都选择上,并点击“下一步”按钮。
12、系统显示数据库连接对话框。在“Net service
name”中输入数据库的网络名称,例如输入“dbname1”。在“Sys user
password”中输入sys用户的密码,例如输入“password1”。然后点击“下一步”按钮。
13、系统显示用户名和表空间配置对话框。在“SDE user
password”中录入设置的sde用户密码。在“Default
tablespace”中输入默认表空间的名称。sde用户是空间数据库的管理员账号,用户名称不能修改,但是这个用户的密码和默认表空间名称以及表空间
数据文件的名称和位置是可以设置的。录入所有信息后点击“下一步”按钮,系统开始配置空间数据库,配置完成后系统将依次显示“The SDE
tablespace was successfully created”、“The SDE user was successfully
created”等信息,依次点击“确定”按钮即可。
14、用户和表空间配置完毕之后,系统显示配置文件选项,直接点击“下一步”按钮即可。
15、系统显示调优配置文件选项,直接点击“下一步”按钮即可。
16、系统显示空间库配置选项,分别输入sde用户的密码以及数据库网络名,然后点击“下一步”按钮。空间库配置完毕后,系统
会显示配置完成的信息,并询问是否打开详细日志文件。一般配置成功的话,无需查看详细信息。如果配置失败,可以查看详细原因。
17、系统显示授权配置向导。必须在空间库配置成功的前提下才能进行授权。直接点击“下一步”按钮即可。
18、选择适当的授权方式。这里我们选择第二种方式,即通过授权文件来完成注册过程。然后点击“下一步”按钮。系统显示配置文
件选择对话框,点击“Browse”按钮找到授权文件(*.ecp),点击“下一步”按钮,确认授权信息,并点击“完成”按钮即可完成授权。
19、系统启动服务配置对话框。依次录入服务名称(Service name)、端口号和协议(Service port
number)、SDE用户密码(SDE user password)、Oracle实例名(ORACLE SID)、服务器名称(Server
name)。服务名称用于为服务命名,可以在Windows服务中看到该名字的服务。如果服务名录入“esri_sde_db1”,那么可以在
Windows服务中看到名为“ArcSde
Service(esri_sde_db1)”的服务。Oracle实例名请参照图1.3中的SID设置。录入所有信息后,点击“下一步”按钮。系统显示
完成信息,直接点击“完成”按钮即可。
以上为第一种方式,即使用工具来配置ArcSde数据库和服务。以下将详解如何通过命令的形式配置空间数据库。注意,如果需要配置服务,请参照sdeservice命令的参考信息。
1、创建SDE表空间。命令如下:
create tablespace sde datafile 'sde.dbf' size 400M extent management local uniform size 512K;
2、创建SDE用户,并授予适当的权限。命令如下:
grant execute on dbms_pipe to public;
grant execute on dbms_lock to public;
create user sde identified by sde default tablespace sde temporary tablespace temp;
grant CREATE SESSION to sde;
grant CREATE TABLE to sde;
grant CREATE PROCEDURE to sde;
grant CREATE SEQUENCE to sde;
grant CREATE TRIGGER to sde;
grant CREATE TYPE to sde;
grant CREATE LIBRARY to sde;
grant CREATE PUBLIC SYNONYM to sde;
grant CREATE OPERATOR to sde;
grant CREATE INDEXTYPE to sde;
grant DROP PUBLIC SYNONYM to sde;
grant UNLIMITED TABLESPACE to sde;
grant CREATE ANY VIEW to sde;
grant SELECT ANY TABLE to sde;
3、配置空间数据库。命令如下:
sdesetup -o install -d ORACLE10G -u sde -p sde@dbname1 -l server92.ecp -N
③ 空间数据库引擎ArcSDE
空间数据库引擎:ArcSDE9.0(arc spatial database engine);此软件被用作系统后台(Server),其优势在于能按照用户需求合理地管理大规模甚至超大规模的空间数据库,为系统前端提供高效的空间数据和复杂的空间分析服务。
选择空间数据库引擎SDE作为空间数据库管理系统,是一套管理空间数据并提供访问这些数据接口的软件,通过ArcSDE可以把地理空间数据应用到商用的关系型数据库中,SDE融入DBMS后,提供了对空间数据进行高效率操作的接口,大量用户可以同时针对同一数据进行操作,更重要的是ArcSDE客户和服务器之间的通讯建立在TCP/IP协议上,这使得ArcSDE不但能满足局域网的应用,而且能满足远程网的应用。
通过ArcSDE,能够管理具有数百万空间要素的大型空间数据集。ArcSDE对各级企业均能适用,这归功于其在客户与服务器间协同处理。ArcSDE通过TCP/IP协议,提供网络上的开放数据访问;同时,ArcSDE可运行在不同的操作系统环境中,如UNIX,Microsoft Windows的客户端与服务器端。
为了实现以关系数据库管理系统(Oracle)为基础的空间数据管理,需要使用空间数据库引擎。良好的空间数据库引擎能够为数据库的应用系统开发提供高性能的支持。ESRI公司的ArcSDE for Or-acle 是一个基于Oracle的空间数据库引擎,它的空间数据管理高效而稳定,将作为本项目综合数据库的必须软件产品之一。其特点:
(1)对地理数据的开放式系统访问
ArcSDE利用开放系统结构,使得地理数据易于获得,可以把地理数据的管理与使用同其他传统的多媒体数据库合并到一个平滑的计算机环境中。利用ArcSDE的开放性,用户可以进行从简单到复杂的空间数据分析,从几个到许多地理特征的提取,访问超大规模的数据库,高效完成各种复杂任务。
(2)进行高效查询分析
ArcSDE提供一组可靠的几何处理与空间分析功能,通过此功能确定各地理实体间的相互关系,如相交于一点、共一条边界、共一个区域或一个实体包含另一个实体。而且还可以把空间分析嵌入到一个非GIS的应用程序中去。
(3)理想的空间对象模型
ArcSDE把线特征表示成一条不能自相交的线,或只能在终点相交的线;面特征表示成一个简单的多边形或多边形组合。空间对象类型有点、点集、串、线串、环、多边形、环纹多边形(donut polygon)以及网络数据,一个组合数据集称为一个层。层是具有相同形式对象类型的一组地理特征,地理特征通过图层这种空间连续策略进行索引,提高数据管理效率。
(4)快速实现过程
ArcSDE对于复杂空间查询的处理的效率体现在对次要特征(Subsecond Feature)的检索上,快速访问与检索是在C/S模式上实现的,客户端主要是响应空间分析操作,服务器则进行数据搜索和检索。这种互操作处理方法使得动态空间叠加成为可能,当大量增加客户端的时候,利用这种处理可以把客户机带来的性能下降降到最小。
(5)其他
客户端可以通过TCP/IP协议访问Arc/Info数据,不用通过传统的直接挂到数据库所在的磁盘上进行访问,这样系统就可以建立在广域网上,数据分布将不受地域限制。同时允许将一部分数据放在RDBMS中,另一部分数据以传统Arc/Info数据格式保存。而客户端的应用将以同一种方式进行访问,即数据源的不同对客户而言是完全透明的。
ArcSDE本身并没有专用数据库,而是通过与其他通用的DBMS的集成来管理空间数据。根据DBMS的类型,ArcSDE与DBMS的集成可分为两种:①与传统的关系型数据库管理系统(RDBMS)的集成,由于传统的RDBMS不支持数据类型的扩展,无法管理空间数据,只能通过ArcSDE对空间数据和空间操作进行解释和管理。②与面向对象关系数据库(OORDMS)的集成。由于面向对象的关系支持新的数据类型和函数的扩展,ArcSDE可以直接在数据库中定义空间数据类型和空间函数。于是可以通过基于SQL的函数对空间数据进行操作,并在数据库层次建立空间索引。
④ arcgis 的sde和doc文件存放在哪
首先你要明白arcsde是什么,ArcSDE是空间数据库引擎,也可以说是一个中间件,它的作用是GIS客户端(arcmap,arctatalog等)访问或操作空间数据库时的一个通道,ArcSDE本身不会存储文件,而是将空间信息存储在dbms中(如sql server,oracle,db2等)。
加载硬盘上的空间数据到arcsde上有什么作用?
客户端访问arcsde服务(默认是5151),arcsde会连接DMBS,但不会给你返回DMMS中的表,而是给你返回arcgis中Geodatabase定义类型中的FeatureClass、FeatureDataset, Table等,所以,可以说不管你用的是什么DBMS,只要通过arcsde访问,访问接口都是一样的,这样,用户就不要考虑用不同的接口访问不同的数据库类型。
是不是加载到arcsde以后还要进行操作加载的关系数据库中。然后就可以通过关系数据库管理那些空间数据。
你只需要访问arcsde,不需要操作关系数据库。你可以不管数据库中存了什么,你的客户端访问时,如用ArcCatalog访问时,输入server,port,database,sdeuser,sdepassword,就可以访问了。
最后,如果你还没明白,你安装并配置ArcSDE后,以(ArcSDE + SQL SERVER为例)你可以打开数据库中的sde数据库,你可以看到里面存储了很多表,这些表管理并存储了所有空间数据库的内容及关系,如果你新建或删除一个图层(FeatureClass) ,你不需要去操作SQL SERVER,因为ArcSDE它会操作SQL SERVER,并在SQLSERVER中进行新建或删除处理,你没必要知道ArcSDE是怎么操作SQL SERVER的,你只需要知道如何访问ArcSDE(Geodatabase),而访问ArcSDE的方法却很简单,ArcGIS等软件都可以访问,输入一些参数(server,port,database,sdeuser,sdepassword)就OK了。