用sql 在oracle 中操做空间表的时候报错入下:linux
以上提示说明是依赖的sde包引用无效,经过查询官网为oracle数据库配置了sde包,设置过程在此记录一下:web
登录sde用户执行sql
select * from user_libraries where library_name = 'ST_SHAPELIB';
结果以下:明显对应路径是中引入的 st_shapelib.dll 文件是不存在的shell
2.在linux上新建文件夹,从arcdesktop 的安装目录找到 ......\DatabaseSupport\Oracle\Linux64 拷贝 libst_shapelib.so 过去并赋予权限数据库
mkdir sde_linux mkdir oracle chmod 777 libst_shapelib.so
3.更改外部库到指定so文件位置,登录sde用户,执行oracle
create or replace library st_shapelib as '/oracle/sde_linux/oracle/libst_shapelib.so';
以上的路径为你本身的libst_shapelib.so文件的所在路径app
4.配置环境变量spa
lstener.ora 文件添加(根据本身状况修改ORACLE_HOME 和ENVS 路径) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = PLSExtProc) (PROGRAM = extproc) (ENVS="EXTPROC_DLLS=/oracle/sde_linux/oracle/libst_shapelib.so") ) )
tnsnames.ora 添加如下内容 EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1521)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
注意事项: 这两个文件的SID、SID_NAME 要相等 ,另外tnsnames.ora 中的Key 也要和listener.ora 中的Key 要相等。code
5.重启监听和服务orm
su - oracle lsnrctl stop lsnrctl start sqlplus /nolog conn /as sysdba shutdown immediate startup
完成以上操做后就能够在oracle中用sql语句更新arcgis空间表了
执行:
SELECT registration_id FROM sde.table_registry WHERE table_name = 'TXT_TEST01' and owner = 'ARCGIS'; INSERT INTO TXT_TEST01 (OBJECTID,FIELD_0,SHAPE) VALUES(sde.version_user_ddl.next_row_id('ARCGIS', 121), 'TRANQUIL', sde.ST_GEOMETRY('point (119.001824881 25.436934541)',300000) );
添加成功!end