1 软硬件
(1)服务器
系统 windows server 2012 R2 64位;
oracle 64位主体安装程序;
arcgis server 10.5;
arcSDE(也许可以不装)。
(2)客户机
系统 windows 10教育版 64位;
arcgis desktop 10.5 32位;
oracle 客户端 32位;
arcSDE (应该是必要的)。
2 总体步骤参考本人如下博文
https://blog.csdn.net/sinat_30065705/article/details/107232532
服务器端,oracle服务端装好后,需要进行监听测试,服务器端可不装32位客户端。
3 特别注意的地方
(1)软件安装需要用“管理员身份运行”,否则会注册表安装失败;
(2)oracle 客户端与软件端需要配置一样的“网络服务名称”,客户端不需要配置监听服务,服务端需要还需要配置监听服务;
(3)要在服务器防火墙设置中允许oracle和arcgis server的应用程序通过。具体参照如下博文:
https://www.cnblogs.com/qumao5736/archive/2010/05/18/1738474.html
https://blog.csdn.net/SYDBC/article/details/17203687?utm_source=blogxgwz6
或者,直接在防火墙中添加规则,将本机GIS server 端口(6080)和数据库端口(1521)加入白名单。
(4)在客户端建立”企业级地理数据库“后,sde账户被锁定,需要在服务端接触SDE账户锁定。
alter user scott account unlock;
commit;
参考博文:
https://blog.csdn.net/hello_word2/article/details/53436658
每次服务器重启后都需要操作一遍,可以在sql中输入"select username, account_status from dba_users;"查看账户锁定状态。
(5)客户端涉及到“orcl”等oracle数据库实例的设置,全部要写全地址名称,比如“192.168.0.173:1521/orcl”。
(6)windows server 2012 R2需要安装Net Framework3.5,参考博文:
https://www.cnblogs.com/xiaoandong/p/9944699.html
(7)如果还有错误,那就在服务器上装一个oracle客户端64位,注意环境变量设置。
4. 在服务中添加新的数据
在已发布的服务中添加新的数据,要先停掉当前服务,然后将新的数据导入当前要素集中,然后添加全局ID并重新注册版本。不停服务,只能不导入当前要素集,然后单独添加全局ID并注册版本。最后覆盖已有的服务。
5. 原始数据与操作数据分离
需要在服务器上再创建一个数据库实例,用oracle服务器管理工具创建,然后在服务器端用网络工具配置服务(否则tnsname文件中服务器地址为计算机名称),此外服务器端的监听文件还要模仿已有的实例监听代码段手动复制一份,更改实例名称,重启监听服务。
客户端的oracle监听文件也需要添加新的实例代码段(方法同上),用网络工具测试通过。
在arcgis中创建企业级地理数据库时注意创建完一个,要关掉arcgis desktop界面,再进去创建。
发布要素服务时,publisher database 和 server database 需要要有一模一样的待发布数据及组织结构,否则会出错。
最终效果是,publisher database中发布原始数据,客户端修改更新后的数据会同步到server database中,保护了原始数据不被修改。
6. 发布栅格数据
(1)纯图片
纯图片数据,只能在arccatalog中右击“共享为影像服务”,作为raster dataset数据类型发布。
(2)多幅可拼接的遥感数据
多幅可拼接的遥感影像,可以先导入raster catalog类型中,然后右击“创建索引的镶嵌数据集”,最后右击新建的镶嵌数据集“共享为影像服务”。这样可以提高影像加载速度。但是需要image server的扩展板许可。
参考博文:
https://blog.csdn.net/aganliang/article/details/79585868?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
7. 并发机制
(1)默认
默认情况下的并发机制是:谁后提交谁优先。
比如,有一个要素服务中有2个点(A,B),用户甲,改了点A的属性,用户乙删除了点A,用户乙先提交,用户甲后提交。则最终数据库里是被修改了属性的点A。
再比如,甲删除了点A,乙删除了点B,则最终数据库中点A和B全被删除了。
再再比如,甲修改点A属性后先提交,乙删除点A后提交,则最终数据库中点A是被删除的。
同时新增没有问题,最终数据库中都会存在新要素。
(2)oracle加锁
oracle中有5种锁,如下表:
其中可能会用到的是2种:
(1)排它锁,sql命令:"lock table xx in exclusive mode; ",作用是整张表只能被当前在编辑的用户编辑,其他用户只能查询该表;
(2)行排他锁,sql命令:"lock table xx in row exclusive mode; ",作用是该表的某一行只能由当前在编辑的用户编辑,其他用户只能访问该行,但该表其他行可以由其他用户编辑。
要素存到oracle中SDE表空间里的结构如下图:
只要对下图中的表“SDE.T1949SPOT”和“SDE.T1949TRACK”加锁即可。
但是加锁的效果很难测试出来。
8. Arcgis 数据服务无法启动
情况一:系统bug
Arcgis server 10.2 和Windows server 2012R2 需要注意,如果发布成功后服务启动不了,或者关闭服务后无法再启动,这都是由于Windows 系统更新了几个补丁导致的,首先需要升级到Arcgis server 10.2.2,然后安装官方的补丁。
arcgis server的更新连接:https://enterprise.arcgis.com/zh-cn/server/10.4/install/windows/upgrade-arcgis-server.htm
对于此bug的官方补丁连接:https://support.esri.com/en/download/7576#bugs
情况二:服务器IP变化
arcgis server服务器站点的地址时自动变化的,但oracle数据库实例的ip不会自动变化。因此需要修改以下几个内容:
(1)修改tnsnames.ora (客户端监听配置) listener.ora (服务端监听实例配置)中对应的IP
(2)重启监听服务
(3)找到Arcgis server管理页面中的“站点”、“数据存储”,进行验证。