【ArcGIS】ArcGIS10.2完整安装操作手册-配置SDE的ST_Geometry

操作原因:

在 Oracle 中,ST_Geometry 和 ST_Raster 的 SQL 函数使用通过 Oracle 的外部过程代理(即 extproc)访问的共享库。要将 SQL 和 ST_Geometry 或 ST_Raster 配合使用或访问 GDB_ITEMS_VW 和 GDB_ITEMRELATIONSHIPS_VW 视图中的 ArcSDE XML 列,Oracle 必须能够访问这些库。因此,这些库必须存在于 Oracle 服务器上,并且必须通过 Oracle 的外部过程框架调用它们。
在 ArcGIS 中,不设置 Oracle 监听器也可以使用 ST_Geometry 和 ST_Raster。但是,您将不会拥有 ArcGIS 客户端的全部功能,也不会拥有 SQL 客户端的任何功能(如 SQL*Plus)。例如,如果未配置 Oracle 监听器,则无法对 ArcMap 的查询图层中的 ST_Geometry 列使用 SQL 函数、无法识别数据库视图中的要素、无法对包含 ST_Raster 列的表进行版本化,无法删除包括 ST_Raster 列的行,也无法从 SQL 客户端执行 SQL 函数。另外,如果您不配置 Oracle 监听器,则无法通过使用 ST_Geometry 类型作为要素服务的数据库发布数据。

操作步骤

1.获取libst_shapelib.so

Arcgis下该文件位置,取哪个都可以
Server下:
C:\Program Files\ArcGIS\Server\DatabaseSupport\Oracle

Desktop下:
C:\Program Files (x86)\ArcGIS\Desktop10.2\DatabaseSupport\Oracle
(10.4多了个libst_raster_ora.so,不知做啥的一起放过去)

2.放置libst_shapelib.so到lib目录下

将该文件放置到ORACLE_HOME/lib下,并且权限设为chmod 777或644都可以

#chown oracle:oinstall libst_shapelib.so
chmod 777 libst_shapelib.so

注意:通过FTP(默认是文本方式)上传so文件时,必须采用binary二进制方式,否则执行insert语句时会报一下错误:

(另外还要注意:将so文件放置到oracle用户的lib路径下无效,必须放置到负责启动监听的用户下的lib路径下。
2020年7月30日补充:这条可能要看情况,试过几次都是放在ORACLE_HOME/lib下才生效,可能不用放到监听用户下的)

3.修改extproc.ora(oracle11g下为可选操作)

进入ORACLE_HOME/hs/admin,打开extproc.ora

[oracle@redhat6 admin]$ pwd  
/home/oracle/app/oracle/product/11.2.0/dbhome_1/hs/admin  
[oracle@redhat6 admin]$ ls  
extproc.ora  initdg4odbc.ora  listener.ora.sample  tnsnames.ora.sample  
 ANY   
 When EXTPROC_DLLS=ANY, DLL checking is disabled.  
Syntax: SET EXTPROC_DLLS=ANY  

SET EXTPROC_DLLS=  

可以看一下文件的相关说明,只需要修改一个地方
SET EXTPROC_DLLS=ANY即可
重启监听(可选操作,2020年7月30日:貌似最近几次不用重启,最近实验10.4版本)即可。(注意,这种方式只针对Oracle11g以上的版本)

4.创建library ST_SHAPELIB

1.Sde用户下查询

select * from user_libraries; 

2.创建library --修改为具体路径

create or replace library ST_SHAPELIB as '/oracle2/product/11.2.0/dbhome_1/lib/libst_shapelib.so'; 
  1. 使生效
alter package sde.st_geometry_shapelib_pkg compile reuse settings;

5.测试ST_Geometry函数是否正常

select sde.st_astext(sde.st_transform(sde.st_point('point(1 1)', 4326), 4326))from dual;

这种语句不报错基本就可以了(好像有些环境不行,见附录2020年12月14日补充说明)
–其中4326为srid值,也可能为2,具体需要查询,查询待补充
特定插入语句测试

insert into p
  (OBJECTID,
   ID,
   NAME,
   CITY_ID,
   COUNTY_ID,
   TYPECODE,
   IS_RESERVE,
   STATUS,
   STYLE,
   SCALE,
   SHAPE)
values
  (297185,
   1054046,
   '测试',
   1,
   0,
   9503,
   null,
   3,
   null,
   null,
   SDE.ST_POINTFROMTEXT('POINT(100 20)', 4326));

2018年7月3日补充

今晚遇到的情况是,负载的数据库用grid启监听,/u01/app/11.2.0/grid/lib/libst_shapelib.so配置不行,改成/u01/app/11.2.0/oracle/lib/libst_shapelib.so 就可以
其中也参考以下修改了listener.ora,没改tnsname,可能无关
listener.ora修改后部分
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))) # line added by Agent
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLExtProc)
(ORACLE_HOME = /u01/app/11.2.0/grid)
(PROGRAM = extproc)
(ENVS = “EXTPROC_DLLS=ANY”)
)
)

https://blog.csdn.net/a_dev/article/details/77481876

2019年1月21日补充:

每次搞SDE总作妖,上上周又搞了一次10.2的sde,extproc怎么改怎么配不顶事,好在测试服务器,oracle可以随意重启,好了,放弃求索。转到最初的配置sde方法,修改tnsnames和listener,重启监听,搞定。所以能费点儿事,省点儿心也不用一味死折腾extproc,能解决问题的就是好方法。

2020年7月30日补充:

10.4下内容基本一致,只是多了个libst_raster_ora.so,放置到了安装目录下,没有配置extproc.ora,也没重启监听,就生效了

参考:http://resources.arcgis.com/zh-cn/help/main/10.2/index.html#/na/002n00000091000000/
https://blog.csdn.net/haichao062/article/details/39294909
https://blog.csdn.net/a_dev/article/details/77481876

2020年12月14日

1.10.6下的也只有一个libst_shapelib.so

2.今天测试数据库用的10.7的desktop,创建的sde库,执行测试ST_Geometry函数是否正常这一步,查询语句报错,插入 语句没问题,先记下来,没影响的话就这样不用管了
在这里插入图片描述

2022年10月8日

今天发生的错误,这个就是传错了文件,IBMAIX服务器传了linux64的文件,重新上传IBMAIX文件就好了
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实施工程师木易

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值