jueves, 19 de noviembre de 2009

Presentación en el PEOUG Day 2009

El tiempo sí que vuela!, han pasado ya varias semanas sin actualizar el Blog producto de que las consultorías me vienen teniendo ocupado gran parte del día y lo que me quedaba libre lo he estado dedicando a la preparación de mi presentación para el PEOUG Day 2009 que finalmente se llevó a cabo ayer.

Mi participación en este evento fue gracias a la invitación de Miguel Palacios, presidente del PEOUG y flamante Oracle ACE. Aún cuando tenía el tiempo bastante ajustado decidí aceptar el reto, y es que si bien la presentación duraba una hora -lo cual puede parecer poco tiempo para el público oyente- para el expositor usualmente representa una gran cantidad de horas a invertir en la elaboración del material visual a presentar, lo bueno es que este es el costo inicial y luego de esto el material queda y se puede utilizar para futuras presentaciones.

El día del evento salí de casa más temprano de lo habitual, pero igual me topé con un tráfico brutal, cortesía de las chicas del Escuadrón Fénix, que saben tanto del control del tráfico como yo de Informix, pero pese a que hicieron su mejor esfuerzo (mejor suerte para la próxima, chicas ) alcancé a llegar justo cuando Miguel arrancaba con las palabras de bienvenida y acto seguido Tom Kyte presentó su Keynote "The Best Way". La sala estaba totalmente llena, cientos de personas escuchaban con gran atención las palabras de este personaje casi mítico en el mundo Oracle. Una hora después Tom había concluido su impecable presentación entre los aplausos de los asistentes, entre ellos los míos desde luego, que me cuento entre sus más fervientes seguidores . La moraleja de su presentación es que no hay tal cosa como "la mejor forma de ....", pues al final todo depende de lo que estas pretendiendo hacer.



Faltaban un par de horas para mi presentación así que aproveché a conversar con viejos amigos, y con algunos ex-alumnos de los cursos de Oracle University, para luego encaminarme a la sala que me habían asignado. Entré y encontré ya iniciada la presentación de Juan Camilo Ruiz titulada "Become Fusion Developer with no Java", y escuchándolo terminé de convencerme que Java no es lo mío, las cosas se han simplificado mucho pero aun no es tan fácil como Oracle Forms por ejemplo. Conforme se acercaba mi hora, aun mantenía la oculta esperanza de que concluida la charla de Juan Camilo la sala quedara vacía y mi público se quedaría reducido a un par de gatos (4 si contamos al camarógrafo y a la azafata), después de todo a esa misma hora Francisco Muñoz presentaba "Oracle Database Advanced Security Options", así que cuando Juan Camilo se retiró y pasé a ocupar su lugar en el estrado, grande fue mi sorpresa al ver que la gente no solo no se iba sino que seguían entrando y hasta quedó un buen grupo de gente de pie, al fondo de la sala. Así que recurrí al infalible Plan B: el viejo truco de quitarme las gafas y así aprovechar que, gracias a mi astigmatismo, solamente vería un público borroso y por tanto inofensivo .

Sin mayor preámbulo procedí a iniciar mi presentación titulada Malas prácticas de programación, impacto y solución (mismo que pueden descargar desde ya). Debo reconocer que el público asistente fue muy receptivo y conforme iba mostrando algunos ejemplos de la audacia y osadía a la que pueden llegar algunos de nuestros amigos programadores, los oyentes se mantuvieron atentos, percatándose y celebrando el sarcasmo que de cuando en cuando introducía, según yo de forma solapada. Ya hacia el final, la azafata me hacía señas para que terminara mi charla, pero lo cierto es que mi presentación no se inició a la hora pactada, por motivos ajenos a mi voluntad, y lo justo era que me concedieran la hora completa por lo que, aun cuando considero que la democracia no es perfecta, me aproveché de ella y consulté a los asistentes si deseaban retirarse, afortunadamente la gente votó mayoritariamente porque la sesión siga y como vox populi, vox dei, seguimos adelante y pocos minutos después todo había concluido satisfactoriamente. En suma, creo que ambos, el auditorio y yo, salimos más contentos que cuando entramos, lo cual es ya un logro nada despreciable, salvo mejor opinión.



Luego de almorzar algo a la volada, continué con el evento y asistí a la presentación de Miguel Palacios titulada "Implementando Oracle Streams", para luego regresar nuevamente con Tom Kyte y "All about metadata". Conforme escuchaba a Tom desarrollar el tema, aumentaba mi duda de si no se estaría refiriendo a un cliente mío, Acme Corporation, que estaba pasando por los mismos problemas: no uso de integridad referencial, no uso del constraint not null, almacenamiento de fechas como number y no como date, etc., menos mal ya están revirtiendo esta forma de trabajo, pues tal como demostrara Tom con algunos ejemplos muy representativos, carecer de constraints limita seriamente al optimizador y por tanto no solo la integridad de los datos está en juego sino también el desempeño de las aplicaciones.

A continuación asistí a la presentación de Francisco Muñoz, "Logging or nologging" y finalmente al Keynote "Top 10, no 11, new features of Oracle database 11gR2" a cargo de Tom Kyte. Luego, el cierre del evento, un brindis, algunos sorteos y como quien no quiere la cosa le pedí a Tom Kyte que autografiara una copia (no era pirata desde luego) de su libro "Expert Oracle", mismo que estoy ahora subastando en eBay, ¿qué? ¿de verdad creyeron eso?, como lo voy a subastar pues, lo tengo bien guardadito en mi mesa de noche, justo encima de la Biblia, jajaja.



