Oracle
 sql >> Base de données >  >> RDS >> Oracle

Grand .patch_storage

J'ai reçu une alerte d'Enterprise Manager indiquant qu'une de mes bases de données de production manquait d'espace disque. Je l'ai suivi jusqu'à $GRID_HOME/.patch_storage qui consommait 30 Go de mon disque de 90 Go. Aïe !

La première chose que j'ai faite a été d'exécuter la routine de nettoyage d'opatch comme je l'ai documenté ici en 2013 : http://www.peasland.net/2013/03/21/patch_storage/

Malheureusement, cela n'a rien nettoyé.

Cette fois, j'ai dû recourir à un nettoyage manuel. Voici les étapes que j'ai suivies.

Les fichiers dans .patch_storage commencent par le numéro de la molécule du patch et un horodatage. Par exemple : 19582630 _Nov_14_2014_21_43_23

Je dois demander à opatch si ce patch est toujours dans l'inventaire.

$ORACLE_HOME/OPatch/opatch lsinventory|grep 19582630
20075154, 20641027, 22271856, 20548410, 19016964, 19582630

lsinventory indique que le patch est dans l'inventaire. Je passe au patch suivant.

Lorsque ma commande lsinventory ne renvoie rien, le correctif n'est pas dans l'inventaire. La note MOS 550522.1 indique que vous pouvez supprimer ce répertoire car il n'est plus nécessaire. La personnalité DBA toujours prudente en moi veut s'assurer que je peux récupérer d'une simple commande "rm -rf dir_name". Donc, je tar et gzip le répertoire d'abord, puis je supprime le répertoire.

tar cvf 25869825_Jul_3_2017_23_11_58.tar 25869825_Jul_3_2017_23_11_58

gzip 25869825_Jul_3_2017_23_11_58.tar

rm -rf 25869825_Jul_3_2017_23_11_58

Son travail minutieux le fait pour chaque patch. Je suis sûr que quelqu'un qui est meilleur que moi avec les scripts sed, awk et shell pourrait automatiser ce processus.

En suivant ces étapes, mon répertoire .patch_storage est passé de 30 Go à 11 Go.

Le trimestre suivant, lorsque j'appliquerai à nouveau mon processeur, si opatch crie au scandale et demande qu'ils soient remis en place, je peux rapidement décompresser et extraire l'archive tar et opatch devrait être content.

J'ai effectué cette opération sur $GRID_HOME mais cela fonctionnera également sur $RDBMS_HOME. De plus, comme il s'agit d'Oracle RAC, je souhaiterai peut-être le faire sur tous les nœuds du cluster.