viernes, 31 de julio de 2009
Oracle prosigue su estrategia de adquisición de compañías
Le toca el turno a la firma GoldenGate Software, especializada en tecnología de integración de datos en tiempo real. Las dos llevaban trabajando juntas desde hace 10 años.
Le toca el turno a la firma GoldenGate Software, especializada en tecnología de integración de datos en tiempo real. Las dos llevaban trabajando juntas desde hace 10 años.
Oracle acaba de anunciar una nueva adquisición que se une a las recientes de Sun Microsystems y Virtual Iron.
En esta ocasión se trata de la compañía GoldenGate Software, cuya especialidad es el desarrollo de tecnología de integración de datos en tiempo real. Efectivamente, Oracle y GoldenGate llevaban 10 años trabajando muy de cerca y muchos de los productos de la segunda ya están integrados con Oracle Database, Oracle Fusion Middleware y otras aplicaciones del desarrollador de bases de datos.
El objetivo de esta adquisición, tal y como asegura Oracle, es permitir que los datos se puedan mover entre sistemas heterogéneos en tiempo real sin tener que parar los procesos en ningún momento. Además, también esperan incrementar la inteligencia de negocio (BI), así como mejorar la replicación y reducir las tareas de mantenimiento.
De esta forma, se podrían llevar a cabo transiciones de gran volumen, como es el caso de la banca online, compras, operaciones con seguros… sin necesidad de interrumpir el servicio a los clientes.
“La necesidad de mejorar el rendimiento operativo en entornos globales 24x7 hace que sea necesaria la integración de los datos para soportar en tiempo real las operaciones”, señala Hasan Rizvi, vicepresidente de desarrollo de Oracle Fusion Middleware.
Cómo hacer un export de forma remota en Oracle10g con DATAPUMP
- El sistema de archivos no ha sido montado en nuestro servidor local, ó
- Si el servidor remoto, no cuenta con un Oracle Server instalado y una instancia de base de datos corriendo para la versión Oracle10g ó superior.
Servidor 2
[oracle@serv_lab2 respaldos]$ mkdir DUMPDIR
[oracle@serv_lab2 respaldos]$ cd DUMPDIR
[oracle@serv_lab2 DUMPDIR]$ pwd
/respaldos/DUMPDIR
[oracle@serv_lab2 DUMPDIR]$ mkdir lab2
[oracle@serv_lab2 DUMPDIR]$ mkdir admin
[oracle@serv_lab2 DUMPDIR]$ cd lab2
[oracle@serv_lab2 lab2]$ pwd
/respaldos/DUMPDIR/lab2
[oracle@serv_lab2 lab2]$ ORACLE_SID=lab22
[oracle@serv_lab2 lab2]$ export ORACLE_SID
[oracle@serv_lab2 lab2]$ ORACLE_SID=admin2
[oracle@serv_lab2 lab2]$ export ORACLE_SID
[oracle@serv_lab2 lab2]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 31 09:21:42 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> connect / as sysdba
Connected.
SQL> create directory EXPDMP as '/respaldos/DUMPDIR/admin';
Directory created.
SQL> grant read,write on directory EXPDMP to respaldo;
Grant succeeded.
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
[oracle@serv_lab2 lab2]$ ORACLE_SID=lab22
[oracle@serv_lab2 lab2]$ export ORACLE_SID
[oracle@serv_lab2 lab2]$ sqlplus scott/tiger
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 31 09:25:11 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
SQL> desc t1
Name Null? Type
----------------------------------------- -------- ----------------------------
NO_DOCU NOT NULL VARCHAR2(12)
NO_LINEA NOT NULL NUMBER(6)
[oracle@serv_lab2 lab2]$ expdp respaldo/respaldo directory=EXPDMP dumpfile=prueba_respaldo.dmp tables=scott.t1 network_link=admin.lab1.co.cr
Export: Release 10.2.0.4.0 - 64bit Production on Friday, 31 July, 2009 9:28:10
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
Starting "RESPALDO"."SYS_EXPORT_TABLE_01": respaldo/******** directory=EXPDMP dumpfile=prueba_respaldo.dmp
tables=cemaconaf.t1 network_link=admin.lab1.co.cr
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 128 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."T1" 5.132 KB 21 rows
Master table "RESPALDO"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for RESPALDO.SYS_EXPORT_TABLE_01 is:
/respaldos/DUMPDIR/lab2/prueba_respaldo.dmp
Job "RESPALDO"."SYS_EXPORT_TABLE_01" successfully completed at 09:29:51
[oracle@serv_lab2 lab2]$
[oracle@serv_lab2 lab2]$
[oracle@serv_lab2 lab2]$ ORACLE_SID=lab22
[oracle@serv_lab2 lab2]$ export ORACLE_SID
[oracle@serv_lab2 lab2]$ sqlplus scott/tigger
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 31 09:34:38 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
SQL> desc t1
Name Null? Type
----------------------------------------- -------- ----------------------------
NO_DOCU NOT NULL VARCHAR2(12)
NO_LINEA NOT NULL NUMBER(6)
SQL> select count(*) from t1;
COUNT(*)
----------
1011
SQL> drop table t1;
Table dropped.
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
[oracle@serv_lab2 lab2]$ pwd
/respaldos/DUMPDIR/lab2
[oracle@serv_lab2 lab2]$ ls -la
total 92
drwxr-xr-x 2 oracle oinstall 4096 Jul 31 09:28 .
drwxr-xr-x 4 oracle oinstall 4096 Jul 31 09:19 ..
-rw-rw-r-- 1 oracle oinstall 1084 Jul 31 09:29 export.log
-rw-rw---- 1 oracle oinstall 73728 Jul 31 09:29 prueba_respaldo.dmp
-rw-r----- 1 oracle oinstall 700 Jul 31 09:25 sqlnet.log
[oracle@serv_lab2 lab2]$ impdp respaldo/respaldo directory=EXPDMP dumpfile=prueba_respaldo.dmp
Import: Release 10.2.0.4.0 - 64bit Production on Friday, 31 July, 2009 9:35:33
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
Master table "RESPALDO"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "RESPALDO"."SYS_IMPORT_FULL_01": respaldo/******** directory=EXPDMP dumpfile=prueba_respaldo.dmp
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."T1" 5.132 KB 21 rows
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "RESPALDO"."SYS_IMPORT_FULL_01" successfully completed at 09:35:37
Servidor 1
[oracle@serv_lab1 lab1]$ ORACLE_SID=lab11
[oracle@serv_lab1 lab1]$ export ORACLE_SID
[oracle@serv_lab1 lab1]$ sqlplus scott/tiger
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 31 09:35:48 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
SQL> desc t1
Name Null? Type
----------------------------------------- -------- ----------------------------
NO_FISICO VARCHAR2(12)
SQL> select count(*) from t1;
COUNT(*)
----------
21
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
Devuelta en el servidor nodo 2
[oracle@serv_lab2 lab2]$ pwd
/respaldos/DUMPDIR/lab2
[oracle@serv_lab2 lab2]$
>[oracle@serv_lab2 lab2]$ ORACLE_SID=lab22
[oracle@serv_lab2 lab2]$ export ORACLE_SID
[oracle@serv_lab2 lab2]$ sqlplus scott/tiger
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 31 09:35:48 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
SQL> desc t1
Name Null? Type
----------------------------------------- -------- ----------------------------
NO_FISICO VARCHAR2(12)
SQL> select count(*) from t1;
COUNT(*)
----------
21
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
miércoles, 29 de julio de 2009
Diferencia entre Vistas del Diccionario de la base de datos y las Vistas Dinámicas de Rendimiento
- Vistas del diccionario de la base de datos
- Vistas dinámicas de rendimiento ( performance )
- DBA_ Vistas en dónde se puede obtener información para todos los objetos de la base de datos.
- ALL_ Vistas con información para todos los objectos de un usuario ó esquema específico ó objetos sobre los cuáles el usuario tiene privilegios otorgados.
- USER_ Vistas con la información de todos los objetos que le pertenecen a un usuario ó esquema
Las diferencias entre las vistas de datos del diccionario y las vistas dinámicas es:
- Las vistas del diccionario, usualmente tienen nombre en plural ( DBA_TABLES ) y las vistas dinámicas en singular ( V$DATAFILE).
- Las vistas del diccionario, estan únicamente disponbles cuando la base de datos esta abierta, algunas V$ dinámicas pueden estar disponibles cuando la base de datos no esta totalmente abierta.
- La data en las vistas del diccionario de la base de datos, esta usualmente en "MAYUSCULA", mientras en las vistas dinámicas esta usualmente en "minúscula".
- La data de las vistas del diccionario de la base de datos, es estática y no es limpiada cuando la base de datos es reiniciada.
- La data de las vistas dinámicas es limpiada despues de reiniciar la base de datos.
Ejemplos vistas del diccionario de la base de datos
- DBA_TABLES
- DBA_TABLESPACES
- DBA_USERS
Ejemplos de vistas dinámicas
- V$VERSION
- V$OPTION
- V$DATABASE
Como determinar el tipo de dato de una columna en una tabla, sin hacer uso del DESC
Foro: http://comunidadoraclehispana.ning.com/forum/topics/como-saber-si-un-dato-es
Cómo saber si un dato es número, letra, fecha ?
Publicado por Ivan Dario Guerrero Martinez el julio 27, 2009 a las 5:00pm en Tecnologias Oracle
Fuente:http://stackoverflow.com/questions/1087161/oracle-identify-data-type
DECLARE
c NUMBER;
d NUMBER;
col_cnt INTEGER;
f BOOLEAN;
rec_tab DBMS_SQL.DESC_TAB;
col_num NUMBER;
PROCEDURE print_rec(rec in DBMS_SQL.DESC_REC) IS
BEGIN
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('col_type = '
rec.col_type);
DBMS_OUTPUT.PUT_LINE('col_maxlen = '
rec.col_max_len);
DBMS_OUTPUT.PUT_LINE('col_name = '
rec.col_name);
DBMS_OUTPUT.PUT_LINE('col_name_len = '
rec.col_name_len);
DBMS_OUTPUT.PUT_LINE('col_schema_name = '
rec.col_schema_name);
DBMS_OUTPUT.PUT_LINE('col_schema_name_len = '
rec.col_schema_name_len);
DBMS_OUTPUT.PUT_LINE('col_precision = '
rec.col_precision);
DBMS_OUTPUT.PUT_LINE('col_scale = '
rec.col_scale);
DBMS_OUTPUT.PUT('col_null_ok = ');
IF (rec.col_null_ok) THEN
DBMS_OUTPUT.PUT_LINE('true');
ELSE
DBMS_OUTPUT.PUT_LINE('false');
END IF;
END;
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, 'SELECT * FROM RD_ENLACES', DBMS_SQL.NATIVE);
d := DBMS_SQL.EXECUTE(c);
DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);
/*
* Following loop could simply be for j in 1..col_cnt loop.
* Here we are simply illustrating some of the PL/SQL table
* features.
*/
col_num := rec_tab.first;
IF (col_num IS NOT NULL) THEN
LOOP
print_rec(rec_tab(col_num));
col_num := rec_tab.next(col_num);
EXIT WHEN (col_num IS NULL);
END LOOP;
END IF;
DBMS_SQL.CLOSE_CURSOR(c);
END;
/
create view vw_test as
select 1 an_integer, 'abc' a_string, sysdate a_date from dual;
SQL> set linesize 80
SQL> desc rd_enlaces
Name Null? Type
----------------------------------------- -------- ----------------
CODIGO NOT NULL VARCHAR2(5)
ORDEN NOT NULL NUMBER(2)
DESCRIPCION NOT NULL VARCHAR2(30)
DB_LINK NOT NULL VARCHAR2(80)
IND_OFICINA NOT NULL VARCHAR2(1)
IND_ACTIVO NOT NULL VARCHAR2(1)
SQL> @0
col_type = 1
col_maxlen = 5
col_name = CODIGO
col_name_len = 6
col_schema_name =
col_schema_name_len = 0
col_precision = 0
col_scale = 0
col_null_ok = false
col_type = 2
col_maxlen = 22
col_name = ORDEN
col_name_len = 5
col_schema_name =
col_schema_name_len = 0
col_precision = 2
col_scale = 0
col_null_ok = false
col_type = 1
col_maxlen = 30
col_name = DESCRIPCION
col_name_len = 11
col_schema_name =
col_schema_name_len = 0
col_precision = 0
col_scale = 0
col_null_ok = false
col_type = 1
col_maxlen = 80
col_name = DB_LINK
col_name_len = 7
col_schema_name =
col_schema_name_len = 0
col_precision = 0
col_scale = 0
col_null_ok = false
col_type = 1
col_maxlen = 1
col_name = IND_OFICINA
col_name_len = 11
col_schema_name =
col_schema_name_len = 0
col_precision = 0
col_scale = 0
col_null_ok = false
col_type = 1
col_maxlen = 1
col_name = IND_ACTIVO
col_name_len = 10
col_schema_name =
col_schema_name_len = 0
col_precision = 0
col_scale = 0
col_null_ok = false
PL/SQL procedure successfully completed.
SQL> select * from vw_test;
NUMBER,STRING,FECHA)
-----------------------
1 abc 29-JUL-09
martes, 28 de julio de 2009
Nuevas características de la claúsula SAMPLE en SQL Oracle10g ó superior
BANNER
-----------------------------------------------------------------------------------------
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL> select count(*) from arinmeh;
COUNT(*)
----------
7067200
Consulta del 50% de registros en la tabla.
SQL> select count(*) from arinmeh sample(50);
COUNT(*)
----------
3535153
Consulta del 25% de los bloques que forman la tabla.
SQL> select count(*) from arinmeh sample block(25);
COUNT(*)
----------
1760533
Como reparar ORA-00607 ORA-00600 [4194],[35]
Este error indica que el tablespace UNDO se encuentra corrupto.
Síntomas:
- La aplicación empiece a generar errores como el descrito a continuación, en la imagen adjunta.
- El alert de la instancia, registra el mismo error, con los argumentos indicados.
- Rendimiento de la base de datos, se ve comprometido.
Solucción:
- Crear un nuevo tablespace undo.
- Switchear el tablespace undo en memoria para ser utilizado de facto. ( alter system set undo_tablespace='
'nombre_nuevo_tablespace" scope=both; ) - Borrar el tablespace anterior.
Lo más leído en el mes de Julio 2009
http://oracledbacr.blogspot.com/2009/07/instalacion-de-webutil-para-oracleas.html
http://oracledbacr.blogspot.com/2009/06/instalando-oracle-application-server.html
http://oracledbacr.blogspot.com/2009/04/creando-export-de-oracle-comprimido-en.html
http://oracledbacr.blogspot.com/2009/07/el-poderoso-allowresetlogscorruptiontru.html
http://oracledbacr.blogspot.com/2009/07/tablas-con-problemas-de-lentitud-la.html
No dejes de leer las demás publicaciones.
lunes, 27 de julio de 2009
Adquisición de Conformia Redwood Shores
El software PPLM de Conformia, tiene una serie de características importantes, para manejar farmacias, así como administrar el desarrollo y manejo de la producción, a través de sus componentes en las empresas del área Bio-Químicas y Farmacéuticas.
Esta combinación permitirá a las compañías de Productos Farmacéuticos y Biotecnologías, acelerar la innovación, la administración de objetivos y mejorar su productividad.
Conceptos: Qué significa: Buffer hit ratio ?
De Oracle 10g en adelante: La administración del buffer cache, así como de otras estructuras de memoria del SGA ( System Global Area ), pueden ser administradas en forma automática por el motor de la base de datos. Si el parámetro de inicialización "db_cache_advice", esta seteado al valor "ON", el motor ajustará de forma dinámica los tamaños de las áreas del SGA, según sea requerido por la instancia. Otra forma de verificar que la opción de auto administración de SGA esta activa, es verificando que el valor del parámetro "db_cache_size", sea "0" .
Si no conoce cuales son los requerimientos de tamaño de buffer cache y necesita configurar lo más adecuadamente su servidor, el mantener en funcionamiento esta característa de administración automática, puede ser dar buenos resultados.
domingo, 26 de julio de 2009
El poderoso _ALLOW_RESETLOGS_CORRUPTION=TRUE
Basado en: RECOVER A DATAFILE WITH MISSING ARCHIVELOGS
Doc ID: 418476.1
Type: PROBLEM
Modified Date: 03-JUN-2009
Síntoma: ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'c:\ORACLE\ORADATA\SYSTEM01.DBF'
Qué podemos hacer.?
A pesar del panorama tan poco positivo, les cuento, que logré recuperar una base de datos, en estas condiciones.
- Los tablespaces de índices, no eran tan críticos, por tanto, lo más fácil, eran borrarlos para poder continuar con la recuperación.
- El tablespace temporal, no hay problema. En todo caso se crea otro tablespace temporal y listo.
- Esta es la parte interesante del problema. Los datafiles de datos, fueron revisados con el utilitario "DBV", y ninguno presentaba problemas, incluyendo el datafile de SYSTEM. Sin embargo, al darle "startup", me indica que el datafile de SYSTEM, requiere recuperación, porque se encuentra inconsistente y me pide, un archivo de archivelog, para poder realizar la recuperación. La base de datos queda en estado montada, pero no abierta. La base de datos, les recuerdo, no está en modo ARCHIVE. Intento varias opciones encontradas en "metalink.oracle.com", sin embargo, ninguna funciona. Una nota me indica que debo, recuperar el datafile de un respaldo consistente en frío. - No hay respaldos en frío -. Apoyado en la nota 418476.1, de cómo realizar una recuperación de un datafile con pérdida de archivelogs, hago lo siguiente:
- Bajo la base de datos con "shutdown abort".
- Monto la base de datos "startup mount"
- Hago un respaldo del controlfile de la base de datos.
- Edito el archivo generado del respaldo del controlfile y dejo la opción de "Create controlfile" con la opción de resetlogs.
- Creó un archivo de parámetros de tipo pfile del SPFILE actual de la instancia.
- Se agrega la línea: _allow_resetlogs_corruption=TRUE
- Recreó el archivo SPFILE de la instancia con el contenido del nuevo archivo pfile.
- Bajo la base de datos y la vuelvo a montar
- Ejecuto el archivo creado para recreación de los controlfiles con la opción de resetlogs.
- Ejecuto "recover database", si el resultado es satisfactorio, procedo a ejecutar "alter database open"
- La ejecución del comando "alter database open", puede llevar su tiempo en concluir. Puede ser que no concluya satisfactoriamente. Si falla, baje la base de datos con "shutdown abort", monte la base de datos y vuelva a ejecutar "recover database" y luego "alter database open".
- Cuando el resultado del "alter database open", sea satisfactorio, proceda a crear un "dmp" de la base de datos. Baje de manera consistente la base de datos "shutdown immediate" y genere un respaldo en frío de todos los datafiles.
- Cuando haga el dmp, puede ser que le indique con no existe el tablespace temporal. Proceda a crear un nuevo tablespace temporal y definalo como default.
Como resultado de este procedimiento, el recover, recuperó los datafiles de los tablespaces con índices dañados y la base de datos quedó consistente.
No olviden leer detenidamente la nota a la que hago referencia para el parámetro "_ALLOW_RESETLOGS_CORRUPTION". Lo peor que le puede suceder, es que no le funcioné. De todos modos, la única salida con respuesta certificada en metalink, es que proceda a recrear la base de datos, desde cero.
A mi me sirvió, espero que a ustedes les pueda ayudar. Sin embargo, tomen las medidas necesarias, para evitar este tipo de escenario.
- Verifique que sus respaldos diarios estan funcionando correctamente.
- Verifique que los respaldos a cinta, son funcionales.
- Configure su base de datos en modo archive
- No olvide, validar que sus respaldos funcionan. Haga periódicamente, recuperación de la base de datos en un servidor de pruebas, con los archivos respaldados en sus cintas.
viernes, 24 de julio de 2009
Para aquellos que no conocen el significado de "PURA VIDA", para un "TICO" - Costarricense -
En un diario local, en una publicación del año 2007, me encontré, el origen de esta frase y como fue que llegó a nuestro país en la décadas de los 50's.
Fernando Gutiérrez Coto
Tan popular, hasta el grado que nos distingue en otros países, la frase “pura vida” no es de origen costarricense; o sea, no es autóctona.
A escribir sobre el tema nos motivó el artículo del abogado Guillermo Barrantes Vega (Foro, 27 /11/07) donde expone con buen argumento que el vocablo “maje”, muy usual en el decir de nuestros jóvenes y no tan jóvenes, no es propio de nuestro país, sino de México.
De Clavillazo .
Así, a mi criterio, esa frase la adoptaron y amplificaron las nuevas generaciones costarricenses.
Al contrario de maje, “pura vida”, es más edificante. Es más, el prestigioso escritor y cinéfilo mexicano Carlos Monsiváis, en su obra Rostros del cine mexicano (1999), señala como frase célebre de Clavillazo el “pura vida”.
Y bajo esa exclamación, también don Antonio Espino filmó una película en 1955, dirigida por Gilberto Martínez Solares.
Vino al país. Por cierto, Clavillazo estuvo en Costa Rica, no sé si la primera o la última vez, en 1973, filmando como coprotagonista de la actriz y cantante Lucha Villa y del también cómico Adalberto Martínez ( Resortes ), la película La marchanta.
Algunas de las principales escenas se rodaron en locaciones en San José y Heredia, y al año siguiente se proyectaba en el país. Se ocuparon extras y músicos nacionales, entre ellos el cartaginés Eustaquio Leiva, cantante de mariachi, que todavía a sus 70 y pico de años sigue con su trío cantando a los enamorados.
En fin, creo que el maje, escrito por el octogenario escritor mexicano Carlos Fuentes en La región más transparente y el “pura vida” de Clavillazo son muestra de la gran influencia mexicana en nuestro país, especialmente por el cine de aquella nación.
Dónde podemos hallar las guías rápidas de instalación en plataformas certificadas para Oracle 11g?
http://www.oracle.com/pls/db111/portal.portal_db
Hagan click en la opción "Installing and Upgrading"
jueves, 23 de julio de 2009
e-Learning, la revolución del aprendizaje “just-in-time”
El e-Learning no es nada nuevo; millones de personas en el mundo lo conocen, aunque muchas de ellas todavía no sepan realmente cómo funciona o qué tanto se adecúa a sus necesidades. Lo que sí es cierto es que cada año crecen las cifras de inversión e implementación de este medio de aprendizaje en miles de empresas y universidades de todo el planeta, que han descubierto los beneficios ofrecidos por el estudio y la capacitación a través de medios electrónicos y de herramientas colaborativas, en un mundo que necesita cada vez más tiempo y flexibilidad y en el que muchos piden, literalmente, la posibilidad de estudiar o trabajar desde cualquier lugar y a cualquier hora.
Nota completa en: http://www.tendencias21.net/e-Learning,-la-revolucion-del-aprendizaje-just-in-time_a3515.html
El factor "PARSEO" en una instrucción SQL
- Nuestro usuario tiene privilegios en la base de datos para realizar la consulta
- La sentencia SQL tiene una sintáxis correcta
- Genera o busca un explain plan que cumpla con los requirimientos para ejecutar nuestra sentencia
- Ejecuta la sentencia
- Genera un FETCH de datos - Opcional-
Del punto 1 al 3 es lo que conocemos como PARSEO y este puede consumir muchas veces más del 90% del tiempo de ejecución de una sentencia en la base de datos.
Veamos el siguiente ejemplo, para introducirnos en el tema. Ambas sentencias producen lo mismo, la diferencia esta en como se parsea la instrucción.
En este caso el ejemplo 1, consume un 90% más de tiempo de ejecución que el ejemplo 2.
INSTANCE_NUMBER INSTANCE_NAME HOST_NAME VERSION
--------------- ---------------- -----------------
alpha2 racdb2.laboratorio.co.cr 10.2.0.4.0
SQL> create table t(x number, y varchar2(1));
Table created.
Ejemplo 1
SQL> set timing on
SQL> begin
2 for i in 1 .. 100000
3 loop
4 execute immediate
5 'insert into t(x,y)
6 values (' i',''x'')';
7 end loop;
8 end;
9 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:27.94
SQL> truncate table t;
Table truncated.
Elapsed: 00:00:00.41
Ejemplo 2
SQL> begin
2 for i in 1 .. 100000
3 loop
4 execute immediate
5 'insert into t(x,y)
6 values (:i,''x'')'
7 using i;
8 end loop;
9 end;
10 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:02.80
miércoles, 22 de julio de 2009
Diferencias en manejo de Passwords entre versiones 10g y 11g de Oracle Database
Hasta la versión 10g, no importaba si se digitaba una clave en mayúscula o minúscula, ya que la base de datos no maneja dicho control.
SQL> select * from v$version;
BANNER
----------------------------------------------------------
Oracle Database 10g Release 10.2.0.4.0 - 64bit
ProductionPL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0
Production TNS for Linux: Version 10.2.0.4.0 -
Production NLSRTL Version 10.2.0.4.0 - Production
SQL> create user prueba identified by manager;
User created.
SQL> grant create session to prueba;
Grant succeeded.
SQL> connect prueba/MANAGER@alpha
Connected.
SQL> connect prueba/manager@alpha
Connected.
SQL>
- orapwd file=orapw entries=10 ignorecase= n
y
Para verificar la versión de claves utilizada, la tabla dba_users, incluye una nueva columna "PASSWORD_VERSIONS", la cual indica para cada usuario, la versión de password utilizada.
Esta característica llena un gran vacío que existía en la seguridad a nivel de políticas de passwords.
Al fin, los auditores de sistemas, no nos molestaran más.
Para ampliar este concepto, puedes consultar: http://download.oracle.com/docs/cd/B28359_01/network.111/b28531/toc.htm
Montar un sistema de archivos de Windows en Linux en 5 segundos
mount -t smbfs -o username=
Donde:
- //172.20.3.100/db_backup -- dirección IP del equipo Windows y el directorio compartido en el sistema operatvio
/oracle/respaldo_ext -- directorio local del servidor o equipo Linux donde queremos montar el sistema de archivos compartido de Windows
martes, 21 de julio de 2009
Oracle Beehive - Free Demo and Trial
http://www.oracle.com/technology/products/beehive/demo/beehive_team_workspaces_demo_viewlet_swf.html?msgid=8041314
lunes, 20 de julio de 2009
Tablas con problemas de lentitud a la hora de ser consultadas
"Hola a todos.Mi siguiente pregunta es que tengo una tabla a la cual se le realizan muchas transacciones por lo que a veces las personas que solamente requieren realizar consultas se le alenta mucho, como puedo realizar para que se mejore el performance de dicha tabla.Ya le he hecho varios index pero de todas maneras sigue estando lenta.gracias por los comentarios."
Veamos:
- Problemas de fragmentación en la tabla
- Falta de índices que satisfagan la consulta
- Problemas de disponibilidad de recursos de hardware ( CPU, memoria, I/O )
- Problemas de concurrencia de datos
- Problemas de programación
Analicemos las opciones:
Problemas de fragmentación: Si la tabla es pequeña ( menos de 500000 registros ) y hace poco fue creada y no tiene muchos borrados sobre ella, es posible que este no sea el problema. Si fuese lo contrario, sería recomendable, que recrearlas el objeto.
Falta de índices: Me dices que ya hiciste varios índices, pero esto no ayudo en nada. Importante: si tu base de datos es 10g ó superior, el optimizador de consultas trabaja basado en Costo y no en Regla. Podrías tener algunos índices superflúos. Con la generación del "explain plan" de la consulta, podrías verificar el parceo que esta realizando el optimizador de consultas. Si el resultado es un FTS ( Full Table Scan ), los índices no estan sirviendo de nada.
Problema de Recursos: Dependiendo de tu sistema operativo, tienes varias herramientas para verificar la utilización del CPU, memoria y discos duros. Es normal, que el comportamiento del CPU sea alto durante períodos cortos, pero no es normal que la constante sea siempre al 100% de utilización. Para las áreas de PGA de los usuarios, es necesario contar con memoria RAM disponible en el servidor, si el porcentaje de memoria es poca, podrías tener algunos problemas en este punto y el equipo podría estar constantemente haciendo cambios de contexto y generando mucho swaping, esta situación aumentaría considerable el I/O del equipo y el rendimiento del mismo se vendría al suelo.
Problemas de concurrencia de datos: Los objetos estan quedando bloqueados por las transacciones que se estan llevando sobre los registros de la tabla. Recuerda que Oracle, realiza los bloqueos en forma automática a nivel de bloque, por tanto, si tenemos mucha actividad sobre un objecto específico y la densidad de registros por bloque es muy alta, puede darse, que se generen constantes bloqueos a nivel de tabla.
Para evitar que se produzca esta situación, es necesario que manejes el tema de concurrencia.
- "alter table
. initrans <> y - "alter index
. initrans <> ,
puedes modificar el nivel de concurrencia sobre los objetos. Hay que tener mucho cuidado con los valores que se otorguen. Valores muy altos, pueden causar contención a nivel del bloque, dando como resultado, problemas de rendimiento.
Ejemplo: alter table scott.emp initrans 10;
Yo por lo general en tablas con alto nivel de concurrencia y mucha población, suelo otorgar un valor de "initrans" para la tabla de 10 y un valor de 20 en el "initrans" para los índices. Mi regla es, el índice con el doble del valor de la tabla - siguiendo el patrón del valor de facto-.
Esta solucción, me ha dado excelentes cuando la he aplicado a objetos de alto nivel transaccional, como tablas de autorizaciones para sistemas de tarjetas de crédito, encabezado y detalle de tablas para registro de transacciones en puntos de venta, inventarios, contabilidad, etc.
Cuando vayan a realizar el cambio de parámetro, es necesario verificar previamente, que nadie este en ese momento utilizando los objetos, ya que la base de datos, requiere realizar un bloqueo exclusivo sobre los objetos.
Problemas de programación: El último punto pero no menos importante, es la calidad del código fuente que estemos utilizando. Si existe en el código instrucciones tales como "select for update", puede provocar bloqueos excesivos sobre la tabla. Aquí es neceario verificar, si realmente es necesario bloquear los registros, a la hora de realizar la consulta.
Si es una pantalla en dónde se puede consultar y modificar datos, es probable que funcione de esa manera.
Aquí habría que cambiar los hábitos de como se usa la consulta en sí. Evitar consultas con patrones, sería sumamente necesario. Por ejemplo: %PAIS%. Lo otro, sería necesario, que el usuario no se quede mucho tiempo en la pantalla de consulta/modificación, para evitar el bloque por tiempo excesivo.
Si logras encontrar en el alert de la base de datos, el mensaje: ORA-00060: deadlock detected while waiting for resource, la causa de tus problemas podría ser cualquiera de las dos últimas opciones.
CopyLeft- Copyrigth. Saber distinguir y saber respetar
Tal vez ya algunos hallan, logrado ver en mi blog, que me idéntifico con el lema de CopyLeft, que en el significado más simple, implica ir contrario a Copyright, pero cumpliendo algunas reglas fundamentales.
"Dicen por ahí, no hagas a otros lo que no quieras que te hagan a ti.", los pilares del CopyLeft, se fundamentan en esta regla. Si alguién produce algo y lo desea compartir con los demás, lo mínimo que puede hacer el que hace uso de la creación de la persona fuente, es mantener el origen de la fuente y agregar el comentario: "Modificado ó adaptado por: "
En el Derecho anglosajón se utiliza la noción de copyright (traducido literalmente como 'derecho de copia') que -por lo general- comprende la parte patrimonial de los derechos de autor (derechos patrimoniales).
Copyleft (por definición en oposición a copyright) comprende a un grupo de derechos de autor caracterizados por eliminar las restricciones de distribución o modificación impuestas por el copyright, con la condición de que el trabajo derivado se mantenga con el mismo régimen de derechos de autor que el original.
Bajo tales licencias pueden protegerse una gran diversidad de obras, tales como programas informáticos, arte, cultura y ciencia, es decir prácticamente casi cualquier tipo de producción creativa.
Existen muchos criterios encontrados sobre este tema, incluso hay algunos escritores como "Joost Smiers", en su libro "Imagine... No Copyright" el cuál afirma:
"Desde una perspectiva cultural podemos preguntarnos si está justificado reconocer a personas individuales los derechos de propiedad sobre las expresiones. ¿ Por qué? "
..
"La propiedad coincide con el derecho exclusivo y monopolista sobre el uso de una expresión. Ese derecho tal vez se atenúe, por ejemplo, cuando se trata de fines educativos; no obstante, el propietario tiene mucho poder para excluir a los otros del uso de una manifestación artística determinada. La consecuencia es que así se privatiza una parte sustancial de nuestra comunicación humana."
Los sistemas operativos abiertos, tienen notas que aplican criterios parecidos a CopyLeft, de igual manera que el software libre.
Nuestro conocimiento, es extraído de los libros, folletos, manuales, comunicados y otras fuentes, generados por una empresa que se llama "Oracle Corporation" y que legalmente tiene registrado todos los derechos sobre sus públicaciones. Este conocimiento no puede ser regulado por ley, porque implicaría como bien lo dice Smiers, una regulación de nuestra libertad
De esta empresa, directamente dependen un poco más de 80000 personas y en forma indirecta, la cantidad de gentes involucradas, les aseguro es mucho mayor.
Oracle me ha dado de comer durante los últimos 18 años, sin ser empleado directo. En consecuencia, estoy agradecido con el trabajo y esfuerzo de la gente que en forma directa, esta involucrada con el concepto.
Me parece desleal desde cualquier punto de vista, tratar en este blog de temas de "Piratería", si deseo ser reconocido y como un blog serio, avocado a difundir conocimiento y camarería.
El simple hecho de encontrarnos un comentario, por ejemplo: como bajar los manuales de cursos, presentaciones de workshops, etc, quita veracidad al contenido de las aportaciones, que con tanto esfuerzo y dedicación realizó, sabiendo de antemano, que este tipo de publicaciones no son gratis.
A nadie le gustaría que le quiten una idea, que podría haber sido, el producto del esfuerzo, de muchos años.
Ciertamente, el conocimiento es universal y no puede ser limitado. Pero respetemos, lo que no nos pertenece a derecho. Por eso, aquí nunca encontrarás información que trate sobre dichos temas, aunque te parezca "mojigato".
El futuro de OpenSolaris en las manos de Oracle
Aun no se concreta la adquisición de Sun por parte de Oracle, pero ya se pueden ver algunas actitudes que podrían indicar la linea a seguir una vez que Oracle tome el control.
Cuando el sospechoso de tal adquisición era IBM, una de las dudas que se planteaba era qué iba a suceder en el área de los sistemas operativos, en donde habrían productos que competirían entre sí (Solaris, AIX y Linux). Ahora que se trata de Oracle, si bien no existe una competencia tan directa como un sistema Unix propio de la compañía, quedan dudas respecto a qué pasará con OpenSolaris considerando larga historia que Oracle tiene con Linux.
Artículo completo en:
Oracle celebra el primer Oracle Virtual Partner Kickoff Global
Por primera vez, los socios de negocios de todo el mundo tendrán acceso a la mensajería de producto, presentaciones y transmisiones en la Web ofrecidas en el inicio de la campaña de ventas interna de Oracle, y obtendrán la información clave de las iniciativas estratégicas de los socios de negocios diseñadas para ayudarlos a generar más ingresos para sus negocios a través de la especialización y monetización de las adquisiciones de Oracle.
Los socios de negocios también tendrán acceso directo a las estrategias y mensajes clave de ventas, ofrecidos por los ejecutivos de Oracle, entre ellos Charles Phillips, Safra Catz y Judson Althoff.
Podrán también escuchar a los ejecutivos más importantes de desarrollo de productos, como Aplicaciones, Middleware y Bases de datos sobre las áreas estratégicas de Oracle, incluidas Cloud Computing (Computación en Nube), Open Source (Código Abierto) y más.
Además, los principales ejecutivos regionales de Alianzas y Canales ofrecerán a los socios de negocios las estrategias específicas que los ayudarán en sus regiones a colaborar con Oracle en el año fiscal 2010.
“Oracle ha invertido regularmente en programas de especialización a fin de que nuestros socios aprendan, crezcan y se destaquen.
Todos los socios de negocios registrados de Oracle estarán habilitados a participar del evento virtual que tendrá lugar el 7 de julio de 2009 utilizando su autenticación y clave de Oracle PartnerNetwork.
Todo el contenido estará disponible en Oracle PartnerNetwork durante varios trimestres posteriores al evento.
“El éxito de nuestros socios de negocios es nuestro éxito,” dijo Judson Althoff, vicepresidente de grupo de Alianzas y Canales Globales, Oracle.
Añadió, “en el plano internacional, la actividad comercial de los socios representa más del 40% de nuestros ingresos.
Crear una opción en el Menú de Linux para llamar al Forms o Reports Jdeveloper
La migración de plataforma de "D.O.S. Gráfico " a Linux, requiere que recompiles librerías, formas y reportes en el nuevo sistema operativo. Para esto necesitas conocer cuál es el ejecutable que debes llamar de jdeveloper 10g, para completar estas tareas.
Vamos a crear una opción de menú en linux, para que en la opción de menú de "Applications", en "Programming", te aparezca el acceso al Jdeveloper.
Primero que todo con el usuario root vamos a crear el archivo jdeveloper.desktop, esto lo puede hacer en el directorio casa del usuario oracle.
El archivo debe contener las siguientes entradas:
--- jdeveloper.desktop archivo --
[Desktop Entry]
Name=Oracle Jdeveloper
Comment= Ambiente gráfico de trabajo JDEVELOPER
Icon=/opt/product/jdeveloper/xdk/doc/java/xsql/images/jdeveloper.gif
Exec=/home/oracle/jdev10g.sh
Terminal=false
Type=Application
Encoding=UTF-8
Jdev10g.sh
------------ script --------------
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
ORACLE_SID=admin
export ORACLE_SID
PATH=$PATH:$HOME/bin
ORACLE_BASE=/opt/product
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/jdeveloper
export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/forms/mesg:$HOME/bin:$PATH
export PATH
TMPDIR=/tmp
TMP=/tmp
export TMPDIR TMP
export PATH
unset USERNAME
TERM=vt220
export TERM
PATH_APP=/aplic5
export PATH_APP
FORMS_PATH=$ORACLE_HOME/forms:$PATH_APP/apartados:$PATH_APP/apartados/fuentes:$PATH_APP/aplic/comun/libs:$PATH_APP/comun/libs
export FORMS_PATH
LD_LIBRARY_PATH=$PATH_APP/aplic/comun/libs:$PATH_APP/libs:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdk/jre/lib/i386/server:$ORACLE_HOME/jdk/jre/lib/i386/native_threads:$ORACLE_HOME/jdk/jre/lib/i386:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
if echo $LANG /bin/grep -i '\.utf.*8' > /dev/null
then
export LANG=`echo $LANG /bin/sed 's#\.[uU][tT][fF].*8.*##'`
fi
/opt/product/jdeveloper/bin/frmbld.sh
------ Fin de script -----
miércoles, 15 de julio de 2009
Ejecutando root.sh en LINUX despues de instalar Clusterware Software genera error PROT-1 ORCCONFIG no puede ser inicializado
Este proceso puede dar como resultado el error PROT-1 ORCCONFIG no puede ser inicializado, el cuál se debe a un problema con el formato de las áreas de voting ó de cluster registry.
Para soluccionar el problema, procede a formatear ambas áreas nuevamente y vuelve a ejecutar la instalación del producto.
Error en link de componentes cuando se instala el ClusterWare Software
Consejo: Redefine la variable de PATH, incluyendo de primero la ruta "/usr/bin: .."
Resultado: La instalación del Clusterware termina sin errores.
lunes, 13 de julio de 2009
Limpiando Alertas desplegadas en el Oracle Database Control 10g
Connected.
Name
-------------------------
TARGET_GUID
METRIC_GUID
COLLECTION_TIMESTAMP
LOAD_TIMESTAMP
SEVERITY_CODE
SEVERITY_TYPE
SEVERITY_GUID
ANNOTATED_FLAG
KEY_VALUE
MESSAGE
MESSAGE_NLSID
MESSAGE_PARAMS
ACTION_MESSAGE
ACTION_NLSID
ACTION_MESSAGE_PARAMS
ADVISORY_ID
- El advisory_id, identificador del consejero que notifica el evento.
- El message, mensaje desplegado en nuestra pantalla del browser, con la descripción del mensaje
- El metric_guid, identificador para tipo de clasificación de mensaje generado. Los mensajes son agrupados de acuerdo a un grupo de métricas definidas.
Si quisieramos conocer la cantidad de eventos por tipo de notificación, podríamos realizar la siguiente consulta en la base de datos.
SQL> select count(*), metric_guid from mgmt_current_severity
2 group by metric_guid;
COUNT(*) METRIC_GUID
---------- --------------------------------
2 1EA69E018E163E3E323609D334EE8E20
4 2448AD7604076832840D5B18E562B9C2
1 8B2817E630D4445E454F5487FB8B8C19
117 AC73A2336A028A587865B6C18021889D
1 C733EA1CFA96377F492528E305462C9D
1 D6438569B496BC9205481E8A70F92F1E
1 F0618F81F9BB09B4767ECFF97F465BF7
2 F87A9D0AF478AE0C2084273063AECA60
8 rows selected.
Ahora si quisieramos limpiar todas los eventos registrados para un tipo de consejero específico, podríamos realizarlo de la siguiente manera:
SQL> begin
2 delete from mgmt_current_severity
3 where metric_guid='AC73A2336A028A587865B6C18021889D';
4 end;
5 /
PL/SQL procedure successfully completed.
SQL> commit;
Commit complete.
Si consultamos nuevamente la tabla, obtendríamos el siguiente resultado:
SQL> select count(*), metric_guid from mgmt_current_severity
2 group by metric_guid;
COUNT(*) METRIC_GUID
---------- --------------------------------
2 1EA69E018E163E3E323609D334EE8E20
1 8B2817E630D4445E454F5487FB8B8C19
1 C733EA1CFA96377F492528E305462C9D
1 D6438569B496BC9205481E8A70F92F1E
1 F0618F81F9BB09B4767ECFF97F465BF7
2 F87A9D0AF478AE0C2084273063AECA60
6 rows selected.
Si deseamos borrar todo el historial de notificaciones:
SQL> begin
2 delete from mgmt_current_severity;
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> commit;
Commit complete.
SQL>
Ahora la pantalla principal de Database Control, se podría observar de la siguiente manera:
El documento original lo pueden ver completamente en:
http://www.databasejournal.com/features/oracle/article.php/3694541/Clearing-Alerts-in-Enterprise-Manager.htm
Instalación de WebUtil para OracleAS 10g Linux RH 5.2 ES
LINUX Red Hat 5.2 Enterprise Server
Los siguientes son los pasos para llevar a cabo la configuración de Webutil en un ambiente Linux RH 5.2ES. Puede ser utilizado como guía para instalación en otros sabores de Linux.
Pre-requisitos
1. Descargar los siguientes archivos:
Webutil_106.zip http://www.oracle.com/technology/software/products/forms/index.html
Jacob_18.zip http://prdownloads.sourceforge.net/jacob-project/jacob_18.zip
Los dos archivos deben se desempacados en un directorio temporal. Se debe hacer con el usuario “oracle”. Todas las tareas de aquí en adelante deben ser llevadas a cabo con el usuario "oracle".
2. La carpeta webutil debe ser creada en la ruta $ORACLE_OAS/forms.
3. Copiar el archivo frmwebutil.jar del directorio java creado como producto del webutil_106.zip al directorio $ORACLE_OAS/forms/java
4. Copiar los archivos webutil.pll y webutil.olb ubicados en la raíz del directorio webutil_106.zip a $ORACLE_OAS/forms
5. Crear el usuario Webutil
create user webutil identified by webutil default tablespace users quota unlimited on users;
grant create session to webutil;
grant create public synonym to webutil;
grant create procedure to webutil;
6. Ejecutar el archivo create_webutil_db.sql, ubicado en la raíz del directorio webutil_106, con el usuario webutil.
7. Crear un respaldo del directorio $ORACLE_OAS/forms/server.
8. Copiar el contenido del directorio “server”, de la carpeta webutil_106 al directorio $ORACLE_OAS/forms/server.
9. Copiar los archivos jacob.dll y jacob.jar a las rutas $ORACLE_OAS/forms y $ORACLE_OAS/forms/java
10. Crear el directorio $ORACLE_OAS/forms/webutil
11. Copiar del directorio webutil_106, los archivos
· d2kwut60.dll
· jacob.dll
· JNIsharedstubs.dll
12. Verificar que el archivo webutil.cfg exista en el directorio $ORACLE_OAS/forms/server con al menos el siguiente contenido:
logging.file=
logging.enabled=FALSE
logging.errorsonly=FALSE
logging.connections=FALSE
install.syslib.0.7.1=jacob.dll942081.0true
install.syslib.0.9.1=JNIsharedstubs.dll655821.0true
install.syslib.0.9.2=d2kwut60.dll1925121.0true
13. Copiar jacob.jar al directorio $ORACLE_OAS/forms/java
14. Copiar del directorio webutil_106/java al directorio $ORACLE_OAS/forms/java los scripts
- forms_base_ie.js
- forms_ie.js
15. Copiar webutil.olb, webutil.pll, WU_TEST_106.fmb al directorio $ORACLE_OAS/forms
16. Copiar los archivos webutilbase.htm, webutiljini.htm, webutiljpi.htm al directorio $ORACLE_OAS/forms/server
17. En el archivo formsweb.cfg, debe crearse la sección [webutil]
[webutil]
WebUtilArchive=frmwebutil.jar,jacob.jar
WebUtilLogging=off
WebUtilLoggingDetail=normal
WebUtilErrorMode=Alert
WebUtilDispatchMonitorInterval=5
WebUtilTrustInternal=true
WebUtilMaxTransferSize=16384
baseHTMLjinitiator=/
baseHTMLjpi=webutiljpi.htm
archive_jini=frmall_jinit.jar,frmwebutil.jar,jacob.jar
archive=frmall.jar
lookAndFeel=oracle
baseHTML=webutilbase.htm
18. Compilar la librería webutil.pll
frmcmp.sh MODULE=$ORACLE_OAS/forms/webutil.pll USERID=webutil/webutil@
Se debe tener cuidado, la librería webutil.plx debe quedar compilada en el directorio indicado.
19. Compilar la forma WU_TEST_106.fmb
frmcmp.sh MODULE=$ORACLE_OAS/forms/WU_TEST_106.fmb USERID=webutil/webutil@
La forma debe compilar sin errores.
20. Probar la funcionalidad del WEBUTIL
Dirección ejemplo:
Dar click en el botón “GET CLIENT INFO” y verificar la información desplegada.
21. Para cada sección del aplicativo en el archivo formsweb.cfg deben agregarse las siguientes líneas:
[aplicacion1]
workingDirectory=/aplicacion1/bin
baseHTMLjinitiator=/aplicacion1/comun/libs/webutil/webutiljini.htm
WebUtilArchive=frmwebutil.jar,jacob.jar
archive_jini=frmall_jinit.jar,frmwebutil.jar,jacob.jar,icons.jar,iconos.jar
imagebase=codebase