Bromas aparte, y ya para terminar, me queda la impresión de que el PEOUG Day 2009 fue un rotundo éxito, salvo por la presentación de Oracle "Oracle LMS as Value Added Service", en la que se tocaron temas relacionados finalmente con el licenciamiento, un tema que a nosotros -los usuarios finales- no nos llama mucho la atención, de seguro que si alguien de la Sunat nos hablaba de las ventajas de estar al día con nuestros impuestos hubiese tenido el mismo mágico efecto . Ojo!, no digo que empecemos a evadir impuestos y usemos Oracle pirata, de hecho la Sunat me debe todo un sueldo en impuestos pagados en exceso y lo primero que verifico con mis clientes es que estén con un licenciamiento correcto, pero en esta ocasión no era el público, el lugar, ni el momento apropiado para tratar este tema, mi modesta opinión desde luego. Hasta aquí llega mi reporte desde el lugar de los hechos, hasta la próxima!

Siga leyendo >>

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!

jueves, 3 de setiembre de 2009

Instalando Oracle 11g Release 2 en OEL 5.3

Finalmente logré descargar Oracle 11g Release 2 desde OTN, con lo que pude dar inicio a la instalación del software y la posterior creación de una base de datos. En este Post les mostraré lo que encontré en la parte correspondiente a la instalación del software, ojo que no pretendo reemplazar a la guía de instalación, cuya lectura es obligatoria.

Instalación paso a paso

Esta instalación la hice sobre OEL 5.3, si bien lo usual es configurarlo de tal forma que se cumpla estrictamente lo indicado como pre-requisitos, a fin de probar la efectividad de los installation fixup scripts, si bien instalé los RPMs exigidos, deliberadamente dejé de configurar los parámetros del kernel.

1. Luego de invocar a Oracle Universal Installer, se nos ofrece registrar nuestro email y password de My Oracle Support a fin de recibir eventuales notificaciones, pero afortunadamente no es un obligatorio completar estos datos.


2. Por defecto se nos sugiere instalar el software y crear la base de datos, pero en esta parte me interesa exclusivamente lo primero.


3. Hora de decidir si queremos o no usar Real Application Clusters; para no complicar las cosas mejor empezamos con una configuración que no lo use.


4. ¿Qué lenguaje usar? La verdad yo prefiero usar Inglés para todo el software que uso, esto va desde Windows Vista, Office 2007, y desde luego lo extiendo a OEL y Oracle.


5. Para evaluar todo el poderío de Oracle Server, lo mejor es instalar Enterprise Edition, sin duda alguna.


6. La ubicación del software no amerita mucho razonamiento, los valores por defecto son los correctos para esta prueba.


7. Idem para el Inventory Directory.


8. Los grupos asignados a OSDBA y OSOPER son los esperados.


9. Aquí empieza la novedad, OUI hace la verificación de los pre-requisitos, y como no configuré los parámetros del kernel, recibo la alerta de que es necesario resolverlo antes de continuar.


Lo interesante es que OUI está en capacidad de proporcionarme un script que me permita resolver todos aquellos errores que aparecen como fixable, es cuestión de presionar el botón Fix & Check Again.


Siguiendo las instrucciones procedo a ejecutar runfixup.sh desde una sesión en la que estoy conectado como root.

[root@talia ~]# /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh
Response file being used is :/tmp/CVU_11.2.0.1.0_oracle/fixup.response
Enable file being used is :/tmp/CVU_11.2.0.1.0_oracle/fixup.enable
Log file location: /tmp/CVU_11.2.0.1.0_oracle/orarun.log
Setting Kernel Parameters...
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
uid=502(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),506(asmdba)

De vuelta a OUI, se repite la verificación y los problemas de configuración del kernel han desaparecido! Quedan las advertencias sobre la memoria disponible y el espacio de swap asignado, pero no es realmente un problema para esta prueba por lo que opto por ignorarlos y proseguir con la instalación, desde luego Uds. no deben hacer eso con una instalación real.


10. Llegamos a la pantalla de resumen de la instalación.


11. Y la acción empieza!


En este equipo he instalado antes Oracle 9.2, 10.2 y 11.1, pero esta vez sentí que tomo más tiempo que en esas oportunidades.


12. El paso final es ejecutar algunos scripts, teniendo el cuidado de hacerlo con el usuario root.


[root@talia ~]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.

