Antes de pasar un ambiente desde (por ejemplo) un área de desarrollo a pruebas, puede que queramos comparar que parches tenemos aplicados en cada ambiente, a modo de igualar dichos ambientes. Para esto tenemos que consultar los parches tanto a nivel de base de datos, como a nivel de aplicación (si procede)
Parches en la base de datos
Esto es muy simple y lo hacemos a través del utilitario opatch. Para eso nos vamos al directorio:cd $ORACLE_HOME/OPatch
y ejecutamos el utilitario opatch con el parámetro lsinventory:
./opatch lsinventory
Así obtendremos la lista de parches instalados a nivel Oracle bastante preciso y detallado, incluyendo información de fecha en que fue aplicado y el listado de "bugs fixed".
Troubleshooting
Puede que, si tenemos varias bases de datos, no todas estén registradas en nuestro inventario y un problema común es que la ejecución anterior del utilitario opatch nos dará el siguiente error: Inventory load failed.Para resolver esto, debiesemos editar el archivo inventory.xml ubicado en $ORACLE_BASE/oraInventory/ContentsXML/ En ese archivo deberemos añadir el "HOME NAME" faltante, como en el siguiente ejemplo:
HOME NAME="ORADB11_HOME6" LOC="/u11/oracle/app/oracle/product/database/11.1.0"
TYPE="O" IDX="6"
En donde LOC tiene la ruta del ORACLE_HOME e IDX es un número secuencial de cada HOME en la lista.
Parches a nivel aplicativo
Posteriormente, en el caso que tengamos un aplicativo e-Business Suite, podemos realizar la siguiente consulta en sqlplus o en nuestro cliente sql preferido:select patch_name, applied_patch_id, patch_type, maint_pack_level, last_update_date
from applsys.ad_applied_patches
order by patch_name;
Con lo que obtendremos el listado de parches instalados a nivel aplicativo. Ojo, que puede que tengamos más de una línea con el mismo patch_name, ya que puede tener distintos applied_patch_id.
Con esta información en la mano, podemos proceder a igualar los ambientes instalando los componentes que falten en nuestro ambiente.