DBAtlas · Atlas d'exploitation des bases de données

Mettre à jour la couche SQL avec datapatch -verbose après un patch binaire

OraclePatchs et cycle de vie

Commande

# 1) After the binary patch (opatch apply), start the DB; all PDBs must be open:
sqlplus / as sysdba <<EOF
STARTUP;
ALTER PLUGGABLE DATABASE ALL OPEN;
EXIT;
EOF

# 2) Check only first, then apply:
cd $ORACLE_HOME/OPatch
./datapatch -prereq
./datapatch -verbose
# For specific PDBs: ./datapatch -verbose -pdbs PDB1,PDB2

# 3) Recompile invalid objects:
sqlplus / as sysdba @?/rdbms/admin/utlrp.sql

# Logs: $ORACLE_BASE/cfgtoollogs/sqlpatch/

Ce que fait la commande

datapatch applique les composants SQL/PL-SQL (dictionnaire, packages) des patchs binaires de l'Oracle Home à la CDB root, à PDB$SEED et à toutes les PDB ouvertes, et consigne le résultat dans DBA_REGISTRY_SQLPATCH. Il annule aussi la partie SQL des patchs retirés.

Quand l'utiliser

Après chaque patch binaire RU/RUR/one-off ou son retrait ; pour les PDB déplacées ou débranchées/branchées dans un home nouvellement patché ; et pour le relancer lorsque DBA_REGISTRY_SQLPATCH affiche WITH ERRORS.

Attention

Les PDB fermées ou MOUNTED ne sont pas patchées et peuvent s'ouvrir en mode RESTRICTED ; ouvrez-les toutes d'abord. Ne l'exécutez pas sous forte charge (verrous du dictionnaire, invalidation de packages). En RAC, exécutez-le une seule fois depuis un seul nœud. Avec Data Guard, exécutez datapatch uniquement sur la primaire ; les changements atteignent la standby via le redo (patchez d'abord les binaires de la standby).

Ouvrir dans DBAtlas →

Voir aussi