Archive for June, 2009

Haciendo Oracle XE disponible desde ubicaciones remotas

Tuesday, June 16th, 2009

Cuando se instala la base de datos Oracle XE, normalmente, solo está disponible en la computadora en la que realizamos la instalación. Sin embargo, no queremos una base de datos para poder accesarla de manera local únicamente, es importante poder acceder a ella desde otras computadoras en nuestra red particular (privada), o bien, desde Internet.

En esta oportunidad, les traigo dos métodos para lograr esto. El primero de ellos se puede ejecutar solamente después de finalizar la instalación de la base de datos Oracle XE, y antes de realizar cualquier actualización de la herramienta Apex de Oracle.

Este primer procedimiento lo puede ejecutar únicamente en la computadora en la que realizó la instalación, de manera gráfica y con la ayuda de un navegador, y es el que detallo a continuación:

  1. Inicie la base de datos Oracle XE:
    • En Windows, haga clic en el botón “Inicio”, luego en “Base de Datos Oracle 10g Express Edition”, finalmente en “Iniciar base de datos”.
    • En Linux, haga clic en el botón “Aplicaciones”, “Base de Datos Oracle 10g Express Edition” e “Iniciar base de datos”.
  2. Vaya a la página inicial de la base de datos Oracle XE:
    • Windows: “Inicio”, “Base de Datos Oracle 10g Express Edition”, “Ir a Página Inicial de Base de Datos”.
    • Linux: “Aplicaciones”, “Base de Datos Oracle 10g Express Edition”, “Ir a Página Inicial de Base de Datos”.
  3. En la página de Ingreso de la base de datos Oracle XE, ingrese el usuario SYSTEM, la contraseña definida al momento de la instalación y finalmente haga clic en el botón “Conectar”.
  4. Al ingresar a la página de la base de datos Oracle XE, haga clic en el enlace “Administración”
  5. Bajo “Tareas”, haga clic en el enlace “Administrar Acceso HTTP”.
  6. Seleccione la opción: Disponible en servidor local y desde clientes remotos.
  7. Haga clic en el botón “Aplicar cambios”.

El segundo método es utilizando la línea de comandos de SQL, de acuerdo al siguiente procedimiento, el cual aplica tanto para bases de datos recién instaladas, como para aquellas en las que ya se hizo una actualización de Apex.

  1. Inicie SQL*Plus y conéctese como SYSTEM:
  2.                 $ sqlplus system
                    Ingrese contraseña: Contraseña_SYSTEM
    
  3. En el indicador SQL, ingrese la siguiente instrucción:
  4. EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

Nota de seguridad:
Con el acceso remoto por HTTP a la base de datos Oracle XE, toda la información intercambiada entre el navegador y la base de datos es en texto simple – o sea, desencriptado – incluyendo usuarios de base de datos y sus correspondientes contraseñas. Si esto es causa de preocupación, NO HABILITE la conexión de acceso HTTP remoto a la base da datos.

¿Qué usuario está conectado a mi aplicación Apex?

Thursday, June 11th, 2009

En muchas ocaciones, en las tablas que utilizamos para almacenar datos, debemos guardar el usuario que realizó una tarea específica, tal como, incluir un nuevo registro, o modificar alguno de los datos existentes.

Tradicionalmente, estamos acostumbrados a utilizar el valor de la variable Oracle USER, sin embargo, si hacemos uso de esta variable en una aplicación Apex, siempre vamos a registrar el mismo valor, sin importar cual usuario estemos utilizando, este valor es “APEX_PUBLIC_USER”.

Ahora bien, cuando definimos estructuras y código, no lo hacemos pensando solo en utilizarlos dentro de Apex, podemos también querer usarlos por ejemplo en sqlplus, Forms, funciones, procedimientos, paquetes, o cualquier otro lugar, por lo que también podemos necesitar el valor de la variable USER.

Para definir una sentencia que siempre nos funcione y guarde el usuario correcto, debemos utilizar el siguiente código:

  • nvl(htmldb_application.g_user,user)
  • Con lo anterior, nos aseguramos de que si estamos realizando una tarea dentro de Apex, vamos a registrar el valor de la variable global htmldb_application.g_user, y si estamos utilizando el código fuera de Apex, entonces registraremos en valor de la variable USER.

    Espero que este tip, les sea de utilidad.

    Los espero en la próxima entrega.