Cómo conectar APEX (Oracle Application Express) con una base de datos externa de Oracle Database 9i. Os mostramos en este artículo, paso a paso, con explicaciones y capturas de pantalla como realizar un DBLINK (Database Link) en Oracle Application Express (APEX). También explicamos cómo crear un usuario en Oracle 9i con los permisos necesarios para el enlace DBLINK con APEX.

Crear usuario en la BD de Oracle Database externa

En primer lugar necesitaremos crear (o utilizar un usuario existente) de la base de datos de Oracle Database a la que queramos conectarnos desde APEX. Para ello abriremos Oracle Enterprise Manager o bien cualquier software que permita ejecutar sentencias SQL en Oracle (por ejemplo AjpdSoft Administración Bases de Datos). En nuestro caso, conectaremos APEX a Oracle Database 9i, si tuviésemos otra versión de Oracle Database superior accederíamos a su administrador correspondiente vía web.

Desde «Seguridad» – «Usuarios» pulsaremos con el botón derecho y seleccionaremos «Crear…»:

Conectar APEX con una base de datos Oracle externa - Crear usuario en la BD de Oracle Database externa

Introduciremos los datos necesarios: nombre, contraseña, tablespace por defecto, etc.:

Conectar APEX con una base de datos Oracle externa - Crear usuario en la BD de Oracle Database externa

En la pestaña «Sistema» agregaremos el privilegio «CREATE DATABASE LINK»:

Conectar APEX con una base de datos Oracle externa - Crear usuario en la BD de Oracle Database externa

En «Objeto» añadiremos todas las tablas o vistas a los que el usuario tendrá acceso. También indicaremos los privilegios por cada tabla o vista (ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE). Los permisos indicados en esta pestaña será los que «heredará» el usuario en APEX, es importante delimitar correctamente los permisos en este punto, sobre todo si permitimos acceso a APEX a usuarios externos a nuestra organización:

Conectar APEX con una base de datos Oracle externa - Crear usuario en la BD de Oracle Database externa

La consulta SQL que Oracle Database 9i genera para crear el usuario será:

Adaptando los datos oportunos de esta consulta SQL y ejecutándola en cualquier aplicación que lo permita nos creará el usuario para el enlace con APEX.

Administración APEX para crear espacio de trabajo

Desde APEX (Oracle Application Express) procederemos a crear el espacio de trabajo (si aún no lo hemos hecho). Accederemos a la administración de APEX desde el navegador de Internet, abriendo la URL:

https:// .168.1.200:8080/pls/apex/f?p=4050:3:4107151163215112

(donde «192.168.1.200» será la IP del servidor de APEX y «8080» será el puerto utilizado por APEX)

Introduciremos usuario y contraseña con permisos de administración en APEX:

Conectar APEX con una base de datos Oracle externa - Administración APEX para crear espacio de trabajo

Accederemos a «Gestionar Espacios de Trabajo», luego a «Crear Espacio de Trabajo»:

Conectar APEX con una base de datos Oracle externa - Administración APEX para crear espacio de trabajo

Introduciremos el nombre del espacio de trabajo (en nuestro caso ALONSOPRUEBAS) y la descripción, pulsaremos «Siguiente»:

Conectar APEX con una base de datos Oracle externa - Administración APEX para crear espacio de trabajo

Si queremos utilizar un esquema existente en el desplegable marcaremos «Sí», en nuestro caso crearemos un nuevo esquema, en «Nombre de Esquema» introduciremos el nombre para el nuevo esquema de APEX asociado al espacio de trabajo, indicaremos la contraseña para el esquema y la cuota de espacio (en MB):

Conectar APEX con una base de datos Oracle externa - Administración APEX para crear espacio de trabajo

Indicaremos el nombre del usuario administrador de este espacio de trabajo, será el usuario que pueda realizar tareas de administración sobre el espacio (crear aplicaciones, crear tablas, vistas, etc.). Indicaremos también la contraseña para este usuario, el nombre, los apellidos y el correo electrónico:

Conectar APEX con una base de datos Oracle externa - Administración APEX para crear espacio de trabajo

