在一个项目中 使用 动态数据图层。数据通过sde 和oracle 数据库绑定。但是发布服务后,通过网页查询和显示的数据和数据库不同步。一直保持原有的值不变。
并且在发布的时候,会 报告一个 警告,说没有注册数据库,将使用复制的数据。
解决的办法:
1.点击这个警告,弹出一个对话框,输入一个 命名,注册这个数据库就可以了。然后重新分析。直到这个警告去除。
2.或者通过如下步骤进行注册
选择arcgis的管理连接,鼠标右键点击,选择《 服务器属性》
选择 《数据存储》
点击+号,注册一个数据库
选择导入的按钮,导入一个已经成功的连接的 数据库连接
然后勾选 服务器数据库连接 , 填写一个名称就可以了
注意: 如果出现 提示《无法连接数据库,请查看客户端配置》的错误信息。
就需要 确定 oracle客户端使用的版本。
我的机器配置情况是这样:
2台物理主机:
第一台是:windows 2012 64bit 装 oracle 11g 64位
第二台是:windows 2012 64bit 装 arcgis server 10.2(64),和 arcgis desktop(32)
根据arcgis 的 帮助文档里面的针对oracle使用sde的 说明
http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#//002n00000038000000
我在第二台机器上安装了2个 oracle 的 instance client 。1个是 32位 ,1个是64位。
因为:
arcgis desktop(32) 中进行sde的直连是使用 32位oracle的驱动
arcgis server (64)中进行数据库注册是使用 64位oracle的驱动
所以:要设置如下环境变量
ORACLE_CLIENT=C:\oracle_client\instantclient_12_1
ORACLE_CLIENT_64=C:\oracle_client\instantclient_12_1_x64
ORACLE_HOME=C:\oracle_client\instantclient_12_1
ORACLE_SID=sde
LD_LIBRARY_PATH=%ORACLE_HOME%
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\oracle_client\instantclient_12_1_x64;
C:\oracle_client\instantclient_12_1
注意:在path里面设置的时候,要 让 64的环境变量写在 32 的环境变量前面。
然后重启一下 arcgis server 的服务器。读取正确的 64位环境变量即可。