Aplicar parches es una tarea regular, dentro de la lista de actividades de todo DBA, y que implica conectarse a la página de My Oracle Support y seguir los siguientes pasos:
1. Ir a la pestaña [Patches & Updates].
2. Ingresar el número de parche.
3. Seleccionar la plataforma.
4. Presionar el botón [Search].
5. Seleccionar, de entre la lista de resultados, el parche asociado a la versión de Oracle a la que lo vamos a aplicar.
6. Presionar el botón [Download]/span>.
7. Darle click al link.
Si bien no es cosa complicada, imagínate que necesitas descargar una veintena de parches, y tienes que repetir estos 7 pasos una y otra vez!
Afortunadamente hay un método más rápido y eficiente de hacerlo.
getMOSPatch al rescate
Maris Elsins se tomó la molestia de confeccionar un programa en Java que simplifica y acelera la descarga de parches: getMOSPatch.
Sin más rodeos, veamos como usarlo:
a. Descargarlo desde GitHub.
wget "https://github.com/MarisElsins/getMOSPatch/raw/master/getMOSPatch.jar" -q
java -jar getMOSPatch.jar \
MOSUser=enrique@gmail.com \
MOSPass=Oracle_4U$ \
patch=36285197 \
regexp=".*1923000.*" \
platform=226P \
stagedir="/stage"
download=all
Noten que se ha proporcionado como parámetros el usuario (MOSUser) y contraseña (MOSPass) con el que nos conectamos a My Oracle Support; el número de parche (patch); el RU deseado (regexp); la plataforma (platform); y el directorio en el que deseamos que se descargue (stagedir).
Si se requiere de varios parches, simplemente los separamos con comas, teniendo cuidado de no dejar espacios en blanco entre ellos; igual con las plataformas.
Sobre la plataforma, los valores más comunes son:
23P | Oracle Solaris on SPARC (64-bit) |
212P | IBM AIX on POWER Systems (64-bit) |
226P | Linux x86-64 |
233P | Microsoft Windows x64 (64-bit) |
Ejemplo definitivo
Imaginemos que deseamos aplicar el último Release Update (19.23) a nuestras instalaciones con Oracle 19c, junto con algunos parches recomendados (nota 555.1 en MOS) y la versión más reciente de OPatch, tanto para AIX como para Linux, de acuerdo a la siguiente lista:
36233263 | Database release update 19.3.0.0.0 | |
36195566 | JDK bundle patch 19.0.0.0.240416 | |
36199232 | OJVM release update 19.23.0.0.0 | |
36420641 | DATAPUMP BUNDLE PATCH 19.23.0.0.0 | |
33427856 | Gathering statistics for indexes on large tables in 19c may be time-consuming | |
6880880 | OPatch 12.2.0.1.42 for DB 19.0.0.0.0 |
Solo los one-off están asociados al RU 19.23, mientras que el resto de parches no dependen del RU sino que están asociados con 19c en sí, por lo que se va a requerir de 2 llamados a getMOSPatch, con distintos valores para regexp:
$ java -jar getMOSPatch.jar patch=36233263,36195566,36199232,6880880 regexp=".*19000.*" platform=212P,226P download=all
Downloading all selected files:
Downloading /stage/p36233263_190000_AIX64-5L.zip: 1874MB at average speed of 1872KB/s - DONE!
Downloading /stage/p36233263_190000_Linux-x86-64.zip: 1770MB at average speed of 25265KB/s - DONE!
Downloading /stage/p36195566_190000_AIX64-5L.zip: 153MB at average speed of 3582KB/s - DONE!
Downloading /stage/p36195566_190000_Linux-x86-64.zip: 120MB at average speed of 24018KB/s - DONE!
Downloading /stage/p36199232_190000_AIX64-5L.zip: 125MB at average speed of 2822KB/s - DONE!
Downloading /stage/p36199232_190000_Linux-x86-64.zip: 121MB at average speed of 25612KB/s - DONE!
Downloading /stage/p6880880_190000_AIX64-5L.zip: 168MB at average speed of 7825KB/s - DONE!
Downloading /stage/p6880880_190000_Linux-x86-64.zip: 127MB at average speed of 19238KB/s - DONE!
$ java -jar getMOSPatch.jar patch=36420641,33427856 regexp=".*1923000.*" platform=212P,226P download=all
Downloading all selected files:
Downloading /stage/p36420641_1923000DBRU_Generic.zip: 2MB at average speed of 2947KB/s - DONE!
Downloading /stage/p33427856_1923000DBRU_Generic.zip: 0MB at average speed of 848KB/s - DONE!
Por simplicidad se ha obviado mostrar algunos parámetros, como MOSUser y MOSPass.
El resultado final es:
$ ls -l /stage
total 9257664
-rw-r--r-- 160694091 Jun 30 p36195566_190000_AIX64-5L.zip
-rw-r--r-- 126843335 Jun 30 p36195566_190000_Linux-x86-64.zip
-rw-r--r-- 131554204 Jun 30 p36199232_190000_AIX64-5L.zip
-rw-r--r-- 127475677 Jun 30 p36199232_190000_Linux-x86-64.zip
-rw-r--r-- 1965829022 Jun 30 p36233263_190000_AIX64-5L.zip
-rw-r--r-- 1856311021 Jun 30 p36233263_190000_Linux-x86-64.zip
-rw-r--r-- 176769223 Jun 30 p6880880_190000_AIX64-5L.zip
-rw-r--r-- 133535622 Jun 30 p6880880_190000_Linux-x86-64.zip
-rw-r--r-- 519356 Jun 30 p33427856_1923000DBRU_Generic.zip
-rw-r--r-- 2670772 Jun 30 p36420641_1923000DBRU_Generic.zip
¿Qué les pareció? Sin dudas getMOSPatch nos va aliviar el dolor de cabeza de tener que descargar múltiples parches. Ahora solo tenemos que tomar nota de los números de parche que necesitamos y listo, en minutos los tendremos disponibles para aplicarlos en toda nuestra infraestructura de Oracle!