[root@talia ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
Running Oracle 11g root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/11.2.0/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.

13. Luego de ejecutados los scripts, la instalación ha concluido.


Como habrán notado, la instalación del software es bastante similar a lo visto en versiones previas, lo que si resulta especial y bienvenido, es la posibilidad de dejar que OUI nos ayude a corregir nuestros errores u omisiones al configurar el kernel, en realidad la relación de cosas que puede corregir va un poco más allá, tal como pueden comprobar en la documentación.

En un siguiente Post les mostraré la creación de una base de datos con dbca, que tiene también algunas novedades, estén atentos!

Post Relacionados:

Siga leyendo >>

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!

martes, 1 de setiembre de 2009

11g Release 2 finalmente disponible!

Luego de años que apareciera Oracle Database 11g Release 1, hace pocas horas Oracle Corporation ha hecho pública la liberación de Oracle Database 11g Release 2.


El software puede ser obtenido desde ya en OTN


La relación de novedades que incluye esta nueva versión la pueden encontrar en New Features Guide. Si bien el software está disponible por el momento solo para Linux, es de esperar que en breve vayan apareciendo las versiones correspondientes a otras plataformas.

Muy poco tiempo ha transcurrido como para hacer una evaluación del producto, de hecho recién lo estoy bajando de OTN (al igual que muchos de Uds. seguramente), por lo que en los próximos días podré escribir más sobre el tema, estén atentos! Pero entretanto pueden ir leyendo una de las primeras publicaciones sobre el tema, hecho por PCWorld.

Post Relacionados:

Siga leyendo >>

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!

miércoles, 15 de julio de 2009

Primer PSU ya está disponible, instalémoslo!

Para complementar el Post anterior, les aviso que ya está disponible desde ayer el primer Patch Set Update, lo pueden encontrar en Metalink (My Oracle Support) como el Patch 8576156 - DATABASE PSU 10.2.0.4.1 (INCLUDES CPUJUL2009). En este Post les indico cómo instalarlo, acompañenme en esta aventura.



Este Patch Set Update está disponible para las siguientes plataformas:
  • Sun Solaris SPARC (64-bit) / 21M
  • Linux x86 / 11M
  • Linux x86-64 / 16M
  • HP-UX PA-RISC(64-bit) / 18M
  • HP-UX Itanium / 30M
  • IBM AIX on POWER Systems (64-bit) /13M

Aproveché a descargar la versión para Linux x86 y al revisar los requisitos encontré el primer problema: debo tener el OPatch 10.2.0.4.7 o superior y en mi instalación tenía la versión 10.2.0.4.2. Esto me obligó a descargar la última versión, disponible como el Patch 6880880.


Con esto ya está superado el problema:

[oracle@urania ~]$ opatch version
Invoking OPatch 10.2.0.4.7

OPatch Version: 10.2.0.4.7

OPatch succeeded.

Todo listo para instalar el PSU, pero primero verificamos que no entre en conflicto con algún one-off patch previamente instalado.

[oracle@urania ~]$ cd 8576156
[oracle@urania 8576156]$ opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir .
Invoking OPatch 10.2.0.4.7

Oracle Interim Patch Installer version 10.2.0.4.7
Copyright (c) 2009, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /u01/app/oracle/product/10.2.0/db_4
Central Inventory : /u01/app/oracle/oraInventory
   from           : /etc/oraInst.loc
OPatch version    : 10.2.0.4.7
OUI version       : 10.2.0.4.0
OUI location      : /u01/app/oracle/product/10.2.0/db_4/oui
Log file location : /u01/app/oracle/product/10.2.0/db_4/cfgtoollogs/opatch/opatch2009-07-15_12-41-59PM.log

Patch history file: /u01/app/oracle/product/10.2.0/db_4/cfgtoollogs/opatch/opatch_history.txt

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

Ahora bajamos la base de datos y aplicamos el PSU.

[oracle@urania 8576156]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jul 15 12:37:56 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SYS@test> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@test> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@urania 8576156]$ opatch apply
Invoking OPatch 10.2.0.4.7

Oracle Interim Patch Installer version 10.2.0.4.7
Copyright (c) 2009, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/10.2.0/db_4
Central Inventory : /u01/app/oracle/oraInventory
   from           : /etc/oraInst.loc
OPatch version    : 10.2.0.4.7
OUI version       : 10.2.0.4.0
OUI location      : /u01/app/oracle/product/10.2.0/db_4/oui
Log file location : /u01/app/oracle/product/10.2.0/db_4/cfgtoollogs/opatch/opatch2009-07-15_12-44-45PM.log

Patch history file: /u01/app/oracle/product/10.2.0/db_4/cfgtoollogs/opatch/opatch_history.txt

ApplySession applying interim patch '8576156' to OH '/u01/app/oracle/product/10.2.0/db_4'

Running prerequisite checks...
Provide your email address to be informed of security issues, install and
initiate Oracle Configuration Manager. Easier for you if you use your My
Oracle Support Email address/User Name.
Visit http://www.oracle.com/support/policies.html for details.
Email address/User Name:

You have not provided an email address for notification of security issues.
Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]:  Y

OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only.


Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/10.2.0/db_4')


Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files and inventory (not for auto-rollback) for the Oracle Home
Backing up files affected by the patch '8576156' for restore. This might take a while...
Backing up files affected by the patch '8576156' for rollback. This might take a while...
Execution of 'sh /home/oracle/8576156/custom/scripts/pre -apply 8576156 ':


Return Code = 0

Patching component oracle.rdbms.rsf, 10.2.0.4.0...
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libgeneric10.a"  with "lib/libgeneric10.a/qcodfdef.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libgeneric10.a"  with "lib/libgeneric10.a/qcdo.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libgeneric10.a"  with "lib/libgeneric10.a/qcdo.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libgeneric10.a"  with "lib/libgeneric10.a/kghs.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libgeneric10.a"  with "lib/libgeneric10.a/kgcc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libgeneric10.a"  with "lib/libgeneric10.a/kgh.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libcommon10.a"  with "lib/libcommon10.a/kd4.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libcommon10.a"  with "lib/libcommon10.a/kdb4.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libcommon10.a"  with "lib/libcommon10.a/kdr4.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libcommon10.a"  with "lib/libcommon10.a/kdr9ir24.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libcommon10.a"  with "lib/libcommon10.a/ttcpip.o"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/rdbms/jlib/qsma.jar" with "/rdbms/jlib/qsma.jar/oracle/qsma/QsmaDataManager.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/rdbms/jlib/qsma.jar" with "/rdbms/jlib/qsma.jar/oracle/qsma/QsmaDataReports.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/rdbms/jlib/qsma.jar" with "/rdbms/jlib/qsma.jar/oracle/qsma/QsmaFileManager.class"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/lib/env_rdbms.mk"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/lib/rfsd.o"

Patching component oracle.rdbms.util, 10.2.0.4.0...

Patching component oracle.rdbms.dbscripts, 10.2.0.4.0...
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtdefr.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtbpp.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtdmsu.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtbstr.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtsum.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtsms.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtjob.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtaqds.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtlmc.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtlmd.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtlsby.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/prvtbcap.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/dbmssum.sql"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/e1001000.sql"

