SDE函数包中包含大量的空间计算分析函数,是我们做空间相关分析的一把利刃(目前好像我们只有这一把),有关SDE函数的使用,请见我空间另外的一篇帖子的附件.
按照通常教程,过程是这样的
1.找到listener.ora
2.找到SID_LIST_LISTENER
3.在(PROGRAM = extproc)下一行添加
(ENVS="EXTPROC_DLLS=F:\ArcGIServer\ArcSDE\ArcSDE\ora10gexe\bin\st_shapelib.dll"),
路径请自己改.
4.重启监听服务
但是会遇到失败的情况,我只遇到两种:
1.监听服务无法启动
2.监听服务启动成功,但是SDE函数还是无法链接外部PRC
3.在linux和unix中,监听服务启动成功,但是SDE函数还是无法链接外部PRC
针对以上情况:
1.添加的EXTPROC_DLLS一定在(PROGRAM = extproc)的下一行,也就是一个回车后,最好用记事本编辑,先关闭实例服务,重启监听服务才会成功,另外,st_shapelib.dll的路径中如果包含中文,有待其他同学去尝试.
2.这说明添加的EXTPROC_DLLS没有起作用,由于我用的是WIN7,所以我又复查了一边,发现一个问题:
win7安装的oracle10g,listener.ora中的LISTENER块,对应IPC协议的key=EXTPROC0;tnsnames.ora中的EXTPROC_CONNECTION_DATA,key=EXTPROC1
把这两个key统一,我是把,listener.ora中的LISTENER,key改为EXTPROC1.重启监听服务及实例服务即可,一定要重启实例服务,否则你的tns都会坏掉.
3.还需要在SDE用户下执行如下SQL,但是windows平台是不用的,有可能是SDE POST的时候做好了,请高人指点:
Sql代码
- CREATE OR REPLACE LIBRARY st_shapelib AS '<full_path>\st_shapelib.dll'
至此问题解决了,希望其他同学积极补充.