El asistente para crear nuevo espacio de trabajo de APEX nos mostrará un resumen de las opciones seleccionadas, si es correcto pulsaremos «Crear» para proceder a la creación definitiva del espacio de trabajo:

Conectar APEX con una base de datos Oracle externa - Administración APEX para crear espacio de trabajo

Si todo es correcto nos mostrará una ventana indicando que el proceso ha concluido de forma satisfactoria:

Conectar APEX con una base de datos Oracle externa - Administración APEX para crear espacio de trabajo

Configurar usuario en base de datos Oracle Database de APEX

Tras crear el usuario en la base de datos de Oracle externa a APEX y crear el espacio de trabajo en APEX, procederemos a configurar el usuario que automáticamente ha creado el asistente al crear el espacio de trabajo, en la base de datos Oracle donde está instalado APEX. Al usuario creado tendremos que añadirle el privilegio de CREATE DATABASE LINK. Para ello accederemos a la administración de Oracle (el de APEX), con un usuario con privilegios de DBA, abriendo la consola de administración Oracle Enterprise Manager:

Configurar usuario en base de datos Oracle Database de APEX

En la página principal de Oracle Enterprise Manager pulsaremos en «Administración», luego, dentro de «Usuarios y privilegios» en «Usuarios»:

Configurar usuario en base de datos Oracle Database de APEX

Seleccionaremos el usuario correspondiente a APEX (en nuestro caso «ALONSOPRUEBAS») y pulsaremos «Editar»:

Configurar usuario en base de datos Oracle Database de APEX

A continuación pulsaremos en «Privilegios del Sistema», luego en «Editar Lista»:

Configurar usuario en base de datos Oracle Database de APEX

En la parte derecha, en «Privilegios Disponibles del Sistema» seleccionaremos «CREATE DATABASE LINK», a continuación pulsaremos el botón «Mover» y luego «Aceptar»:

Configurar usuario en base de datos Oracle Database de APEX

En realidad es equivalente a ejecutar la consulta SQL:

GRANT CREATE DATABASE LINK TO «ALONSOPRUEBAS»

Crear enlace a base de datos externa DBLINK en APEX

Por último, crearemos el enlace a la base de datos externa (DBLINK) en la BD de APEX. Para ello accederemos a la administración del espacio de trabajo creado anteriormente (introduciendo usuario y contraseña con permisos de administración sobre el espacio de trabajo a modificar):

https://192.168.1.100:8080/pls/apex/apex
Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Pulsaremos en «Taller de SQL», luego pulsaremos en «Explorador de Objetos» – «Examinar» – «Enlaces de Bases de Datos»:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Pulsaremos el botón «Crear», en el menú que aparece pulsaremos «Enlace de Base de Datos»:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Introduciremos los datos para el nuevo enlace de base de datos:

  • Nombre de Enlace de Base de Datos: nombre que tendrá el DBLINK en APEX, en nuestro caso «BDEXTERNA».
  • Conectar a Esquema: nombre del esquema (usuario) de la base de datos Oracle externa a la que queremos conectarnos, en nuestro caso «ALONSOAPEX».
  • Contraseña: contraseña del usuario de la base de datos externa (del esquema anterior).
  • IP o Nombre de Host Remoto: IP o nombre de red del servidor de Oracle externo al que deseamos conectarnos, en nuestro caso 192.168.1.100.
  • Puerto de Host Remoto: puerto que utiliza Oracle Database externo (por defecto 1521).
  • SID o Nombre de servicio: indicaremos el método de nomenclatura por SID o por nombre del Servcio, en nuestro caso por SID.

Tras introducir los datos pulsaremos «Siguiente»:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

El asistente de creación de enlace de base de datos de APEX nos mostrará la consulta SQL que se ejecutará para crear el DBLINK en APEX, si todo es correcto pulsaremos «Crear»:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

SQL para crear dblink:

NOTA IMPORTANTE: con determinados navegadores se puede producir el siguiente error al pulsar en «Crear»:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Con el texto:

