La última versión de Oracle 10 es (a la hora de escribir esto) la 10.2.03. Como no tenía nada mejor que hacer en una tarde de sábado, decidí actualizar la instalación que tengo en Ubuntu 6.10. Previamente me había hecho con el parche de Oracle (ya que desde casa bajarlo a la velocidad de ‘modem’ podría provocar que para cuando la descarga hubiera terminado Oracle hubiera sacado una nueva versión). El parche sigue la tendencia de escalada de tamaños a la que Oracle se ha apuntado. Si el parche de 9.2.0.8 eran ‘apenas’ 250 Mb., este ocupa 900 Mb. con lo que hay que disponer de una buena conexión para la descarga.
Una vez bajado el ‘zip’ lo ideal es descomprimirlo en algún directorio de trabajo desde el que realizaremos los pasos de la instalación. Terminada esta tarea comienza lo que es la actualización en sí:
Lo primero que hay que hacer es parar la instancia, el listener y -si está arrancada- la consola (y si hubiera arrancado un ‘isqlplus’, también es necesario pararlo). Estas dos últimas se detienen haciendo simplemente:
oracle@carlos02:~$ emctl stop dbconsole TZ set to Europe/Madrid Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0 Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved. http://carlos02:1158/em/console/aboutApplication Stopping Oracle Enterprise Manager 10g Database Control ... oracle@carlos02:~$ isqlplusctl stop iSQL*Plus 10.2.0.1.0 Copyright (c) 2003, 2005, Oracle. All rights reserved. ... oracle@carlos02:~$
Una vez aquí, procedemos a correr el ‘installer’:
oracle@carlos02:~/temp/Disk1$ ./runInstaller
Iniciando Oracle Universal Installer...
Comprobando requisitos de Installer...
Comprobando la versión del sistema operativo: debe ser redhat-3, SuSE-9, SuSE-10, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Fallo
Como en la instalación, Oracle se da cuenta de que el S.O. no es ninguno de los ‘certificados’. Así que hay que hacer lo mismo que hicimos en la instalación: invocar al ‘installer’ con la opción -ignoreSysPrereqs:
oracle@carlos02:~/temp/Disk1$ ./runInstaller -ignoreSysPrereqs
Iniciando Oracle Universal Installer...
Comprobando requisitos de Installer...
Comprobando la versión del sistema operativo: debe ser redhat-3, SuSE-9, SuSE-10, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Fallo >> Ignorando fallos de requisitos necesarios. Continuando...
Preparando para iniciar Oracle Universal Installer desde /tmp/OraInstall2007-03-03_07-07-25PM. Espere...oracle@carlos02:~/temp/Disk1$ Oracle Universal Installer, Versión 10.2.0.3.0 Producción
Copyright (C) 1999, 2006, Oracle. Todos los Derechos Reservados.
El ‘installer’ se encarga de las instalaciones correspondientes. En unos 10 minutos se instalan todos los componentes necesarios. Tras finalizar este paso, el ‘installer’ nos pide que corramos como ‘root’ el ’shell script’ ‘root.sh’ que se encarga de las tareas necesarias a nivel de S.O.: permisos, ‘owners’ y tal…
oracle@carlos02:~$ su - Password: root@carlos02:~# /opt/oracle/ora10g/root.sh
Pero esto no ha acabado todavía, ya que si intentamos arrancar la instancia en este momento, tenemos que:
SQL*Plus: Release 10.2.0.3.0 - Production on Sat Mar 3 19:22:51 2007 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. SQL> Connected to an idle instance. SQL> STARTUP SQL> ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1260672 bytes Variable Size 83886976 bytes Database Buffers 75497472 bytes Redo Buffers 7127040 bytes Database mounted. ORA-01092: ORACLE instance terminated. Disconnection forced
Esto es porque es necesario arrancar la instancia con la opción ‘UPGRADE’ (a diferencia de cuando actualizamos a 9.2.0.8, que se tenía que arrancar con la opción ‘MIGRATE’). Se puede ver claramente si vamos al directorio ‘udump’ y miramos el fichero de trazas:
oracle@carlos02:/opt/oracle/admin/db01/udump$ gedit db01_ora_16937.trc ... ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option
Así que, arrancamos en ‘UPGRADE’ y corremos el ’script’ ‘catupgrd.sql’.
SQL> STARTUP UPGRADE ... SQL> SPOOL patch.log SQL> @?/rdbms/admin/catupgrd.sql
Como de costumbre: líneas y líneas de SQL, PL/SQL y mucho ‘DBMS_JAVA.LOADJAVA’ (hay gran cantidad de java en esta actualización). Hay que decir que el ’script’ tarda bastante menos que lo que tardó en 9.2.0.8 (si bien la máquina y el S.O. son radicalmente distintos):
Total Upgrade Time: 00:30:56
A continuación, terminamos el proceso con los últimos pasos (parar, arrancar la instancia y correr el -recomendado- ’script’ para recompilar los objetos ‘inválidos’:
SQL> SHUTDOWN
SQL> STARTUP
SQL> @?/rdbms/admin/utlrp.sql
ERRORS DURING RECOMPILATION
---------------------------
1
SQL> select * from UTL_RECOMP_ERRORS;
OBJ# ERROR_AT COMPILE_ERR
---- ---------------------------- -------------------------------------------------------------------------
8806 03-MAR-07 08.22.54.073149 PM ORA-04045: errors during recompilation/revalidation of SYS.AQ$_ALERT_QT_F
ORA-04031: unable to allocate 28 bytes of shared memory ("shared pool",
"select name,password,datats#...","sql area","idndef*[]: qkexrPackName")
Si bien la culpa de este error no es de Oracle: No hay suficiente ‘SHARED POOL’ debido a la configuración de la instancia.
En cualquier caso, tras arrancar el listener, el ‘dbconsole’ tenemos:
Con lo que, una vez más: prueba superada. Oracle 10.2.03 en Ubuntu.
Saludos.
Carlos

Escrito por carlosal