Introduction
Cet article présente la procédure d’installation du patch 10.2.0.4 64 bits sur une instance Oracle 10.2.0.1 64 bits en environnement Solaris 9 SPARC.
L’instance à migrer s’appelle UBXU1ORA
et elle est normalisée. La
distribution 10.2.0.1 64 bits est installée dans le répertoire
/Software/oracle/app/product/10.2.0.1
. Dans ce même répertoire un lien 10.2.0
pointe sur le répertoire 10.2.0.1 pour gérer le cas où plusieurs versions 10g
sont nécessaires pour plusieurs instances sur la même machine, le lien 10.2.0
correspondant à la distribution 10g majoritairement utilisée par les
instances.
oracle@UBXU1ORA > cd /Software/oracle/app/product oracle@UBXU1ORA > ls -lrt
drwxr-xr-x 60 oracle dba 1024 Sep 24 2007 10.2.0.1 lrwxrwxrwx 1 oracle dba 8 Aug 13 15:18 10.2.0 -> 10.2.0.1
(voir l’article Normalisation d’une instance Oracle en mode archivelog sous Solaris pour plus de détails sur la norme appliquée).
La variable $ORA_VERSION
dans le fichier $DBA/etc/UBXU1ORA.inst
est fixée à
10.2.0
$DBA/etc/UBXU1ORA.inst
...
ORA_VERSION="10.2.0"
...
Installation du patch 10.2.0.4
Le patch 10.2.0.4 64bits pour Solaris SPARC est récupéré à partir du site Metalink. Il se compose d’un fichier zip
p6810189_10204_Solaris-64.zip
de 1,2 Gb.
Opérations préliminaires
Au préalable, vérifier qu’il y a assez de place disponible dans le système
de fichiers qui contiendra le futur répertoire de destination de la
distribution 10.2.0.4 avec la commande df -k
:
shell> df -k /Software/oracle
Toutes les instances et listener Oracle utilisant la distribution 10.2.0.1
sont arrêtées avec les binaires sqlplus
et lsnrctl
oracle@UBXU1ORA > sqlplus "/ as sysdba"
shutdown immediate;
Database closed. Database dismounted. ORACLE instance shut down.
oracle@UBXU1ORA > lsnrctl
LSNRCTL> stop LISTENER_UBXU1ORA
Connecting to (ADDRESS=(PROTOCOL=TCP)(Host=FRDUBX301)(Port=1522)) The command completed successfully
Par précaution, sauvegarder la distribution /Software/oracle/app/product/10.2.0.1
ainsi que la ou les instance(s) Oracle à migrer.
Installation interactive de la version 10.2.0.4 sur la version 10.2.0.1
Créer un répertoire orainstall
dans un système de fichiers disposant d’assez
d’espace ( 3 Gb au moins ) et envoyer par ftp
le fichier
p6810189_10204_Solaris-64.zip
dans ce répertoire orainstall
.
Dans cet article, le fichier p6810189_10204_Solaris-64.zip
est envoyé par
ftp
dans le répertoire /tmp/orainstall
. Il est ensuite décompressé avec la
command unzip
.
shell> cd /tmp/orainstall
shell> unzip p6810189_10204_Solaris-64.zip
L’installation peut alors démarrer avec le shell runInstaller
localisé dans
le sous répertoire ./Disk1
.
Avant de lancer l’installation, la variable $ORACLE_HOME
de la session oracle qui exécute
l’installer doit impérativement pointer sur le répertoire physique /Software/oracle/app/product/10.2.0.1
et non le lien 10.2.0.
L’installation ne peut pas être réalisée si la variable $ORACLE_HOME
correspond à un lien.
2 méthodes sont possibles : la méthode silencieuse ou la méthode interactive
graphique. C’est la deuxième méthode qui est choisie, aussi la variable
$DISPLAY
est mise à jour pour l’affichage des fenêtres graphiques Xterm :
shell> export DISPLAY=<adresse ip>:0.0
Pour lancer l’installation en mode graphique interactif
oracle@/tmp/orainstall> cd ./Disk1 oracle@/tmp/orainstall> export ORACLE_HOME=/Software/oracle/app/product/10.2.0.1 oracle@/tmp/orainstall> ./runInstaller
Starting Oracle Universal Installer... Checking installer requirements... Checking operating system version: must be 5.8, 5.9 or 5.10. Actual 5.9 Passed Checking Temp space: must be greater than 250 MB. Actual 14036 MB Passed Checking swap space: must be greater than 500 MB. Actual 29425 MB Passed Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed All installer requirements met. Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-08-14_08-44-50AM. Please wait ... oracle@UBXU1ORA > Oracle Universal Installer, Version 10.2.0.4.0 Production Copyright (C) 1999, 2008, Oracle. All rights reserved.
Des contrôles sont réalisés au démarrage de l’installation pour vérifier les prérequis (version OS, espace temporaire disponible, etc.).
Toutes les étapes de l’installation graphique ne sont pas décrites car la distribution à installer est assez standard et ne comprend pas de composants spécifiques comme RAC, Réplication, OLAP, Transparent Gateways, etc.
Au cours de l’installation, un nom d’installation et le chemin complet de
l’installation 10.2.0.1 (/Software/oracle/app/product/10.2.0.1
) à patcher sont
renseignés :
Name : OraDb10g_home1
Path : /Software/oracle/app/product/10.2.0.1
Au cours de l’installation il faut exécuter 2 scripts en tant que super utilisateur root
/Software/oracle/app/oraInventory/orainstRoot.sh
/Software/oracle/app/product/10.2.0.1/root.sh
Migration manuelle de l’instance 10.2.0.1 vers la version 10.2.0.4
Le répertoire /Software/oracle/app/product/10.2.0.1
peut alors être renommé
en /Software/oracle/app/product/10.2.0.4
et le lien 10.2.0 peut être recréé
pour pointer vers le répertoire /Software/oracle/app/product/10.2.0.4
.
oracle@UBXU1ORA> cd /Software/oracle/app/product oracle@UBXU1ORA> rm 10.2.0 oracle@UBXU1ORA> mv 10.2.0.1 10.2.0.4 oracle@UBXU1ORA> ln -fs 10.2.0.4 10.2.0 oracle@UBXU1ORA> ls -lrt
drwxr-xr-x 60 oracle dba 1024 Sep 24 2007 10.2.0.4 lrwxrwxrwx 1 oracle dba 8 Aug 13 16:20 10.2.0 -> 10.2.0.4
Script d’analyse de pré-migration (utlu102i.sql)
Une analyse préalable est nécessaire avec le script de pré-migration
utlu102i.sql
. Pour cela l’instance est démarrée en mode UPGRADE
et le script
$ORACLE_HOME/rdbms/admin/utlu102i.sql
est exécuté.
STARTUP UPGRADE;
spool upgrade_info.log;
@?/rdbms/admin/utlu102i.sql;
spool off;
exit
Voici la sortie obtenue dans ce cas pratique :
Oracle Database 10.2 Upgrade Information Utility 08-14-2009 08:39:04
.
**********************************************************************
Database:
**********************************************************************
--> name: UBXU1
--> version: 10.2.0.1.0
--> compatible: 9.2.0
--> blocksize: 8192
.
**********************************************************************
Tablespaces: [make adjustments in the current environment]
**********************************************************************
--> SYSTEM tablespace is adequate for the upgrade.
.... minimum required size: 372 MB
--> TEMPO tablespace is adequate for the upgrade.
.... minimum required size: 58 MB
--> SYSAUX tablespace is adequate for the upgrade.
.... minimum required size: 200 MB
--> UNDO tablespace is adequate for the upgrade.
.... minimum required size: 180 MB
.
**********************************************************************
Update Parameters: [Update Oracle Database 10.2 init.ora or spfile]
**********************************************************************
WARNING: --> "shared_pool_size" needs to be increased to at least 201326592
.
**********************************************************************
Renamed Parameters: [Update Oracle Database 10.2 init.ora or spfile]
**********************************************************************
-- No renamed parameters found. No changes are required.
.
**********************************************************************
Obsolete/Deprecated Parameters: [Update Oracle Database 10.2 init.ora or spfile]
**********************************************************************
-- No obsolete parameters found. No changes are required
.
**********************************************************************
Components: [The following database components will be upgraded or installed]
**********************************************************************
--> Oracle Catalog Views [upgrade] VALID
--> Oracle Packages and Types [upgrade] VALID
.
**********************************************************************
Miscellaneous Warnings
**********************************************************************
WARNING: --> Database contains INVALID objects prior to upgrade.
.... USER PUBLIC has 19 INVALID objects.
.
PL/SQL procedure successfully completed.
Dans l’exemple de cet article, il est nécessaire d’augmenter le paramètre
shared_pool_size
à 200Mb.
Des objets utilisateur sont invalides (USER PUBLIC has 19 INVALID objects
),
mais ils l’étaient déjà avec Oracle 9i.
Le paramètre shared_pool_size
étant statique, l’instance est arrêtée et le
paramètre shared_pool_size
est modifié dans le fichier d’initialisation
$CFG/initUBXU1ORA.ora
pour appliquer la valeur minimale préconisée par le
script utlu102i.sql
.
Migration de l’instance 10.2.0.1 vers la version 10.2.0.4 (catupgrd.sql)
Pour déclencher la migration de l’instance vers la version 10.2.0.1,
l’instance est démarrée en mode UPGRADE
et le script
$ORACLE_HOME/rdbms/admin/catupgrd.sql
est exécuté.
STARTUP UPGRADE;
spool patch.log;
@?/rdbms/admin/catupgrd.sql;
spool off;
exit
Un rapport sur la statut de la migration est donné à la fin de l’exécution
du script. Lorsqu’un statut INVALID
apparaît, les erreurs doivent être
corrigées. C’est le cas dans cet exemple pratique
Oracle Database 10.2 Upgrade Status Utility 08-14-2009 09:15:59
.
Component Status Version HH:MM:SS
Oracle Database Server INVALID 10.2.0.4.0 00:22:30
.
Total Upgrade Time: 00:22:31
PL/SQL procedure successfully completed.
La recherche avec les mots clés "^Warning"
, "^ORA-"
et "^Errors for"
dans le
fichier de log de la migration permet de retrouver rapidement le(s) erreur(s)
:
shell> cat patch.log | egrep -i '^Errors for|^Warning|^ORA-'
Warning: Package Body created with compilation errors. Errors for PACKAGE BODY DBMS_SQLPA:
Dans l’exemple de cet article, une seule erreur :
LINE/COL ERROR
-------- -----------------------------------------------------------------
113/5 PL/SQL: SQL Statement ignored
118/44 PL/SQL: ORA-00904: "OTHER_XML": invalid identifier
Il n’est pas nécessaire de lancer une errorstack sur l’erreur ORA-904
qui
tombe dans cette migration, en effet cette erreur est connue et facilement
corrigée en supprimant la table SYS.PLAN_TABLE
qui ne contient pas la colonne
OTHER_XML
par rapport à la table PUBLIC.PLAN_TABLE
.
Relancer le script catupgrd.sql
après correction des erreurs jusqu’à obtenir
un statut VALID
de migration.
Oracle Database 10.2 Upgrade Status Utility 08-14-2009 09:57:09
.
Component Status Version HH:MM:SS
Oracle Database Server VALID 10.2.0.4.0 00:14:34
.
Total Upgrade Time: 00:14:35
PL/SQL procedure successfully completed.
Redémarrage en mode normal et lancement du script utlrp.sql
Dès que la migration est valide, l’instance est alors redémarrée en mode
normal et le script utlrp.sql
est exécuté pour recompiler tous les packages
PL/SQL éventuellement invalides afin que la compilation ne soit pas réalisée à
leur première exécution. Cette étape est optionnelle mais recommandée.
shutdown immediate;
startup;
spool utlrp.log;
@?/rdbms/admin/utlrp.sql;
spool off;
exit
Opérations post migration
Pour vérifier le statut valide de tous les composants après migration,
interroger la vue SYS.DBA_REGISTRY
:
select comp_name, version, status from sys.dba_registry;
COMP_NAME VERSION STATUS -------------------------------------- -------------------------- ------ Oracle Database Catalog Views 10.2.0.4.0 VALID Oracle Database Packages and Types 10.2.0.4.0 VALID
Optionnellement si RMAN
est utilisé, le catalog Oracle Recovery Manager doit
être migré :
shell> rman catalog username/password@instance
RMAN> upgrade catalog;