Configurar Oracle extproc para acceder a la geodatabase con SQL

Las funciones SQL de ST_Geometry y ST_Raster en Oracle usan bibliotecas compartidas a las que se accede a través del agente de procedimiento externo de Oracle, o extproc. Para utilizar SQL con ST_Geometry o ST_Raster, o para acceder a las columnas XML de ArcSDE en las vistas GDB_ITEMS_VW y GDB_ITEMRELATIONSHIPS_VW, Oracle debe tener acceso a las bibliotecas. Por lo tanto, las bibliotecas deben estar presentes en el servidor de Oracle, y estas bibliotecas deben ser utilizadas a través del marco de procedimiento externo de Oracle.

Es posible usar ST_Geometry y ST_Raster en ArcGIS sin configurar Oracle listener. Sin embargo, no tendrá funcionalidad completa desde los clientes de ArcGIS y no tendrá funcionalidad desde los clientes SQL, como SQL*Plus. Por ejemplo, no puede usar funciones SQL en las columnas ST_Geometry en las capas de consulta en ArcMap, identificar entidades en vistas de base de datos, versionar tablas que contengan columnas ST_Raster, eliminar una fila que incluya una columna ST_Raster ni ejecutar funciones SQL desde los clientes SQL si Oracle listener no está configurado. Además, si no configura Oracle listener, no puede publicar los datos de una base de datos que utilice el tipo ST_Geometry como servicio de entidades.

La instalación de ST_Raster es opcional. Consulte Instalar el tipo ST_Raster en Oracle para obtener instrucciones.

NotaNota:

Si su base de datos de Oracle está instalada en un servidor de Windows, pero no tiene el servidor de aplicación ArcSDE instalado, quizá deba instalar el paquete redistribuible Microsoft Visual C++ 2008 SP1 (x64). Si el paquete redistribuible Microsoft Visual C++ 2008 SP1 (x64) no está en el servidor Oracle, descárguelo desde el sitio Web de Microsoft e instálelo.

Si está utilizando Oracle 11g, edite el archivo extproc.ora para utilizar funciones a través del marco de procedimiento externo de Oracle. Si está utilizando Oracle 10g, configure Oracle listener.

Oracle 11g

Oracle recomienda que configure EXTPROC modificando el archivo extproc.ora en lugar de configurar el listener para Oracle 11g. El archivo extproc.ora se encuentra en el directorio ORACLE_HOME\hs\admin.

Después de mover el ST_Geometry (st_shapelib) y/o la biblioteca ST_Raster a su servidor Oracle, modifique el archivo extproc.ora para que señale la ubicación de las bibliotecas.

En un servidor de Windows, debe agregar líneas similares a lo siguiente:

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

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

Si está utilizando ambas bibliotecas, puede colocarlas en una línea:

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

En estos ejemplos, las bibliotecas se colocan en una carpeta denominada mis bibliotecas, que se creó en el servidor Oracle para almacenar las bibliotecas.

En un servidor UNIX o Linux:

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

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

Si está utilizando ambas bibliotecas, puede colocarlas en una línea:

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

En estos ejemplos, las bibliotecas se ubican en el directorio esrilibs del usuario, que se creó en el servidor Oracle para almacenar las bibliotecas.

Oracle 10g

Los Oracle listeners son altamente configurables. Por ejemplo, hay varios listeners asociados con su base de datos, y cada uno de ellos puede administrar diversos tipos de solicitudes de servicio. Este es un tema complejo, y este documento no cubre las diversas variaciones del tema. Es importante consultar la Oracle Database Net Services Administrator's Guide para obtener los detalles sobre la configuración de los listeners.

Indicar a extproc dónde encontrar las bibliotecas compartidas es el aspecto más importante de la configuración del listener. Debe modificar la configuración del listener para especificar la ubicación de las bibliotecas compartidas y reiniciar el proceso de Oracle listener para que los cambios de la configuración tengan efecto.

Hay dos archivos de configuración estándar de Oracle Listener relacionados: tnsnames.ora y listener.ora. Normalmente estos archivos se encuentran en ORACLE_HOME/net/admin. Este documento presenta los valores de configuración que son necesarios.

Existen varias formas de administrar la configuración. Puede editar los archivos de texto con un editor de texto, usar Oracle Net Manager o usar Oracle Net Configuration Assistant. Oracle proporciona documentación sobre cómo configurar el listener. Consulte la Oracle Database Net Services Administrator's Guide para obtener detalles.

El archivo tnsnames.ora contiene un directorio de los servicios de bases de datos conocidos. Este archivo puede definir los servicios en la base de datos local o en servidores remotos. Una entrada es específicamente para el uso del servidor de la base de datos local para que use comunicaciones entre procesos (IPC) a fin de enviar llamadas de función al extproc. Esta entrada se etiqueta EXTPROC_CONNECTION_DATA. También puede alterar los valores SID y Key en esta entrada.

Estos elementos se utilizan para vincular esta entrada a la información correspondiente en el archivo listener.ora. La clave puede ser cualquier nombre corto, pero tanto el archivo listener.ora como el archivo tnsnames.ora deben tener la misma clave. Estos valores distinguen entre mayúsculas y minúsculas. Solo los usa el proceso del listener y no los usuarios o las aplicaciones.

En el archivo listener.ora se describen algunos de los servicios (no necesariamente todos) para los cuales el listener escucha solicitudes.

Los valores que pueden modificarse en este archivo incluyen:

Pasos:
  1. Antes de hacer algún cambio, haga copias de seguridad de los archivos tnsnames.ora y listener.ora.
  2. Abra el archivo tnsnames.ora en el servidor Oracle.
  3. Cambie los valores SID y Key en EXTPROC_CONNECTION_DATA en el archivo tnsnames.ora.

    EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
    )

    Esta entrada siempre debe tener la etiqueta EXTPROC_CONNECTION_DATA. El servidor de la base de datos usa esta entrada para que las comunicaciones entre procesos envíen llamadas de función a extproc.

  4. Abra el archivo listener.ora en el servidor Oracle.
  5. Cambie las entradas necesarias para configurar los servicios desde los cuales el listener aceptará solicitudes.

    El primer ejemplo es para un sistema operativo Windows en el que están instalados el servidor de aplicaciones ArcSDE y Oracle:

    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")
     )  
    )

    En este ejemplo se muestra una entrada para un servidor Linux o UNIX (n el cual están instalados el servidor de aplicaciones ArcSDE y Oracle:

    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. Después de cambiar el archivo listener.ora, reinicie Oracle listener.
5/10/2014