lunes, 14 de enero de 2013

La misteriosa relación de Oracle E-Business Suite y NLS_LANGUAGE

En el equipo con el que estoy trabajando tengo instaladas varias herramientas para la realización de las funciones del día a día, por ejemplo:
  • SQL Developer.
  • Oracle Client 10g
  • Oracle RDBMS 10g
  • TOAD 9.6

Esto un poco por decidía y otro porque no he encontrado una herramienta que realmente cumpla mis expectativas al 100%, el caso es que un día me di cuenta que si me conecto con ellas a la base de datos (10.2.0.4) de la aplicación Oracle E-Business Suite no siempre se obtienen los mismos resultados ¿¡!?.

Vayamos a los hechos.

Estando conectado a la BD desde SQL Developer a la base de datos ejecuto una simple consulta para validar los datos de la misma.


El usuario con el que me conecte es el propietario de la tabla, en este caso es APPS.


Hasta aquí nada nuevo, nada extraña... todo Ok. pero si ejecuto unas consultas sobre una determinada tabla los resultados son los siguientes:


Supongamos, la escena:

Suena la extensión... contesto y...

Usuario - ¡Hola! Por favor me puedes mandar el listado de registros de la tabla PER_PEOPLE_V7
Yo -Claro, dame unos minutos...

Cuelgo y voy abriendo SQL Developer. Me conecto a la BD, tecleo usuario y password, la conexión se hace de manera exitosa, empiezo a teclear y los comandos aparecen en pantalla y presiono ENTER, 

Yo - (Pensando) mmmm, no tiene nada, a ver un count... no, no tiene nada.

Levanto el auricular de la extensión, marco los dígitos...

Usuario - ¿Si?
Yo - Hola, oye... esta tabla que me estas solicitando... ¿que información es la que esperas que te mande?
Usuario - Ah mira, es el listado del Personal que esta asignado a un usuario dentro de la aplicación, queremos hacer una depuración y bueno, pensamos que podemos empezar por saber que personal existe.
Yo -  Perfecto, solo era una pequeña duda, estoy trabajando en ello, dame unos minutos.
Usuario- Bye.

Cuelgo y mi mano va al teclado, sé que algo esta mal... es lo bueno; lo malo... es que no tengo ni la menor idea de qué sea. Acudo a quién siempre me ha ayudado en estos momentos de ignorancia e incertidumbre... Google. Después de varios minutos y buscar, buscar y buscar, se empieza a ver luz al final del túnel, parece que algo tiene que ver NLS_LANGUAGE.

Reviso el valor que tiene la sesión desde SQL Developer.


Inicio una sesión desde SQL Plus, habilito la conexión a la base de datos y hago unas consultas.


Lo siguientes es cambiar el valor del parámetros de la sesión que tengo en SQL Developer.


Lanzó un count para validar si ya muestra información.


¡Perfecto! ahora a extraer la información.


Como siempre, quedo para cualquier duda o comentario al respecto.




jueves, 10 de enero de 2013

Oracle Database, DHCP y Loopback adapter


 Es muy común que cuando se empieza en el misterioso mundo del RDBMS de Oracle se haga la instalación  en equipos con Sistema Operativo Windows que no tienen un dirección IP fija, es decir, utilizan el comúnmente conocido DHCP para tomar una dirección IP (Si no tienes idea de lo que es una dirección IP, te recomiendo des una leída al siguiente articulo de Wikipedia Aqui).

También es muy común que nunca se lean los Requisitos de Instalación, ahí se menciona que se debe hacer cuando se vaya a instalar en equipos con DHCP.

"Dynamic Host Configuration Protocol (DHCP) assigns dynamic IP addresses on a network. Dynamic addressing allows a computer to have a different IP address each time it connects to the network. In some cases, the IP address can change while the computer is still connected. You can have a mixture of static and dynamic IP addressing in a DHCP system.

In a DHCP setup, the software tracks IP addresses, which simplifies network administration. This lets you add a new computer to the network without having to manually assign that computer a unique IP address. However, before installing Oracle Database onto a computer that uses the DHCP protocol, you must install a loopback adapter to assign a static, non-routable IP address to that computer"

