Patcher un dataguard

Suite au patch d’un Dataguard effectué chez un client, j’ai souhaité mettre ici la procédure utilisée. L’objectif était de patcher un Dataguard 10.2.0.3 vers un 10.2.0.5, sur un serveur Linux (Red Hat 5.3). Voici le déroulement des étapes pour arriver à patcher ce DG.

  • Récupérer le bon patch sur MyOracleSupport (Pas besoin d’aide pour ça)
  • Le décompresser
unzip pXXXXX.zip
  • Pour une installation sans interface graphique (en mode silencieux), il faut préparer le fichier de réponse, voici les principales lignes à modifier dans le fichier patchset.rsp :
FROM_LOCATION=
ORACLE_HOME=
ORACLE_HOME_NAME=
Pour ne pas configurer de compte myoraclesupport, il faut passer cette ligne à false :
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
Sinon, mettre true et modifier les 2 autres paramètres suivants :
SECURITY_UPDATES_VIA_MYORACLESUPPORT=true
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
  • Arrêter le broker
Sur la base primaire
[oracle]$ dgmgrl
DGMGRL> connect sys/password (Pour que la modification soit prise en compte sur les deux serveurs, il faut se connecter avec le user SYS)
 Connected.
 DGMGRL> disable configuration;
 Disabled.
 DGMGRL> exit
Sur les deux bases
[oracle]$ sqlplus / as sysdba
SQL> alter system set dg_broker_start=false;
 System altered.
 SQL> exit
  • Arrêter les instances et le listener
Sur les deux serveurs
[oracle]$ lsnrctl stop
[oracle]$ sqlplus / as sysdba
SQL>SHUTDOWN IMMEDIATE;
  • Lancer le patch en silent mode
Sur la primaire, et ensuite la standby
[oracle]$ ./runInstaller -silent -responseFile ./response/patchset.rsp
  • A la fin de l’installation, exécuter le script root.sh avec le user root, sur chacun des deux serveurs:
WARNING:
 The following configuration scripts need to be executed as the "root" user.
 #!/bin/sh
 #Root script to run
 PATH/root.sh
 To execute the configuration scripts:
 1. Open a terminal window
 2. Log in as "root"
 3. Run the scripts
  • Démarrer le listener des deux côtés
Sur les deux serveurs
[oracle]$ lsnrctl start
  • Monter la standby
[oracle]$ sqlplus / as sysdba
SQL> STARTUP MOUNT
  • Démarrer la base primaire en upgrade et exécuter le script catupgrd.sql :
[oracle]$ sqlplus / as sysdba
SQL> STARTUP UPGRADE
 SQL> SPOOL patch.log
 SQL> @?/rdbms/admin/catupgrd.sql
 SQL> SPOOL OFF
  • Vérifier les logs, pour voir s’il n’y a pas d’erreurs
[oracle]$ cat patch.log
  • Redémarrer la primaire normalement, recompiler les objets invalides et vérifier que le patch a correctement été appliqué
[oracle]$ sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP
SQL>@?/rdbms/admin/utlrp.sql
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
COMP_NAME
 --------------------------------------------------------------------------------
 VERSION STATUS
 ------------------------------ --------------------------------------------
 Oracle Database Catalog Views
 10.2.0.5.0 VALID
Oracle Database Packages and Types
 10.2.0.5.0 VALID
Oracle Workspace Manager
 10.2.0.5.0 VALID
  • Reactiver le Broker
Sur les deux bases
[oracle]$ sqlplus / as sysdba
SQL> alter system set dg_broker_start=true;
 System altered.
 SQL> exit
  • Réactiver le Dataguard
Sur la primaire
[oracle]$ dgmgrl
DGMGRL> connect sys/password (Avec le user SYS)
 Connected.
 DGMGRL> enable configuration;
 Disabled.
 DGMGRL> exit
  • Vérifier la configuration du Dataguard
Sur la primaire
[oracle]$ dgmgrl
DGMGRL> connect /
 Connected.
DGMGRL>  show configuration ;
Configuration
 Name:                	name
 Enabled: YES
 Protection Mode:     	MaxPerformance
 Fast-Start Failover: 	DISABLE
 Databases:
   primary - Physical standby database
   standby - Primary database
Current status for "name":
SUCCESS
  • Verifier que les archivelogs s’appliquent correctement sur la standby , via le fichier d’alert.log
  • Il se peut que le fichier ContentsXML contienne deux déclarations différentes au niveau des patchset : 10.2.0.3 et 10.2.0.5. Si vous utilisez grid control, il risque d’y avoir des messages d’erreur,il faut donc supprimer cette balise.
Sauvegarder le fichier <Database_Oracle_Home>/inventory/ContentsXML/comps.xml
Modifiez le, il devrait y avoir deux balises PATCHSET :
<PATCHSET NAME="oracle.patchset.db" VER="10.2.0.3.0"...>
...
</PATCHSET>
<PATCHSET NAME="oracle.patchset.db" VER="10.2.0.5.0"...>
...
</PATCHSET>
Supprimer le contenu de la première balise.
  • Patch terminé