Archive for the ‘Desarrollo’ Category

Instalar el cliente de Oracle 10g en windows 7 (Home Premium)

jueves, febrero 9th, 2012

Oracle no tiene certificadas las aplicaciones de Oracle 10g para Windows 7. Por mi parte al intentar instalar el cliente de Oracle 10g reclamaba porque las versiones no eran compatibles. Para la instalación ejecute el setup con el siguiente parametro:

setup.exe -ignoreSysPrereqs

Con ello la instalación se logró en Windows 7 Home Premium, el unico problema es que el menu solo apareció al reinicio.

Forzar modo de compatibilidad en Explorer

jueves, enero 12th, 2012

Una de las cosas funestas de la emision de nuevas versiones de Internet Explorer son las de compatibilidad, páginas que antes se te visualizaban de forma correcta ahora ya no. Existe una forma de generar las compatibilidades con versiones anteriores que me ha resultado, esto es incluir una etiqueta meta en la cabecera de la página


Con esto la compatibilidad se acercará más a lo que necesitas.
Encontré esta solución en dos sitios distintos (sigue el enlace 1 o el enlace 2) pero establecían «IE=IE7» o «IE=IE8» pero a mi me resultó sólo con «IE=8».

Error en lectura de archivo fuera del Application Server

jueves, enero 12th, 2012

Tengo una pagina JSP encargada del proceso de «download» para cualquier archivo. Esta había sido probada en varios sistemas operativos hasta que me topé con Solaris. En Solaris uno no puede leer un archivo que este fuera de la ruta del servidor de aplicaciones, envía error y no lee el archivo (en otros sistemas operativos no sucede). Para poder hacerlo no hay que abrirlo como File sino como URL, pero para abrirlo como URL, hay que antepornerle el protocolo ‘file://’, siendo esto compatible con todos los sistemas operativos.

String file = "file://" + request.getParameter("file");
	
OutputStream output = response.getOutputStream();
InputStream in = null;
try {
    URL url = new URL(file);
    in = url.openStream();
    byte[  ] buf = new byte[4 * 1024]; 
    int bytesRead;
    while ((bytesRead = in.read(buf)) != -1) {
        output.write(buf, 0, bytesRead);
    }
} finally {
    if (in != null) in.close();
}

La verdad es que independientemente del sistema operativo esto debió ser siempre así, sólo que muchas veces uno se queda con lo primero que le resulta.

Error de compilacion de un Package en Oracle (PLS-201 o PLS-00201)

jueves, enero 12th, 2012

Un error raro me apareció mientras compilaba un package

ERROR at line 1:
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-201: identifier 'UNDEFINED' must be declared

Este error se da comunmente a package que tienen relacionados una vista, una solución fue reconstruir la vista según lo explicado en un blog ya que las vistas que tenían ‘select *’ eran las que provocavan el problema.

Eectivamente el error desapareció, pero ninguna de mis vistas tienen el ‘select *’ por lo que la razon es otra. Como utilizo SQL Developer para desarrollar en Oracle, me di cuenta que en la definición de las vistas (al ver la lengueta SQL de la vista) guarda además los nombre de los campos de la vista, aun cuando esto se ocupe el ‘select *’, o sea, la vista se define

CREATE OR REPLACE FORCE VIEW "MI_VISTA" ("CAMPO_UNO", "CAMPO_DOS", ...)
AS ...

Si cambias sólo el select de la vista sin reconstruir la vista te aparecerá ese error en los packages relacionados con ella.

Creación de script para compilación de objetos inválidos en Oracle

jueves, enero 12th, 2012

Para generar sentencias de compilación para los objetos que se encuentran en estado inválido en Oracle sería útil el siguiente script:

select
   'ALTER ' || OBJECT_TYPE || ' ' ||
   OWNER || '.' || OBJECT_NAME || ' COMPILE;'
from
   dba_objects
where
   status = 'INVALID' and owner = 'nombre_del_schema'
and
   object_type in ('PACKAGE','FUNCTION','PROCEDURE','PACKAGE BODY')
;

Encontrando objetos inválidos en Oracle

jueves, enero 12th, 2012

Por lo general en los momentos de compilación de un Packages que esta basado en una vista muchas veces falla por que encuentra la vista o parte de la definicion de un package inválida. El siguiente script esta construido para detectar los objetos invalidos de un esquema

select
   owner, object_type, object_name
from
   dba_objects
where
   status != 'VALID' and owner = 'nombre_del_schema'
order by
   owner,
   object_type
; 

Obviamente si eliminas el «and and owner = ‘nombre_del_schema'» saldrán todos los objetos que se encuentran descompilados.