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.
- Administración APEX para crear espacio de trabajo.
- Configurar usuario en base de datos Oracle Database de APEX.
- Crear enlace a base de datos externa DBLINK.
- Testeo y utilización del enlace a base de datos DBLINK en APEX.
- Anexo.
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…»:
Introduciremos los datos necesarios: nombre, contraseña, tablespace por defecto, etc.:
En la pestaña «Sistema» agregaremos el privilegio «CREATE DATABASE LINK»:
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:
La consulta SQL que Oracle Database 9i genera para crear el usuario será:
1 2 3 4 5 6 7 |
CREATE USER "ALONSOAPEX" PROFILE "DEFAULT" IDENTIFIED BY "xxx" DEFAULT TABLESPACE "USERS" ACCOUNT UNLOCK; GRANT CREATE DATABASE LINK TO "ALONSOAPEX" GRANT CREATE PUBLIC DATABASE LINK TO "ALONSOAPEX" GRANT SELECT ON "OTROESQUEMA"."CUADRE_DEFINITIVO" TO "ALONSOAPEX" GRANT "CONNECT" TO "ALONSOAPEX"; |
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:
Accederemos a «Gestionar Espacios de Trabajo», luego a «Crear Espacio de Trabajo»:
Introduciremos el nombre del espacio de trabajo (en nuestro caso ALONSOPRUEBAS) y la descripción, pulsaremos «Siguiente»:
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):
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:
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:
Si todo es correcto nos mostrará una ventana indicando que el proceso ha concluido de forma satisfactoria:
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:
En la página principal de Oracle Enterprise Manager pulsaremos en «Administración», luego, dentro de «Usuarios y privilegios» en «Usuarios»:
Seleccionaremos el usuario correspondiente a APEX (en nuestro caso «ALONSOPRUEBAS») y pulsaremos «Editar»:
A continuación pulsaremos en «Privilegios del Sistema», luego en «Editar Lista»:
En la parte derecha, en «Privilegios Disponibles del Sistema» seleccionaremos «CREATE DATABASE LINK», a continuación pulsaremos el botón «Mover» y luego «Aceptar»:
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):
Pulsaremos en «Taller de SQL», luego pulsaremos en «Explorador de Objetos» – «Examinar» – «Enlaces de Bases de Datos»:
Pulsaremos el botón «Crear», en el menú que aparece pulsaremos «Enlace de Base de Datos»:
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»:
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»:
SQL para crear dblink:
1 2 3 4 5 6 7 8 9 10 11 |
create database link BDEXTERNA connect to ALONSOAPEX identified by PASSWORD using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) ) (CONNECT_DATA = (SID = ORCL) ) )' / |
NOTA IMPORTANTE: con determinados navegadores se puede producir el siguiente error al pulsar en «Crear»:
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»:
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»:
Si todo es correcto nos mostrará un mensaje como el siguiente:
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»:
El asistente de prueba de enlace a base de datos nos mostrará el SQL que ejecutará para probar el enlace:
1 2 |
select 1 from dual@BDEXTERNA.REGRESS.RDBMS.DEV.US.ORACLE.COM |
Pulsando en «Terminar» se ejecutará el SQL anterior para probar el enlace:
Si todo es correcto mostrará un mensaje como este:
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»:
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.
Crearemos una vista con la consulta SQL:
1 2 |
select * from NOMBRE_ESQUEMA.NOMBRE_TABLA@BDEXTERNA |
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:
1 2 3 |
create or replace view "VISTA_TABLA_EXTERNA" as select * from NOMBRE_ESQUEMA.NOMBRE_TABLA@BDEXTERNA |
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.