在 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 列或包含 ST_Raster 列的版本化表使用 SQL 函数,无法删除包括 ST_Raster 列的行,也无法从 SQL 客户端执行 SQL 函数。另外,如果您不配置 Oracle 监听器,则无法将使用 ST_Geometry 类型作为要素服务的数据发布到空间数据服务器。

ST_Raster 安装为可选操作。有关说明,请参阅在 Oracle 中安装 ST_Raster 类型。

注:

如果您的 Oracle 数据库安装在 Windows 服务器上,但您未安装 ArcSDE 应用程序服务器,则您可能需要安装 Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)。如果 Oracle 服务器上没有 Microsoft Visual C++ 2008 SP1 Redistributable Package (x64),则可从 Microsoft 网站下载,然后进行安装。

如果您使用的是 Oracle 11g,请编辑 extproc.ora 文件以通过 Oracle 的外部过程框架来调用函数。如果您使用的是 Oracle 10g,请配置 Oracle 监听器。

首先创建ST_SHAPELIB library


 

执行sql查询user_libraries
select * from user_libraries;

创建ST_SHAPELIB library

create or replace library ST_SHAPELIB as 'C:\arcgisdll\st_shapelib.dll';

 
设置生效
alter package sde.st_geometry_shapelib_pkg compile reuse settings;
 

Oracle 11g

对于 Oracle 11g,Oracle 建议您通过更改 extproc.ora 文件而不是配置监听器来配置 EXTPROC。extproc.ora 文件位于 ORACLE_HOME\hs\admin 目录中。

将 ST_Geometry (st_shapelib) 和/或 ST_Raster 库移动到您的 Oracle 服务器上之后,更改 extproc.ora 文件以指向库的位置。

在 Windows 服务器上,您可添加与以下类似的行:

EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll
EXTPROC_DLLS=ONLY:C:\\mylibraries\\libst_raster_ora.dll

如果您使用两个库,可将它们放在一行上:

EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll;C:\\mylibraries\\libst_raster_ora.dll

在这些示例中,库放置在名为 mylibraries 的文件夹中,此文件夹在 Oracle 服务器上创建以存储库。

在 Linux 或 UNIX 服务器上:

SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so
SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_raster_ora.so

如果您使用两个库,可将它们放在一行上:

SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so:/user/esrilibs/libst_raster_ora.so

在这些示例中,库放置在用户的 esrilibs 目录中,此目录在 Oracle 服务器上创建以存储库。

Oracle 10g

Oracle 监听器能够进行多种配置。例如,可能有多个监听器与数据库关联,而每个监听器又可管理多种类型的服务请求。这是一个很复杂的主题,本文档并未涵盖其中的很多种变化。参阅《Oracle 数据库网络服务管理员指南》了解有关配置监听器的详细信息是很重要的。

配置监听器的一个最重要方面是要告知 extproc 在哪里找到共享库。需要修改监听器配置以指定共享库的位置以及重新启动 Oracle 监听器进程,这样配置更改内容才能生效。

本文档涉及两个标准的 Oracle 监听器配置文件:tnsnames.ora 和 listener.ora。这两个文件通常位于 ORACLE_HOME/net/admin。本文档介绍所需的配置设置。

管理设置有多种方法。可用文本编辑器编辑文本文件,使用 Oracle Net Manager,或者使用 Oracle Net Configuration Assistant。Oracle 提供有关如何配置监听器的文档。有关详细信息,请参阅《Oracle 数据库网络服务管理员指南》。

tnsnames.ora 文件包含已知数据库服务的目录。此文件可在本地数据库或远程服务器上定义服务。有一个条目专供本地数据库服务器通过进程间通信 (IPC) 将函数调用发送到 extproc 使用。此条目标注为 EXTPROC_CONNECTION_DATA。可更改此条目下的 Key 和 SID 值。

这些项目用于将该条目链接至 listener.ora 文件中的对应信息。该键的名称可以为任何缩写名称,但它在 listener.ora 文件和 tnsnames.ora 文件中的名称必须一致。这些值区分大小写。仅监听器进程可使用这些值,用户或应用程序不可使用。

listener.ora 文件描述监听器针对请求所监听的某些(不一定是全部)服务。