Patching component oracle.rdbms, 10.2.0.4.0...
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kupp.                  o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kwqn.                  o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ctc.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/qccpu                  b.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kkxe.                  o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kkxs.                  o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kzvdv                  e.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/sldbg                  .o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdg.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kkz.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/updex                  e.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/qerhj                  .o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ain.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/qerlx                  t.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/qkexr                  .o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/atb.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/qol.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kksc.                  o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/qke.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kzrt.                  o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/opipr                  s.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdl.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kxto.                  o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kaf.o                  "
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kaf9i                  r2.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kd.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kd9ir
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kd9ir2t.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdb9ir2o.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdblc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kds.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdst.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdst00.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdst01.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdst10.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdst11.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/qertb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/nsoqbc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/vop.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kksl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/evar2v.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbz.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbw.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbv.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbt.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbs.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbo.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbm.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbk.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfafo.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfcfg.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfipc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfmon.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfmon1.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfra.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfrdb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfrla.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfrld.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfrm.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfrpa.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfrpd.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfrst.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfrxpt.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfsicd.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfsl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfsx.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/rfupg.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knld.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdo.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kdt.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ktu.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/koklm.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kokeg.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvf.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvi.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvrda.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvs.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvt.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvu.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvx.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvxb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvxp.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvxr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvxs.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knaha.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knahf.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knahs.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knals.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knasp.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knlc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knlcf.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knlci.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ktuq.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krfr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krff.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kct.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kccr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcf.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kck.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcp.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcra.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcrf.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcrfr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcrlc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcrp.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcrr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcv.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krd.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krf.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krfg.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krfw.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krsc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krsf.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krsl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krsm.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ksct.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kspt.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/tbsdrv.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/dbsdrv.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfd.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfgb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfk.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfk0.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kqf.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjfc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjfd.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjfm.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjm.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ksp.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kslt.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kji.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjbr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfcb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfcl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kfrb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kwqmn.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ksu.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ksq.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ktc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ksl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbz.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbw.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbv.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbt.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbs.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbo.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbm.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbk.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcbb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjbl.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ksxp.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjdd.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjdr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjb.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kjbm.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcrfw.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kcs.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/krvg.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/knld.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/prsc.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/prsg.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/prssz.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kzrt.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kpolon.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kxfx.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ktss.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/qertqo.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/kxfq.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libserver10.a"  with "lib/libserver10.a/ksws.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/rdbms/lib/libperfsrv10.a"  with "rdbms/lib/libperfsrv10.a/qcodfdef_PERF.o"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/cpu/view_recompile/recompile_precheck_jan2008cpu.sql"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/cpu/view_recompile/view_recompile_jan2008cpu.sql"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/psu/10.2.0.4.1/catpsu.sql"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/psu/10.2.0.4.1/catpsu_rollback.sql"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/bundledata_PSU.xml"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/catbundle.sql"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/lib/jox.o"

Patching component oracle.javavm.server, 10.2.0.4.0...
Copying file to "/u01/app/oracle/product/10.2.0/db_4/lib/libjox10.so"

Patching component oracle.sysman.repository.core, 10.2.0.4.0a...
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emDB.jar" with "/sysman/jlib/emDB.jar/oracle/sysman/db/rsc/inst/RsrcMonitorMsg.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emDB.jar" with "/sysman/jlib/emDB.jar/oracle/sysman/db/rsc/inst/RsrcMonitorMsgID.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emDB.jar" with "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/inst/rsrcmgr/RsrcmgrMonController.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emDB.jar" with "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/inst/MemoryController.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emDB.jar" with "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/inst/SessionDetailsController.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emDB.jar" with "/sysman/jlib/emDB.jar/oracle/sysman/db/adm/inst/SitemapController.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emDB.jar" with "/sysman/jlib/emDB.jar/oracle/sysman/emo/perf/bean/sesn/SessionDetails.class"

Patching component oracle.sysman.console.db, 10.2.0.4.0...
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emjsp.jar" with "/sysman/jlib/emjsp.jar/_database/_instance/_sitemap/_healthgif.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emjsp.jar" with "/sysman/jlib/emjsp.jar/_database/_instance/_sitemap/_healthgif$__jsp_StaticText.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emjsp.jar" with "/sysman/jlib/emjsp.jar/_database/_instance/_sitemap/_health.class"
Updating jar file "/u01/app/oracle/product/10.2.0/db_4/sysman/jlib/emjsp.jar" with "/sysman/jlib/emjsp.jar/_database/_instance/_sitemap/_health$__jsp_StaticText.class"

Patching component oracle.ovm, 10.2.0.4.0...
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/owmctrg.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/owmadmb.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/owmadms.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/owmasrtb.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/owmltb.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/owmutlb.plb"
Copying file to "/u01/app/oracle/product/10.2.0/db_4/rdbms/admin/owmutls.plb"

Patching component oracle.network.rsf, 10.2.0.4.0...
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/lib/libn10.a"  with "lib/libn10.a/nacom.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/network/lib/libnlsnr10.a"  with "network/lib/libnlsnr10.a/nsglgr.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/network/lib/libnlsnr10.a"  with "network/lib/libnlsnr10.a/nsglro.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/network/lib/libnlsnr10.a"  with "network/lib/libnlsnr10.a/nsgcs.o"
Updating archive file "/u01/app/oracle/product/10.2.0/db_4/network/lib/libnlsnr10.a"  with "network/lib/libnlsnr10.a/nsglsn.o"

Patching component oracle.network.listener, 10.2.0.4.0...
Running make for target iextjob
Running make for target iextjobo
Running make for target client_sharedlib
Running make for target idgmgrl
Running make for target ioracle
Running make for target client_sharedlib
Running make for target itnslsnr
ApplySession adding interim patch '8576156' to inventory

Verifying the update...
Inventory check OK: Patch ID 8576156 is registered in Oracle Home inventory with proper meta-data.
Files check OK: Files from Patch ID 8576156 are present in Oracle Home.