O lo que es lo mismo:

"Dynamic Host Configuration Protocol (DHCP) asigna direcciones IP dinámicas en una red. Direccionamiento dinámico permite que una computadora tenga una dirección IP diferente cada vez que se conecte a la red. En algunos casos, la dirección IP se puede cambiar mientras la computadora está encendida. Se puede tener una mezcla de IP estática y dinámica en un sistema de direccionamiento DHCP.

En una configuración DHCP, el software rastrea las direcciones IP, lo que simplifica la administración de la red. Esto le permite agregar un nuevo equipo a la red sin tener que asignar manualmente ese equipo una dirección IP única. Sin embargo, antes de instalar la base de datos Oracle en un equipo que utiliza el protocolo DHCP, debe instalar un adaptador de bucle invertido (Loopback adapter) para asignar una estática, no enrutable dirección IP para esa computadora."

La siguiente serie de imágenes muestran como configurar un bucle invertido  o Loopback adapter, como quieran llamarlo. Es sobre un Sistema Operativo Windows 7,  aunque en versiones anteriores la secuencia es muy similar. 

Lo primero es abrir el Asistente para agregar Hardware, para lo cual se teclea el comando hdwwiz.exe.



Debido a que no es un componente "físico" se debe seleccionar la opción de "Instalar el hardware seleccionado manualmente de una lista (avanzado)".


En la siguiente pantalla se debe seleccionar la opción de "Adaptadores de red".


Se debe seleccionar "Microsoft" y "Adaptador de bucle invertido de Microsoft" respectivamente en las siguientes opciones. 


En la siguiente pantalla se debe confirmar lo que se desea instalar, así que una vez confirmado que es lo que se desea se continua con la instalación.



De no presentarse errores la instalación se debe completar. En caso de que se presente un error hay que revisar que se hayan seguido las indicaciones acorde a las imágenes. 


Hasta este punto se ha completado la instalación, a continuación la configuración. Lo primero es abrir el Panel de Control y entrar a la opción de Redes e Internet.


Posteriormente entrar a la opción Centro de redes y recursos compartidos y posteriormente entrar a la opción Cambiar configuración del adaptador.



Se desplegará una pantalla con las Conexiones de red existentes en la computadora que se esta utilizando. La que nos interesa es la que dice "Adaptador de bucle invertido". Vamos a entrar a las propiedades de ese adaptador. Clic con el botón derecho del Mouse y posteriormente clic en Propiedades.


Ya dentro de las propiedades, vamos a seleccionar el elemento Protocolo de Internet versión 4 (TCP/IPv4) y posteriormente clic en Propiedades. En la pantalla de propiedades hay que proporcionar  algunos datos, los 2 principales son Dirección IP y Máscara de subred

El primero de ellos debe ser un valor ficticio, recomiendo usar 10.10.10.10, así nos evitamos de muchos problemas (y explicaciones). La Máscara de subred no debe tener problema si le asignamos la que se maneja por default 255.255.255.0

El valor de Puerta de enlace predeterminada se puede omitir, en este ejemplo se esta poniendo un valor que corresponde al de la red en la que esta el equipo donde esta conectada la computadora. Una vez proporcionados los datos se debe hacer clic en Aceptar.


Si se especificó un valor en Puerta de enlace predeterminada se desplegaran unos mensajes de advertencia, en ambos se debe hacer clic en Si.



Hasta este punto se ha terminado la mitad de la configuración, estamos por entrar a la configuración final. Se debe editar el archivo "hosts", este archivo se encuentra en la ruta:
C:\Windows\System32\drivers\etc\hosts, aunque dependiendo de la instalación puede variar.

Para editar el archivo vamos a utilizar Notepad.



En este archivo vamos a agregar una línea que haga referencia a la IP 10.10.10.10 y asociarla a un nombre "servidor".

Para este ejercicio a la IP 10.10.10.10 se le asigna el nombre de ORCL (puede ser cualquier nombre). Una vez hecho el cambio se debe grabar el archivo.


Hay que probar que los cambios hayan sido registrados de manera correcta. Para lo cual se puede hacer un ping tanto al nombre como a la IP.