此文件中可更改的值包括:

  • SID_LIST_LISTENER

    此标注是名为 LISTENER(默认监听器名称)的监听器要处理的 SID 列表的开头。

  • SID_LIST 和 SID_DESC

    标题 SID_LIST 下的 SID_DESC 条目用于定义服务。列表中的第一个条目处理 extproc 请求,第二个条目处理客户端会话。

  • SID_NAME

    其值必须与在文件 tnsnames.ora 中为 extproc 指定的 SID 对应。

  • ORACLE_HOME

    定义此项服务的 Oracle 主页的位置。从此位置下的文件夹加载 extproc 程序文件。

  • PROGRAM

    指定 extproc 可执行文件的文件名。此区分大小写的名称可能是 extproc 或 extproc.exe,具体取决于操作系统的类型。文件位于 ORACLE_HOME/bin。

  • ENVS

    这是 extproc 在运行时所使用的环境变量的列表。列表用冒号分隔。此列表必须包括环境变量 EXTPROC_DLLS 以及 extproc 在运行时需要的任何其他环境变量的定义,其他环境变量通常包括 UNIX 和 Linux 系统中的 LD_LIBRARY_PATH、SHLIB_PATH 或 LIBPATH,或者 Windows 服务器上的 PATH。路径变量通常包括几何与投影引擎库的位置。

  • EXTPROC_DLLS

    此环境变量用于定义 extproc 可直接从中加载和调用函数的库的列表。必须在此指定包含以下库的文件的路径:形状库,用于通过 SQL 来访问 ST_Geometry 类型或 GDB_ITEMS_VW 和 GDB_ITEMRELATIONSHIPS_VW 视图;st_raster 库,用于通过 SQL 来访问 ST_Raster 类型。

    对于安装在 UNIX 上的 Oracle 服务器,列表用冒号分隔,对于安装在 Windows 上的 Oracle 服务器,列表用分号分隔。所有路径都必须是绝对路径并且指向本地目录,或者是 Oracle 系统用户可访问的 UNC 路径。这也意味着如果已将 ArcSDE 应用程序服务器安装在非 Oracle 服务器上,则必须将形状和栅格库从 SDEHOME 中的 bin 目录复制到 Oracle 服务器。

    不存在环境变量替换。

    可选关键字 ANY 和 ONLY 可用于放宽或限制 extproc 使用库文件的方式。如果将 ANY 放在路径前面,Oracle 可从指定路径加载任何库并且不必提供库名称。如果将 ONLY 放在路径前面,Oracle 将仅使用路径中提供的特定库。

  • KEY

    为此条目设置的值将此监听器链接到文件 tnsnames.ora 中的对应服务条目。该值将此监听器与可能存在于同一数据库服务器的其他 IPC 监听器区分开来。key 可为任何名称缩写,但在文件 listener.ora 和 tnsnames.ora 中必须相同。key 区分大小写。

步骤:
  1. 进行任何更改之前,要备份 tnsnames.ora 和 listener.ora 文件。
  2. 打开 Oracle 服务器上的 tnsnames.ora 文件。
  3. 在 tnsnames.ora 文件中更改 EXTPROC_CONNECTION_DATA 下的 Key 和 SID 值。
    EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1))
    )
    (CONNECT_DATA =
    (SID = PLSExtProc)
    (PRESENTATION = RO)
    )
    )

    此条目必须始终有标注 EXTPROC_CONNECTION_DATA。此条目供数据库服务器通过进程间通信将函数调用发送到 extproc 使用。

  4. 打开 Oracle 服务器上的 listener.ora 文件。
  5. 更改所需的条目以设置监听器将接受其请求的服务器。

    第一个示例用于同时安装有 ArcSDE 应用程序服务器和 Oracle 的 Windows 操作系统。

    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    (ADDRESS = (PROTOCOL = TCP)(HOST = svr1.dmn1.com)(PORT = 1521))
    )
    ) SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (SID_NAME = PLSExtProc)
    (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
    (PROGRAM = extproc)
    (ENVS="EXTPROC_DLLS=C:\ArcSDE\sdeexe\bin\st_shapelib.dll;c:\ArcSDE\sdeexe\bin\libst_raster_ora.dll")
    )
    )

    此示例显示的条目用于安装有 ArcSDE 应用程序服务器和 Oracle 的 Linux 或 UNIX 服务器:

    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    (ADDRESS = (PROTOCOL = TCP)(HOST = svr1.dmn1.com)(PORT = 1521))
    )
    ) SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (SID_NAME = PLSExtProc)
    (ORACLE_HOME = /servit/oracle/product/10.2.0/db_1)
    (PROGRAM = extproc)
    (ENVS="EXTPROC_DLLS=/servit/ArcSDE/sdeexe/lib/libst_shapelib.so:/servit/ArcSDE/sdeexe/lib/libst_raster_ora.so")
    )
    )
  6. 更改完 listener.ora 文件后,重新启动 Oracle 监听器。
     