--------------------------------------------------------------------------------
********************************************************************************
********************************************************************************
**                                ATTENTION                                   **
**                                                                            **
** Please note that the Patch Set Update Installation (PSU Deinstallation)    **
** is not complete until all the Post Installation (Post Deinstallation)      **
** instructions noted in the Readme accompanying this PSU, have been          **
** successfully completed.                                                    **
**                                                                            **
********************************************************************************
********************************************************************************

--------------------------------------------------------------------------------

Execution of 'sh /home/oracle/8576156/custom/scripts/post -apply 8576156 ':


Return Code = 0

The local system has been patched and can be restarted.


OPatch succeeded.

Hasta ahora todo va bien, pero falta un paso final, necesario para que el Scheduler funcione adecuadamente.

[oracle@urania 8576156]$ su root
Password:
[root@urania 8576156]# sh psu_root.sh
[root@urania 8576156]# exit

Proceso concluído, pero no hemos terminado, falta hacer la post instalación. Empezamos por ejecutar catbundle.sql, no olvidar revisar los logs para verificar que no hubieron errores.

[oracle@urania 8576156]$ cd $ORACLE_HOME/rdbms/admin
[oracle@urania admin]$ sqlplus / as sysdba
SYS@test> startup
SYS@test> @catbundle.sql psu apply
. . .
. . .
. . .
SYS@test> ALTER SESSION SET current_schema = SYS;

Session altered.

SYS@test> PROMPT Updating registry...
Updating registry...
SYS@test> INSERT INTO registry$history
  2    (action_time, action,
  3     namespace, version, id,
  4     bundle_series, comments)
  5  VALUES
  6    (SYSTIMESTAMP, 'APPLY',
  7     SYS_CONTEXT('REGISTRY$CTX','NAMESPACE'),
  8     '10.2.0.4',
  9     1,
 10     'PSU',
 11     'PSU 10.2.0.4.1');

1 row created.

SYS@test> COMMIT;

Commit complete.

SYS@test> SPOOL off
SYS@test> SET echo off
Check the following log file for errors:
/u01/app/oracle/product/10.2.0/db_4/cfgtoollogs/catbundle/catbundle_PSU_TEST_APPLY_2009Jul15_13_13_44.log

SYS@test> exit

El paso final es recompilar las vistas de la base de datos, ojo que puede tomar bastantes minutos. Primero verificamos cuántos objetos se compilarán y luego ejecutamos la compilación en sí.

[oracle@urania admin]$ cd $ORACLE_HOME/cpu/view_recompile
[oracle@urania view_recompile]$ sqlplus / as sysdba
SYS@test> @recompile_precheck_jan2008cpu.sql

Running precheck.sql...


Number of views to be recompiled :2081
-----------------------------------------------------------------------

Number of objects to be recompiled :4171
Please follow the README.txt instructions for running viewrecomp.sql

PL/SQL procedure successfully completed.

SYS@test> exit

[oracle@urania ~]$ cd $ORACLE_HOME/cpu/view_recompile
[oracle@urania view_recompile]$ sqlplus / as sysdba
SYS@test> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@test> startup upgrade
ORACLE instance started.

Total System Global Area  247463936 bytes
Fixed Size                  1266848 bytes
Variable Size              96471904 bytes
Database Buffers          146800640 bytes
Redo Buffers                2924544 bytes
Database mounted.
Database opened.
SYS@test> @view_recompile_jan2008cpu.sql

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

1 row created.

Commit complete.

No. of Invalid Objects is :1595
Please refer to README.html to for instructions on validating these objects

PL/SQL procedure successfully completed.

Logfile for the current viewrecomp.sql session is : vcomp_TEST_15Jul2009_13_23_16.log
SYS@test> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@test> startup
ORACLE instance started.

Total System Global Area  247463936 bytes
Fixed Size                  1266848 bytes
Variable Size             109054816 bytes
Database Buffers          134217728 bytes
Redo Buffers                2924544 bytes
Database mounted.
Database opened.
SYS@test> exit

Algunos objetos quedaron descompilados por lo que debemos ejecutar utlrp.sql para compilarlos.

[oracle@urania ~]$ cd $ORACLE_HOME/rdbms/admin
[oracle@urania admin]$ sqlplus / as sysdba
SYS@test> @utlrp.sql

TIMESTAMP
----------------------------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN  2009-07-15 13:29:22

DOC>   The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC>   objects in the database. Recompilation time is proportional to the
DOC>   number of invalid objects in the database, so this command may take
DOC>   a long time to execute on a database with a large number of invalid
DOC>   objects.
DOC>
DOC>   Use the following queries to track recompilation progress:
DOC>
DOC>   1. Query returning the number of invalid objects remaining. This
DOC>      number should decrease with time.
DOC>         SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC>   2. Query returning the number of objects compiled so far. This number
DOC>      should increase with time.
DOC>         SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC>   This script automatically chooses serial or parallel recompilation
DOC>   based on the number of CPUs available (parameter cpu_count) multiplied
DOC>   by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC>   On RAC, this number is added across all RAC nodes.
DOC>
DOC>   UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC>   recompilation. Jobs are created without instance affinity so that they
DOC>   can migrate across RAC nodes. Use the following queries to verify
DOC>   whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC>   1. Query showing jobs created by UTL_RECOMP
DOC>         SELECT job_name FROM dba_scheduler_jobs
DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC>   2. Query showing UTL_RECOMP jobs that are running
DOC>         SELECT job_name FROM dba_scheduler_running_jobs
DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#

PL/SQL procedure successfully completed.


TIMESTAMP
----------------------------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END  2009-07-15 13:31:06