La última prueba es hacer la instalación del RDBMS, la parte de la validación de requisitos de instalación debe ser correcta y obvio, la instalación finalizar sin errores.



Espero les sea de utilidad, cualquier duda o comentario al respecto no duden en contactarme.

miércoles, 9 de enero de 2013

java.lang.Exception: Exception in sending Request :: null

ORACLE Enterprise Manager 10g en Windows 7

Muchas veces cuando se quiere trabajar con la Consola de Enterprise Manager 10g, al momento de iniciar por primera vez es común que aparezca el mensaje "java.lang.Exception: Exception in sending Request :: null". Esto se debe a un error de configuración respecto a la zona horaria que tiene por defecto.

Antes de empezar hay que cerrar el navegador que se esta utilizando.

Para corregir este pequeño problema y poder usar la consola para monitorear y administrar la base de datos se debe hacer lo siguiente:

Iniciar una sesión de comando y asignar las variables de memoria, solo en caso de que no estén asignadas, para este ejemplo las variables son las siguientes:

ORACE_HOME=C:/oracle/product/10.2.0/db_1
ORACLE_SID=ORCL


Una vez asignadas las variables de memoria, lo siguiente es detener la consola, para lo cual se utiliza el comando emctl stop dbconsole:


Se debe desplegar un mensaje indicando que se detuvo correctamente, en caso de que aparezca otro mensaje habría que revisar el detalle del mismo. Supongamos que todo salio bien, así que continuemos...

Antes de continuar, una breve explicación. Cuando se hace la instalación del RDBMS de Oracle y se especifica que se desea utilizar la consola del Enterprise Manager, el proceso de instalación toma algunos parámetros para armar la configuración, por ejemplo, el nombre del servidor o el equipo donde se esta haciendo la instalación (hostname) y el SID de la base de datos (instance_name). Con esta información se crea un directorio o carpeta, que es donde se almacena la información de la consola del Enterprise Manager que se va a utilizar para administrar o monitorear la base de datos, lo que quiere decir que en un mismo equipo que tenga más de una base de datos se pueden tener varias consolas de Enterprise Manager. La ruta donde se crea este directorio es similar a la siguiente:

ORACLE_HOME/hostname_instanceName/sysman/config

El equipo donde se esta haciendo esta configuración tiene el nombre de ORCL y el SID de la base de datos también es ORCL, por lo que el directorio donde esta la configuración de la consola del Enterprise Manager esta en la siguiente ruta:

C:\oracle/product\10.2.0\db_1\db_1\ORCL_ORCL\sysman\config 

o lo que es lo mismo:

%ORACLE_HOME%\ORCL_ORCL\sysman\config 

Ya una vez identificada la ubicación, el archivo con el que se va a trabajar es emd.properties. Lo primero que se tiene que hacer es un respaldo de seguridad, para este ejercicio a la copia se le puso el nombre de emd.properties.ORG


Ya hecha la copia se puede abrir el archivo original para editar su contenido, se recomienda utilizar un editor de texto que NO utilice marcas de párrafo y otros símbolos de formatos ocultos, es decir Microsoft Word o cualquiera que se le parezca.


Una vez abierto el archivo, se debe buscar la cadena agentTZRegion, por lo regular es la última línea.



El valor que se debe poner es el que corresponde a la zona horario de donde se esta haciendo la instalación, para este ejercicio el valor que corresponde es Americas/Mexico_City. Una vez hecho el cambio se debe grabar el archivo.



En la ruta %ORACLE_HOME%/sysman/admin/ existe el archivo nsupportedtzs.lst, en este archivo está el listado de todas las zonas horarias.


Lo siguiente es levantar la consola con el comando emctl start dbconsole.


Confirmar que la consola se levanta de manera correcta, para lo cual se despliega el mensaje   "...se ha iniciado correctamente."

Para validar que los cambios son correctos hay que volver a iniciar una sesión. Abrir el navegador y proporcionar el usuario y password.


Se debe desplegar la pantalla principal de la consola.


Cualquier duda o comentario al respecto no duden en contactarme.






Colaboradores