首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ArcGIS注册数据库问题分析

本文是'猴妹'师妹授权给我来发表的,介绍都是师妹的研究成果,在此,非常感谢'猴妹'师妹。

用ArcGIS Server在发布地图服务时,注册数据库是很常见的,几年前就开始注册数据库,直到昨天,才有点顿悟整个注册的流程,记录下来。

注册数据库的目的

地图数据的数据源有多种,可以是本地文件(比如shp),可以是GeoDatabase,也可以是各种数据库(Oracle/DB2/SQL Server等)。注册数据分为两种,“注册文件夹”和“注册数据库”。那么,为什么要注册数据呢?

发布地图服务的过程,是把本地的数据交给ArcGIS Server服务器的过程。如果没有注册数据,那么在发布的过程中,会拷贝一份数据到ArcGIS Server服务器,发布检验时会有以下提示:

如果注册了数据,会告诉ArcGIS Server服务器一个数据路径,告诉它到哪里去找数据。很显然,如果希望后期对数据的改动在地图服务当中体现出来,那么就必须:注册数据,可以是注册文件夹,也可以注册数据库!

注册数据库的步骤

这个有很多博客、官方文档了,这里不再赘述,贴一个官方文档链接吧:

http://enterprise.arcgis.com/zh-cn/server/latest/publish-services/linux/registering-your-data-with-arcgis-server-using-arcgis-for-desktop.htm

容易产生混淆的问题(以注册oracle为例)

这个操作并不复杂,但是经常会遇到各种问题。我这里只说注册oracle数据库。教程中经常说32位客户端,64位客户端,那么到底怎么用,怎么配置呢。我之前也一直没分清楚,其实还是挺简单的,记住一条:ArcMap的机器要32位客户端,ArcServer机器要64位客户端。一定要安装客户端吗?不一定,如果server和oracle装在一台机器上就不用,可以理解为oracle服务端程序就包含了客户端吧。具体的部署场景大致就下面三种,可供大家参照:

官方的说法是这样的,可以细细看看,里面除了提到怎么安装,还提到了环境变量的设置等问题,大家注意选择自己的版本:

将 Oracle 数据库注册到 ArcGIS Server

我的场景和问题

机器一,windows,ArcMap10.1

机器二,linux,ArcServer10.5(做了外网映射,内网IP:192.*.*.*,外网IP:222.*.*.*)

首先,linux下安装ArcServer要配置init_user_param.sh文件,这一步一定要做,具体见:

http://enterprise.arcgis.com/zh-cn/server/latest/administer/linux/setting-environment-variables-for-arcgis-server.htm

不同机器分配场景,这个文件的配置也不同因为我的ArcServer和Oracle装在一起,官方说只需要配置一下LD_LIBRARY_PATH。

如果这一步不做,会报错,提示安装了Server的那台机器没有安装或配置oracle客户端,如下图:

参数配置好了之后,我们需要配置oracle的连接:服务器上这个地址是:192.*.*.*:1521/orcl

本地机器上这个地址是:222.*.*.*:11521/orcl (注意,对方提供的外网端口是11521)

下面是我的重大体会,再添加注册数据库的时候,会点两次确定,为什么会有两次呢?第一次点确定时,验证你输入的参数用本地oracle客户端能否连接数据库;第二次点确实时,验证远程装有Server的服务器上能否用你输入的参数连接客户端,如图:

一定要两次都通过才能注册数据库吗?不一定,第一次验证如果不能连接,arcgis会报错,并且问你要不要继续,如果你点击继续,就可以到继续操作,只要你输入的参数可供server服务器连接oracle,数据库就能注册上。但是,这时想在本地用注册的数据库发布地图服务是不行的,因为你刚才输入的参数不能满足本地oracle客户端去访问oracle数据库。

关键来了:esri官方也有提到,如下图,说如果服务器和本地机器都配置了tnsname,两个地方的tnsname要一致。其实这句话的意思就是:服务器和本地机器连接oracle数据库的连接字符串要一致。看上面,有两个地方不一致:①IP不同;②端口不同。端口不同,可以联系对方将端口都改成1521;IP不同怎么办呢,内网和外网IP注定是不一样的啊。所以,我们需要修改本地host文件,在本地机器的host文件中增加一个映射:222.*.*.* work1

其中,222.*.*.*代表server服务器公网IP,work1代表server服务器的计算机名。这样,我们在本地机器就可以用“work1”来代表“222.*.*.*”。这时,在注册数据库的时候我们这样填写:work1:1521/orcl,如下图,现在的这个连接字符串就可以同时满足本地机器的oracle客户端和server服务器同时访问oracle了。现在已经可以注册成功。

要注意,地图数据的数据源要改一下,以前连的是“222.*.*.*:11521/orcl”,现在需要改成“work1:1521/orcl”。这样,发布地图服务的时候用的就是注册数据库里的数据,不会将数据拷贝到server服务器,也支持FeatureServer。

GIS之家新博客系列发布更新在GIS之家网站,欢迎关注收藏:GIS之家网站

GIS之家作品:GIS之家

GIS之家交流咨询:咨询模式

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180928G1ZF6E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券