PL/SQL procedure successfully completed.

DOC> The following query reports the number of objects that have compiled
DOC> with errors (objects that compile with errors have status set to 3 in
DOC> obj$). If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#

OBJECTS WITH ERRORS
-------------------
                  0

DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#

ERRORS DURING RECOMPILATION
---------------------------
                          0


PL/SQL procedure successfully completed.

De ser necesario habría que recompilar manualmente los objetos que hubiesen quedado descompilados. Con esto se ha concluído satisfactoriamente la instalación del primer PSU, contamos ahora con Oracle 10.2.0.4.1.

SYS@test> select version, comments from registry$history;

VERSION              COMMENTS
-------------------- --------------------
10.2.0.4             PSU 10.2.0.4.1

Si bien les he mostrado los pasos a seguir, esto no debe ser considerado un reemplazo del procedimiento formal indicado en el archivo Readme.html que acompaña a este PSU, hay procedimientos especiales para RAC por ejemplo, así que a ir leyendo la documentación y haciendo las pruebas del caso para que finalmente lo apliquen en sus ambientes de producción, suerte!

Post Relacionados:
Siga leyendo >>

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!

martes, 7 de julio de 2009

Patch Set Updates

Oracle acaba de hacer público en My Oracle Support, mediante el Note 850471.1, que a partir de Julio y de forma trimestral, estará liberando un conjunto de patches recomendados a los que se conocerá como Patch Set Update o PSU. Los PSU son acumulativos y su aplicación origina un cambio en la versión a nivel del quinto número, es decir, el primer PSU para Oracle 10.2.0.4 originará que tengamos una instalación con versión 10.2.0.4.1, el siguiente PSU será 10.2.0.4.2 y así en adelante.

Se anuncia que el primer PSU estará disponible para 10.2.0.4 exclusivamente, en las principales plataformas con excepción de Windows, donde seguirán distribuyéndose los conocidos Bundle Patches (Note 161549.1 Oracle Database Server and Networking Patches for Microsoft Platforms). Oracle indica que los PSU contendrán los Critical Patch Updates o CPU, pero que éstos seguirán estando disponibles de forma que se podrá elegir entre instalar el PSU o simplemente el CPU; lo que no queda claro es si los PSU serán un reemplazo de los Recommended Patches (Note 756671.1 Oracle Recommended Patches – Oracle database) que ya desde hace algún tiempo nos permiten obtener los patches recomendados para Oracle 10.2.0.3 en adelante.

Más allá del enredo en los nuevos términos y sus abreviaturas, la introducción de los PSU prometen simplificar la labor de patching pues ataca los bugs que han sido identificados como críticos, que han impactado a un gran número de clientes, cuyos fixes ya han sido probados en los clientes y que no involucran cambios severos en la funcionalidad de Oracle ni cambios de configuración, y si se tiene RAC no es necesario suspender todo el servicio pues se puede aplicar en cada nodo por separado, mientras los demás siguen operando, habilidad conocida como Rolling Patching, ¿qué más podemos pedir? Así que a estar atentos, el primer PSU estará disponible este 14 de Julio de 2009 y los siguientes el martes más cercano al 15 de Enero, Abril, Julio y Octubre.

Post Relacionados:
Siga leyendo >>

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!

jueves, 9 de abril de 2009

Actualizando ASM y registrándolo en OEM

Con este Post ponemos fin a la serie dedicada a ASM, recapitulando: hemos visto cómo instalar el software y cómo crear una instancia ASM, para luego proceder a migrar la base de datos de forma manual y usando OEM Database Console, pues bien ahora veremos el procedimiento a seguir para realizar un upgrade a ASM y cómo hacer para registrar esta instancia para que sea administrable desde OEM Database Console.


I. Upgrade de ASM

Partiremos del supuesto que tenemos ASM 10.2.0.1 con ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 y que queremos actualizar a ASM 11.1.0.7, con ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_2.

1. Debemos detener la instancia ASM pero esto no es posible sin que primero hagamos lo mismo con las bases de datos que la están usando.

[oracle@urania ~]$ . oraenv
ORACLE_SID = [orcl] ? orcl
[oracle@urania ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Feb 4 00:13:11 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SYS@orcl> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

[oracle@urania ~]$ . oraenv
ORACLE_SID = [orcl] ? +ASM
[oracle@urania ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Feb 4 00:15:13 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SYS@+ASM> shutdown immediate
ASM diskgroups dismounted
ASM instance shutdown.

2. Antes de actualizar ASM se requiere que Oracle Cluster Synchronization Services (CCS) esté configurado para ejecutarse desde el nuevo Oracle Home, para ello debemos ejecutar lo siguiente con el usuario root:

[root@urania]# cd /u01/app/oracle/product/11.1.0/db_2/bin
[root@urania bin]# ./localconfig reset
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Configuration for local CSS has been initialized
Stale CSS daemon is running... killing it now
Cleaning up Network socket directories
Setting up Network socket directories
Adding to inittab
Startup will be queued to init within 30 seconds.
Checking the status of new Oracle init process...
Expecting the CRS daemons to be up within 600 seconds.
Cluster Synchronization Services is active on these nodes.
        urania
Cluster Synchronization Services is active on all the nodes.
Oracle CSS service is installed and running under init(1M)

3. Es altamente recomendable que el listener en uso sea el que corresponde al home de ASM, por lo que podemos copiar los archivos de configuración (listener.ora, sqlnet.ora) desde el home inicial hacia el nuevo home e iniciar desde allí el listener.

[oracle@urania ~]$ export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_2
[oracle@urania ~]$ $ORACLE_HOME/bin/lsnrctl start

LSNRCTL for Linux: Version 11.1.0.7.0 - Production on 04-FEB-2009 00:52:53

Copyright (c) 1991, 2008, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.1.0/db_2/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.1.0.7.0 - Production
System parameter file is /u01/app/oracle/product/11.1.0/db_2/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/urania/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=urania.localdomain)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=urania.localdomain)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.1.0.7.0 - Production
Start Date                04-FEB-2009 00:52:54
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.1.0/db_2/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/urania/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=urania.localdomain)(PORT=1521)))
Services Summary...
Service "orcl.localdomain" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

