El problema
Hace poco tiempo me encontre con el siguiente mensaje de error en SQLPLUS*:
ORA-06502: PL/SQL: numeric or value error: host bind array too small
Este error surgía de querer ejecutar un PL/SQL que hacia uso de dbms_output.put_line. Lamentablemente el mensaje de error no indicaba la linea del problema y tampoco había demasiada información en Internet sobre ello, y lo peor de todo es que en otra PC el mismo PL/SQL andaba de maravillas!
La solución
Al ejecutar el PL/SQL en la otra PC me di cuenta de que tenía instalado una versión más nueva del cliente de Oracle SQL*Plus: Release 10.2.0.1.0 y que nuestra base de datos es una Oracle 10G R2 version 10.2.0.2.0.
Sin embargo en mi PC tenía el cliente 10.1.0.1.0, asi que desinstalé el cliente e instalé la versión 10.2 del cliente y "mágicamente" el problema se solucionó!
Espero que les haya servido!!
Saludos!
El problema
A veces nos encontramos con la necesidad de poder "loguear" el acceso a base de datos de una aplicación, por desgracia no todas las aplicaciones cuentan con esta funcionalidad, o si la poseen, no siempre cumplen todas nuestras espectativas.
La solución
Por suerte existe una forma de "loguear" el acceso a bases de datos Oracle y "espiar" lo que hace la aplicación. Esta solución consiste en utilizar un desarrollo de Sergey Sikorskiy:
http://www.geocities.com/ocispy/
Para poder utilizar esta excelente herramienta debemos:
- copiar el archivo "ocispy8i.dll" al directorio ORACLE_HOME/bin
- copiar el archivo "ocispy.cfg" a nuestro directorio raiz, por ejemplo "C:\ocispy.cfg"
- y por ultimo setear la variable de entorno ORA_OCI_UCBPKG a "ocispy8i" (set ORA_OCI_UCBPKG=ocispy8i).
Listo! con eso ya podemos empezar a loguear nuestra aplicacion.
Conclusión
Esta herramienta nos permite de una manera rapida y sencilla realizar un trace de cada aplicación que haga uso el cliente OCI de Oracle. Pueden revisar las opciones a incluir en el archivo "ocispy.cfg" y ajustarlo a sus necesidades.