Fallo al crear el enlace de base de datos.
ORA-00933: comando SQL no terminado correctamente

Este error es debido a que en determinadas versiones de Oracle Database y con determinados navegadores, para que funcione correctamente el comando SQL CREATE DATABASE LINK, hay que cambiar la línea

identified by PASSWORD

por.

identified by values ‘PASSWORD’

Puesto que el asistente para crear un Enlace de Base de Datos no nos da la posibilidad de modificar el SQL que él mismo genera, tendremos que copiar el SQL anterior (antes de pulsar en «Crear») y, desde el menú de Oracle Application Express «Inicio» – «Taller SQL» – «Comandos SQL»:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Pegaremos la consulta SQL que ha de crear el enlace a la base de datos externa (DBLINK ó DATABASE LINK), cambiando el valor indicado anteriormente y pulsaremos en «Ejecutar»:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Si todo es correcto nos mostrará un mensaje como el siguiente:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Con el texto: Enlace a base de datos creado.

Para probar el enlace a base de datos creado podremos acceder a la administración del espacio de trabajo: «Inicio» – «Taller de SQL» – «Explorador de Objetos» – «Examinar» – «Enlaces de Bases de Datos», en la parte izquierda aparecerá el enlace creado, lo seleccionamos con un clic de ratón. En la parte derecha aparecerán las propiedades del enlace, pulsaremos el botón «Probar»:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

El asistente de prueba de enlace a base de datos nos mostrará el SQL que ejecutará para probar el enlace:

Pulsando en «Terminar» se ejecutará el SQL anterior para probar el enlace:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Si todo es correcto mostrará un mensaje como este:

Conectar APEX con una base de datos Oracle externa - Crear enlace a base de datos externa DBLINK en APEX

Con el texto: Prueba realizada correctamente; el enlace funciona. Prueba correcta de enlace de base de datos.

Utilización del enlace a base de datos DBLINK en APEX

Tras crear el DBLINK o enlace a base de datos externa, desde APEX, accederemos a la administración del espacio de trabajo de APEX, luego a «Taller de SQL» – «Explorador de Objetos» – «Crear» – «Vista»:

Utilización del enlace a base de datos DBLINK en APEX

Introduciremos los datos para la vista a crear:

  • Nombre de la vista: nombre que tendrá para referenciarla (utilizarla más adelante en consultas SELECT y demás).
  • SQL: consulta SQL con la que se creará la vista, esta consulta seleccionará registros de una tabla o vista de la base de datos Oracle externa.
Utilización del enlace a base de datos DBLINK en APEX

Crearemos una vista con la consulta SQL:

Donde:

  • NOMBRE_ESQUEMA: nombre del usuario (esquema) de Oracle externo al que nos conectaremos y que es propietario de las tablas a seleccionar.
  • NOMBRE_TABLA: nombre de la tabla o vista del esquema que queremos seleccionar.
  • BDEXTERNA: nombre del enlace a base de datos externo creado anteriormente.

La consulta SQL que creará la vista:

ANEXO

Algunos errores al crear un enlace a base de datos con APEX

  • ORA-01031: privilegios insuficientes

Si aparece este error al intentar crear un Enlace a Base de datos (DBLINK) externo, es debido a que alguno de los usuarios de Oracle Datbase que se está utilizando no tiene los privilegios suficientes. O bien el usuario de la base de datos externa o bien el propio usuario de la base de datos de APEX, ambos deben tener, al menos, el privilegio CREATE DATABASE LINK.

  • ORA-00933: comando SQL no terminado correctamente.

Este error puede producirse al intentar crear el DBLINK. Aquí explicamos cómo solucionarlo.

  • ORA-02011: nombre de enlace con la base de datos duplicado.

    Ya existe un enlace a base de datos creado en la base de datos con el mismo nombre.

  • ORA-00600: código de error interno, argumentos: [kzdlk_zt2 err], [4294967283], [], [], [], [], [], []
    Prueba errónea de enlace de base de datos.

En determinadas circunstancias se puede producir este error al probar el enlace a base de datos.