4. El upgrade lo realizaremos con el utilitario DBUA, pero debemos tener cuidado de invocar el que corresponde a la nueva versión de ASM, que para nuestro ejemplo es la 11.1.0.7.

[oracle@urania ~]$ $ORACLE_HOME/bin/dbua


5. Se nos ofrece una bienvenida, la cual aceptamos y se nos presenta la alternativa de: actualizar una base de datos, o actualizar ASM, escogemos actualizar ASM.


6. Aparece un resumen de la actualización que se estará realizando, misma que aceptamos al presionar [Finish].


7. El proceso de upgrade se inicia y luego de unos instantes se nos notifica de su conclusión.


8. Finalmente se nos presenta un resumen de lo actuado, con referencia a los logs generados, para su eventual inspección.


9. Con ASM ya actualizado podemos proceder a iniciar la instancia ASM y las bases de datos asociadas.

[[oracle@urania ~]$ . oraenv
ORACLE_SID = [orcl] ? +ASM
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_2 is /u01/app/oracle
[oracle@urania ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.1.0.7.0 - Production on Wed Feb 4 01:35:31 2009

Copyright (c) 1982, 2008, Oracle.  All rights reserved.

Connected to an idle instance.

SYS@+ASM> startup
ASM instance started

Total System Global Area  284565504 bytes
Fixed Size                  1312896 bytes
Variable Size             258086784 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted

[oracle@urania ~]$ . oraenv
ORACLE_SID = [orcl] ? orcl
[oracle@urania ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Feb 4 01:37:13 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SYS@orcl> startup;
ORACLE instance started.

Total System Global Area  318046208 bytes
Fixed Size                  1313120 bytes
Variable Size             180356768 bytes
Database Buffers          130023424 bytes
Redo Buffers                6352896 bytes
Database mounted.
Database opened.

¡Tarea concluída! Tenemos la base de datos 10gR2 operando sobre una nueva instancia ASM 11gR1, pero aún nos falta algo más: administrar la instancia ASM desde OEM Database Console.



II. Registrando ASM en OEM Database Console

Esta es la típica presentación de Database Console, misma que nos permite administrar la base de datos.


Para incluir la instancia ASM debemos reconfigurar OEM siguiendo estos pasos:

1. Desconfiguramos OEM para que ya no tenga registrada a la base de datos.

[oracle@urania ~]$ emca -deconfig dbcontrol db

STARTED EMCA at Feb 4, 2009 9:19:19 AM
EM Configuration Assistant, Version 11.1.0.7.0 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Enter the following information:
Database SID: orcl

Do you wish to continue? [yes(Y)/no(N)]: Y
Feb 4, 2009 9:19:28 AM oracle.sysman.emcp.EMConfig perform
INFO: This operation is being logged at /u01/app/oracle/cfgtoollogs/emca/orcl/emca_2009_02_04_09_19_19.log.
Feb 4, 2009 9:19:30 AM oracle.sysman.emcp.util.DBControlUtil stopOMS
INFO: Stopping Database Control (this may take a while) ...
Enterprise Manager configuration completed successfully
FINISHED EMCA at Feb 4, 2009 9:20:34 AM

2. Configuramos nuevamente OEM y notaremos que en adición a los datos relativos a la instancia de la base de datos, ahora también nos solicitará información sobre la instancia ASM

[oracle@urania ~]$ emca -config dbcontrol db

STARTED EMCA at Feb 4, 2009 9:24:59 AM
EM Configuration Assistant, Version 11.1.0.7.0 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Enter the following information:
Database SID: orcl
Listener port number: 1521
Password for SYS user:
Password for DBSNMP user:
Password for SYSMAN user:
Password for SYSMAN user: 
Email address for notifications (optional):
Outgoing Mail (SMTP) server for notifications (optional):
ASM ORACLE_HOME [ /u01/app/oracle/product/11.1.0/db_2 ]:
ASM SID [ +ASM ]:
ASM port [ 1521 ]:
ASM user role [ SYSDBA ]:
ASM username [ SYS ]:
ASM user password:
-----------------------------------------------------------------

You have specified the following settings

Database ORACLE_HOME ................ /u01/app/oracle/product/11.1.0/db_2

Local hostname ................ urania.localdomain
Listener port number ................ 1521
Database SID ................ orcl
Email address for notifications ...............
Outgoing Mail (SMTP) server for notifications ...............
ASM ORACLE_HOME ................ /u01/app/oracle/product/11.1.0/db_2
ASM SID ................ +ASM
ASM port ................ 1521
ASM user role ................ SYSDBA
ASM username ................ SYS

-----------------------------------------------------------------
Do you wish to continue? [yes(Y)/no(N)]: Y
Feb 4, 2009 9:26:04 AM oracle.sysman.emcp.EMConfig perform
INFO: This operation is being logged at /u01/app/oracle/cfgtoollogs/emca/orcl/emca_2009_02_04_09_24_59.log.
Feb 4, 2009 9:26:13 AM oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepository
INFO: Uploading configuration data to EM repository (this may take a while) ...
Feb 4, 2009 9:30:14 AM oracle.sysman.emcp.EMReposConfig invoke
INFO: Uploaded configuration data successfully
Feb 4, 2009 9:30:20 AM oracle.sysman.emcp.util.DBControlUtil configureSoftwareLib
INFO: Software library is already configured.
Feb 4, 2009 9:30:20 AM oracle.sysman.emcp.util.DBControlUtil configureSoftwareLib
INFO:  EM_SWLIB_STAGE_LOC (value) will be ignored.
Feb 4, 2009 9:30:20 AM oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
INFO: Deploying Provisioning archives ...
Feb 4, 2009 9:30:37 AM oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
INFO: Provisioning archives deployed successfully.
Feb 4, 2009 9:30:37 AM oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Securing Database Control (this may take a while) ...
Feb 4, 2009 9:30:55 AM oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Database Control secured successfully.
Feb 4, 2009 9:30:55 AM oracle.sysman.emcp.util.DBControlUtil startOMS
INFO: Starting Database Control (this may take a while) ...
Feb 4, 2009 9:32:19 AM oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: Database Control started successfully
Feb 4, 2009 9:32:20 AM oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: >>>>>>>>>>> The Database Control URL is https://urania.localdomain:5500/em <<<<<<<<<<<
Feb 4, 2009 9:32:32 AM oracle.sysman.emcp.EMDBPostConfig invoke
WARNING:
************************  WARNING  ************************

Management Repository has been placed in secure mode wherein Enterprise Manager
data will be encrypted.  The encryption key has been placed in the file:
/u01/app/oracle/product/11.1.0/db_2/urania.localdomain_orcl/sysman/config/emkey.ora.
Please ensure this file is backed up as the encrypted data will become unusable
if this file is lost.

***********************************************************
Enterprise Manager configuration completed successfully
FINISHED EMCA at Feb 4, 2009 9:32:32 AM

Concluído esto ahora notaremos que finalmente se incluye el link a la instancia ASM.


Puerta de acceso a gran cantidad de información y opciones que nos permitirán administrar la instancia ASM con la misma simplicidad que OEM nos proporciona para la base de datos.


En este punto, y luego de tratar el tema durante varios Posts consecutivos, tenemos una base de datos que reside en ASM al igual que su Flash Recovery Area, siendo ambas instancias plenamente administrables desde OEM Database Console. Llegamos pues al final de esta serie que espero les haya sido de utilidad, o eventualmente lo sea, en cuanto den el paso de adoptar ASM (lo cual ocurrirá tarde o temprano).


Post Relacionados:
Siga leyendo >>

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!

sábado, 28 de marzo de 2009

Migrando la base de datos a ASM, la forma fácil

Hola amigos, antes de abordar el tema principal de este Post, quería compartir con Uds. un acontecimiento muy especial: hace unos pocos días recibí una comunicación de Lillian Buziak (Oracle), indicándome que luego de una evaluación habían decidido otorgarme el Oracle ACE Award, con lo que vengo a ser el segundo peruano (junto a Plinio Arbizu, Oracle Ace Director) y sexto latinoamericano en recibir este reconocimiento que Oracle otorga en mérito a la participación activa en la comunidad Oracle. Si bien es un premio que me llena de alegría, también representa el compromiso de seguir colaborando en la difusión de conocimientos.

Teniendo en cuenta que hay 207 Oracle ACE, si Uds. conocen de alguien que merezca este reconocimiento, pueden nominarlo llenando un formato, en nuestras manos está incrementar y premiar la participación de los profesionales de habla hispana!

Ahora sí, continuando con la serie dedicada a ASM, recordaremos que en el Post anterior se realizó el traslado manual de la base de datos hacia ASM, ahora veremos cómo lograr el mismo propósito empleando Oracle Enterprise Manager Database Console, tarea que resulta sumamente sencilla gracias a que seremos guiado por un wizard muy bien elaborado y completo, que contempla todos los aspectos de la migración sin dejar nada de lado. Sin mayores preámbulos veamos el procedimiento a seguir:


1. En la pestaña Server encontraremos la opción Migrate to ASM.

2. Procedemos a completar la información requerida para identificar plenamente a la instancia ASM en la cual residirá la base de datos.

3. Para lograr el mismo objetivo que conseguimos con el procedimiento manual, seleccionamos como archivos a migrar tanto los archivos de la base de datos como los backups y archive logs, prestando especial atención a seleccionar una migracion online, a fin de minimizar la suspensión del servicio.

4. Es hora de seleccionar los Disk Groups en los cuales residirán tanto la base de datos (DAT), como el Flash Recovery Area (FRA), en este último caso seleccionamos la migración de todos los contenidos.

5. Y esto fue todo, ahora solo nos queda indicar cuándo queremos que se realice la migración, si de inmediato o en una fecha futura.

6. Antes de registrar esta tarea en el Scheduler, le damos una revisada a lo que se estará ejecutando y cuando estemos seguros presionamos el botón <Submit Job>


7. Con la tarea ya en ejecución podemos ir revisando su avance, esto hasta que eventualmente se llegue a la parte en la cual se hace el switch, momento en el que la base de datos será detenida y por tanto se nos solicitará nuevamente las credenciales para restablecer la conexión con Oracle Enterprise Manager Database Console.



8. La migración ha concluido satisfactoriamente, tal como podemos comprobar al inspeccionar que tanto los objetos de la base de datos como los contenidos del flash recovery area residen ahora en la instancia ASM, cada cual en sus respectivos Disk Groups.




¡Tarea concluída! Coincidirán en que usar OEM Database Console para migrar la base de datos y el flash recovery area representa un esfuerzo mucho menor que su contraparte manual, pero no está de más saber cómo hacerlo de ambas formas. En el siguiente Post (el último de esta serie), les mostraré como registrar la instancia ASM para que sea administrable desde OEM Database Console, así como el procedimiento a seguir para realizar un upgrade a ASM, estén atentos...

Post Relacionados:

Siga leyendo >>

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!