ARCGIS SDE空间化处理的更多相关文章

  1. 通过SQL直接插入、修改ArcGIS SDE空间表中的数据

    基于Arcgis Server 10.1 +Oracle 11g环境测试 ArcGIS SDE ? 1 2 INSERT INTO CAMERA_INFO(OBJECTID,ID,SHAPE)     ...

  2. 使用Arcgis时,在sde空间库常用的相关函数

    一.Oracle库中配置好sde空间库常见的场景 1.在sde库中创建表:community 创建表:community 字段:id(INTEGER), shape(ST_GEOMETRY) 2.往s ...

  3. ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析 1.1 GIS分析基础 G ...

  4. Arcgis sde 10.1您不能创建在安装后的空间库,提示User has privileges required to create database objects.

    Geodatabase在10.1版本号也有较大的改进和更新,在用户体验和性能上都有变化,在实际的工作中可能会碰到各种奇怪的问题(事实上都是有原因的,须要我们对其工作机制有所了解才干避免其发生):近期须 ...

  5. ArcGIS SDE 10.1 for Postgresql 服务连接配置

    去年写了ArcGIS 10.1 如何连接Postgresql 数据库(http://blog.csdn.net/arcgis_all/article/details/8202709)当时采用的也是Ar ...

  6. arcgis sde 导出栅格文件失败,提示“Database user name and current user schema do not match ”.

    具体错误/警告如下: 翻译一下:数据库用户名和当前用户数据库对象的集合不匹配 没有空间参考存在 数据库表没找到 主要还是第一句的问题. 解决方法:切换当前sde账户为能够写入sde的账户,这块不是很了 ...

  7. 使用ArcGIS Earth矢量化高精度的数据(kml转图层转shp/要素类)

    大家好,这次来分享干货.做地理分析的同学,或者需要使用地图却不知道哪里有精度较高矢量数据(如校园图)的时候,怎么办呢? 我们知道ArcGIS提供了精度较高的全球影像图,基于此,可以自己进行矢量化,然后 ...

  8. SDE 空间表操作

    1. 创建空间表(包含st_geometry属性字段) CREATE TABLE sensitive_areas (area_id integer, name varchar(128), area_s ...

  9. ArcGIS Engine空间查询功能的实现(QueryFilterClass+SpatialFilterClass)

    地图中包含大量的信息,为了快速地了解所需信息,必须借助为空间数据专门编写的空间查询功能. 空间查询主要有两种类型: 基于属性的查询,也称为属性查询. 基于空间位置的查询,也称为空间查询. 查询类的基本 ...

随机推荐

  1. STM32基于HAL库通过DMA读写SDIO

    通过STM32CUBEMX生成DMA读写sdio的工程,再读写过程中总会卡死在DMA中断等待读写完成的while中,最终发现while等待的标志在SDIO的中断里置位的,而SDIO中断优先级如果小于或 ...

  2. C# BS消息推送 SignalR介绍(一)

    1. 前言 本文是根据网上前人的总结得出的. 环境: SignalR2.x,VS2015,Win10 介绍 1)SignalR能用来持久客户端与服务端的连接,让我们便于开发一些实时的应用,例如聊天室在 ...

  3. 【PRINCE2是什么】PRINCE2认证之七大主题(1)

    进入第一个主题,PRINCE2商业论证:PRINCE2指出,商业论证就是进行判断是否值得对项目进行投资,值不值的问题.PRINCE2的商业论证有四个 在项目开始时,开发商业论证.在整个项目生命周期中, ...

  4. Google翻译之路

    如何将整个网站都翻译成某种语言,想必大家都有碰到这样的问题吧. 如果能够访问Google的话, 那这个太容易不过了. 来看,下面的就是Google提供的直接翻译某个网站. http://transla ...

  5. 基于jsp+servlet图书管理系统之后台万能模板

    前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...

  6. 03.Web大前端时代之:HTML5+CSS3入门系列~H5功能元素

    Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 2.功能元素 1.hgroup 对网页或区段(secti ...

  7. 3.Kali 1.0 / 2.0 安装中文输入法(谷歌pinyin + 其他)

    1.kali默认是没有中午输入法的,需要自己安装一下 2.首先我们先获取root权限 dnt@HackerKali:~$ su密码: 3.安装中文输入法(apt-get 指令不会的同学可以学习一下基础 ...

  8. 前端学HTTP之网络基础

    × 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就 ...

  9. Android Activity的4种启动模式详解(示例)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5233269.html 先介绍下Android对Activity的管理,Android采用Task来管理多个A ...

  10. Oracle 11g DG配置简明版

    环境: 主库A机:在线生产环境,RHEL 6.4 + Oracle 11.2.0.3 备库B机:新增备机,RHEL 6.4 需求: 对生产环境最小影响前提下配置DG备库. 目录: 一.B机安装相同版本 ...