有oracle 10g,但没有安装arcgis,又想使用空间数据库的解决方案

网友投稿 797 2022-11-07 21:20:29

有oracle 10g,但没有安装arcgis,又想使用空间数据库的解决方案

我在一台虚拟机中部署系统进行测试,配置如下: OS:WIN2008 R2 SP1 X64 DB: oracle 12c 结果系统报错,查找原因,原来是oracle里还不支持arcgis的一些所谓的空间数据库。想想也是,虚拟机里没装arcgis,当然不支持了。

{"ORA-28595: Extproc 代理: DLL 路径无效\nORA-06512: 在 \"SDE.ST_GEOMETRY_SHAPELIB_PKG\", line 70\nORA-06512: 在 \"SDE.ST_GEOMETRY_OPERATORS\", line 68\n"}

但是,难道我真的要装个arcgis吗?那么庞大的一个东西,能不能装成功还不知道呢!

在网上寻寻觅觅,基本都是说改那个所谓listener.ora文件,指向arcgis的dll。我先从开发服务器上拷了一份arcgis的bin到虚拟机,开发服务器上的系统一直运行良好,DB是oracle 10g。到了虚拟机以后,不行;怀疑是acgis的版本不支持oracle 12c,于是又拷了一份支持12c的arcgis的bin,也不成功!

结果从17点搞到21点,我眼冒金星,都快晕倒了!这个系统是部署来下周演示的,清明节不想加班,时间不多了;况且还有另外一个项目的文档要写。项目经理是招我进来的恩公,可不能辜负人家。我感到腹背受敌!

第二天,我冷静了下来。在宿主机的oracle 10g上试了一下,结果OK了。可能oracle 12c的做法并不是修改listener.ora,因为其他项目组有台服务器同时装了12c 和 arcgis的服务器上,我看它的listener.ora,并没有改动,但确实是可以支持SDE的。时间紧迫,只能以后再去寻找答案了。

记录一下有oracle 10g,但没有安装arcgis,又想使用空间数据库的解决方案:

1、将arcgis的bin拷贝到目标机器,如 C:\ArcGIS\Desktop10.0\Bin

2、修改listener.ora,如 D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora

(SID_DESC = (PROGRAM = EXTPROC) (ENV = "EXTPROC_DLLS=C:\ArcGIS\Desktop10.0\Bin\st_shapelib.dll") (SID_NAME = PLSExtProc) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) )

3、重启oracle的监听程序(仅重启监听程序就可以了)

如此,OK矣。你可以用sde账号登录oracle,运行

select sde.ST_AsText(SDE.ST_Geometry('POINT (10 10)', 0)) from dual;

可得正确结果。

2020.05.15

对于 Oracle12C而言,没有这么复杂。只需要:

1)将st_shapelib.dll拷贝到%ORCLE_HOME%\bin\下

2)然后确保sde中,libraries中的ST_SHAPELIB指向了正确的地址

有时候,利用arcgis软件,直接连接Oracle建SDE库,可能这里面的DLL路径就不一定正确。

2020.11.25 注意st_shapelib.dll最好遵从默认拷贝到%ORCLE_HOME%\bin\下,否则会报“ORA-28595: Extproc 代理: DLL 路径无效”错误。

网上也有许多教程说要改什么 listener.ora 和 extproc.ora,要我说,这可能暂时解决了当前的问题,但由于修改了系统的默认配置,以后引发其他异常也说不定。遵从默认就好,修改那么多配置,好像系统默认的就不合理一样。

另外,这个st_shapelib.dll,oracle安装完毕之后默认就是指向了%ORCLE_HOME%\bin\st_shapelib.dll,但是这个时候根本不存在这个dll,整个oracle安装目录都找不到这个dll。需要我们从arcgis安装目录中拷贝过来,或者到arcgis官网下载。这也说明,oracle其实并不天然支持arcgis的空间数据,要靠arcgis自己去扩展。

说到这里,我想起导数据(import)。属性数据一切正常,但导到SDE库就不行了,一堆报错,数据是进去了,但没法使用。我看公司的一些文档,说设置各项权限。现在看来,我怀疑是dll的问题。我猜测应该是这样: 1、创建SDE表空间 2、设置SDE的libraries,正确指向st_shapelib.dll 3、导入从其他库中导出的、包含SDE的数据包

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于Springboot实现送水公司信息管理系统
下一篇:代码
相关文章