CONCEPTOS BÁSICOS
(REF: https://www.oracle.com/technetwork/es/articles/database-performance/aplicar-parche-oracle-dbaas-3338001-esa.html)
¿Qué
es un “Security Patch Update (SPU)”?
Es un parche que tiene reparaciones (fixes) que hacen frente a vulnerabilidades
de seguridad. Estos parches son acumulativos, lo cual quiere decir que por
ejemplo el SPU de abril contiene los “fixes” tanto del SPU de enero y también
los nuevos de abril, y así sucesivamente. Los SPU poseen siempre la cualidad
que pueden ser instalados de manera “Rolling” (un nodo a la vez) en ambientes
de “RAC” y también poseen la cualidad que pueden ser instalados primero en un
ambiente “Standby” (Standby First Installable).
¿Qué
es un Patch Set Updates (PSU)?
Los PSU son muy importantes pues poseen las reparaciones (fixes) a los “bugs”
de muy alto riesgo o “bugs” de poco riesgo que poseen los binarios de la base
de datos, pero también incluye todos los “fixes” para las vulnerabilidades de
seguridad que son incluidos en el SPU. Básicamente el SPU está incluido en el
PSU. Estos parches también son acumulativos. Lo cual quiere decir, que todas
las reparaciones (fixes) de los “bugs” en los binarios de Oracle que fueron
incluidos en el PSU de enero también son incluidos en el PSU de abril.
¿Qué
es un “Bundle Patch (BP)”? Estos
parches son creados para un producto en específico o un componente en
específico. Son parches aún más completos que los PSU, poseen todos los “fixes”
que han sido incluidos en los PSU y otros “fixes” más. Estos parches no son
liberados con el mismo comportamiento que los PSU o SPU, lo cual quiere decir
que pueden ser liberados de manera aún más frecuente que los PSU y SPU o puede
ser que sean menos frecuentemente liberados.
¿Qué es un “Interim Patch”? En el pasado se les
conocía como “One-Off Patch”, estos parches son muy particulares. Básicamente
son parches que Oracle desarrolla para un problema (bug) en específico que
tiene un cliente en particular. Por lo mismo que son desarrollados para una
situación de un cliente en particular es que estos parches son creados bajo
demanda.
¿Por qué aplicar un Parche?
Independientemente al tipo de parche que se
esté aplicando ya sea un “SPU”, “PSU” o “BP” , todos en general son útiles y
ayudan a que nuestra base de datos esté protegida ante las vulnerabilidades de
seguridad o ante problemas en los binarios (bugs). Es por eso que aplicar
parches es una tarea fuertemente recomendada y que todo Administrador de base
de datos debería de hacer trimestralmente (en el mejor de los casos) para
evitarse problemas reactivos y así apoyar a la continuidad de negocio que las
compañías de ahora requieren. Sin embargo, esta tarea no es tan fácil
como parece, requiere de mucha planificación, también la involucración de
expertos de otras áreas tales como de sistema operativo, de las aplicaciones,
entre otros. Dependiendo del tipo de parche que se esté aplicando algunas
veces se requiere “Downtime” (Tiempo en que los sistemas no están funcionando),
esto puede ser mitigado si se está utilizando una base de datos en “RAC” pues
así podríamos utilizar el método de “un nodo a la vez” (Rolling), pero cuando
no, la instancia de nuestra base de datos de tipo “Single Instance” debe ser
cerrado para poder aplicar el parche. Pero no solamente eso, también se
requiere que los archivos del parche sean descargados desde “My Oracle
Support”, dichos archivos deben ser transferidos hacia el servidor en donde se
tiene la base de datos en donde queremos aplicar el parche, algunas veces se
requiere una nueva versión de la herramienta “OPatch” por lo que también hay
que descargarla y transferir dichos archivos hacia el servidor de le datos,
luego se tiene que validar conflictos de parches (cuando la base de datos ya
tiene otros parches aplicados), resolver dichos conflictos, coordinar con las
otras áreas del negocio la actividad y finalmente aplicar el parche, y un paso
más, validar el parche y algunas veces algunos pasos “post-parchado”. ¿Ahora no
suena tan sencillo? ¿Y si a todo esto le agregamos el error humano? Dado que
todas estas tareas son realizadas manualmente se requiere unas personas con
mucha experiencia en este tipo de actividades, mucha atención a los detalles y
cuidado al ejecutar cada paso, con el objetivo de mitigar la probabilidad del
error.
RUTA DE DESCARGAS DE PARCHES
·
En la
anterior ruta de Oracle soporte, se puede encontrar los parches por cada una de
sus versiones.
Se debe
seleccionar para las versiones anteriores o igual a 12.1.0.2 la siguiente
opcion “Oracle Database PSU, SPU(CPU),
Bundle Patches (Versions 12.1 & lower)”
Seleccionar la versión respectiva del motor de
oracle
Inmediatamente seleccionado la versión del motor, automáticamente se
despliega el cuadro de PSU por número de PSU, por fecha, por tipo de sistema
operativo y si es para GRID o para DB.
Después de seleccionado el número de PSU a aplicar, se nos despliega
la opción de sistemas operativos con sus respectivas características de tamaño,
fecha de update, etc.
Al
seleccionar el parche a descargar, el MOS nos despliega la ventana de descarga
del parche, dar clic sobre el boton Dowload
Inmediatamente, MOS nos muestra el PSU a descargar y nos da
la opción de seleccionarlo para empezar de forma inmediata la descarga.
·
IDENTIFICAMOS EL SERVER Y LA INSTANCIA DE LA DB
A LA CUAL APLICAR EL PSU
SYS@ora01> select instance_name from v$instance;
INSTANCE_NAME
----------------
ora01
SYS@ora01> !hostname;
procbsedb01fsa
·
IDENTIFICAMOS LA VERSION DE LA DB
SYS@ora01> select version from v$instance;
VERSION
-----------------
11.2.0.4.0
·
IDENTIFICAMOS LA VERSION DEL SISTEMAS OPERATIVOS
DEL SERVER
oracle@xxxxxxxx:ora01 [/opt/oracle/oracle] $uname -a
Linux xxxxxxxxx 3.0.101-0.47.90.1.12144.2.PTF-default #1 SMP Tue Dec
20 16:00:07 UTC 2016 (85592bb) x86_64 x86_64 x86_64 GNU/Linux
·
IDENTIFICAR LAS VARIABLES DE ENTORNO DE $ORACLE_HOME PARA GRID Y
ORACLE
oracle = /oracle/app/product/11gR2/db
Grid = /opt/oracrs/product/11gR2/grid
·
IDENTIFICAR LA RUTA DE LOS MEDIOS DE INSTALACION
Identifique la ruta donde ubico los
archivos del PSU descargados en el punto 12.1 dentro del servidor en el cual se
va aplicar el parche, tenga en cuenta que es necesario concederle permisos
según el tipo de usuario a ejecutar el parcheo.
Ejemplo:
GRID = /opt/oracle/medios/GRID
Database = /opt/oracle/medios/ORACLE
·
IDENTIFICAMOS LAS ULTIMAS EJECUCIONES DE PARCHES
SOBRE LA DB
ORACLE 11
SET LINESIZE 180 PAGESIZE 90;
COLUMN FECHA FORMAT A18;
COLUMN action FORMAT A20;
COLUMN version FORMAT A10;
COLUMN comments FORMAT A30;
COLUMN bundle_series FORMAT A10;
SELECT TO_CHAR(action_time, 'YYYY-MM-DD HH24:MI') AS FECHA, action, namespace,
version, comments, bundle_series FROM sys.registry$history ORDER by
action_time;
FECHA
ACTION
NAMESPACE VERSION COMMENTS BUNDLE_SER
------------------ --------------------
------------------------------ ---------- ------------------------------
----------
2017-03-15 13:02
APPLY SERVER 11.2.0.4 PSU 11.2.0.4.8 PSU
ORACLE 12
SET LINESIZE 180 PAGESIZE 90
COLUMN FECHA FORMAT A15
COLUMN action FORMAT A8
COLUMN status FORMAT A8
COLUMN description FORMAT A50
COLUMN version FORMAT A9
COLUMN bundle_series FORMAT A10
SELECT TO_CHAR(action_time, 'YYYY-MM-DD HH24:MI:SS') AS action_time, action, status,
description, version, patch_id, bundle_series FROM sys.dba_registry_sqlpatch ORDER by
action_time;
ACTION_TIME
ACTION STATUS DESCRIPTION VERSION PATCH_ID BUNDLE_SER
------------------- -------- --------
-------------------------------------------------- --------- ----------
----------
2019-09-02 15:59:57 APPLY SUCCESS
DATABASE JUL 2019 RELEASE UPDATE 12.2.0.1.190716 12.2.0.1
29757449 DBRU
·
Verificamos
los componentes de la DB
SET PAUSE ON;
SET PAUSE 'Press Return to Continue';
SET PAGESIZE 60;
SET LINESIZE 300;
SET VERIFY OFF;
COL comp_name FOR a44 HEA 'Component';
COL version FOR a17 HEA 'Version';
COL status FOR a17 HEA 'Status';
SELECT comp_name, version, status FROM dba_registry
/
Press Return to Continue;
Component
Version Status
-------------------------------------------- -----------------
-----------------
Oracle Database Catalog Views 11.2.0.4.0 VALID
Oracle Database Packages and Types 11.2.0.4.0 VALID
Oracle Workspace Manager 11.2.0.4.0 VALID
·
Verificación
de objetos inválidos antes de la ejecución del parche
select OWNER,OBJECT_NAME,OBJECT_TYPE,STATUS from dba_objects
where OWNER not in ('SYS','SYSTEM') and status = 'INVALID'
order by OWNER,OBJECT_TYPE,OBJECT_NAME;
Con usuario ORACLE O CON USUARIO GRID dependiendo el nivel de parchado
solicitado
·
Verificar
la version del OPatch igual o superior 11.2.0.3.6
PARA GRID :
grid@procbsedb01fsa:+ASM
[/opt/oracrs/product/11gR2/grid/OPatch] $./opatch version
OPatch Version: 11.2.0.3.12
PARA ORACLE:
oracle@procbsedb01fsa:ora01
[/oracle/app/product/11gR2/db/OPatch] $./opatch version
OPatch Version: 11.2.0.3.12
·
Configuración
o validación del OCM
oracle@prodcbsbfsa:ora01
[/oracle/app/product/11gR2/db/OPatch/ocm/bin] $./emocmrsp -no_banner -output
$ORACLE_HOME/OPatch/ocm.rsp
Provide your email
address to be informed of security issues, install and
initiate Oracle
Configuration Manager. Easier for you if you use your My
Oracle Support
Email address/User Name.
Visit http://www.oracle.com/support/policies.html
for details.
Email address/User
Name:
You have not
provided an email address for notification of security issues.
Do you wish to
remain uninformed of security issues ([Y]es, [N]o) [N]: y
The OCM
configuration response file (/oracle/app/product/11gR2/db/OPatch/ocm.rsp) was
successfully created.
·
Validación
de posibles conflictos entre el parche y la actual instalación
PARA GRID :
./opatch prereq CheckConflictAgainstOHWithDetail -ph
/opt/oracle/medios/GRID/28429134
Oracle Interim
Patch Installer version 11.2.0.3.12
Copyright (c) 2019, Oracle
Corporation. All rights reserved.
PREREQ session
Oracle Home : /opt/oracrs/product/11gR2/grid
Central Inventory : /opt/oraInventory
from :
/opt/oracrs/product/11gR2/grid/oraInst.loc
OPatch version : 11.2.0.3.12
OUI version : 11.2.0.4.0
Log file location :
/opt/oracrs/product/11gR2/grid/cfgtoollogs/opatch/opatch2019-08-14_15-53-02PM_1.log
Invoking prereq
"checkconflictagainstohwithdetail"
Prereq
"checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
PARA ORACLE:
oracle@procbsedb01fsa:ora01
[/opt/oracle/medios] $ORACLE_HOME/OPatch/./opatch prereq
CheckConflictAgainstOHWithDetail -ph /opt/oracle/medios/ORACLE/28204707
Oracle Interim
Patch Installer version 11.2.0.3.12
Copyright (c) 2019, Oracle
Corporation. All rights reserved.
PREREQ session
Oracle Home : /oracle/app/product/11gR2/db
Central Inventory : /opt/oraInventory
from
: /oracle/app/product/11gR2/db/oraInst.loc
OPatch version : 11.2.0.3.12
OUI version : 11.2.0.4.0
Log file location :
/oracle/app/product/11gR2/db/cfgtoollogs/opatch/opatch2019-08-13_16-34-23PM_1.log
Invoking prereq
"checkconflictagainstohwithdetail"
Prereq
"checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
· validación de espacio del sistema para
la ejecución del parche
Creamos el archivo de validación de los parches internos componentes del
PSU
PARA GRID :
vi /tmp/patch_list_gihome_grid.txt
/opt/oracle/medios/GRID/28429134/28204939
/opt/oracle/medios/GRID/28429134/28204707
/opt/oracle/medios/GRID/28429134/27735020
./opatch
prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome_grid.txt
Oracle Interim Patch Installer version
11.2.0.3.12
Copyright (c) 2019, Oracle
Corporation. All rights reserved.
PREREQ session
Oracle Home : /opt/oracrs/product/11gR2/grid
Central Inventory : /opt/oraInventory
from :
/opt/oracrs/product/11gR2/grid/oraInst.loc
OPatch version : 11.2.0.3.12
OUI version : 11.2.0.4.0
Log file location :
/opt/oracrs/product/11gR2/grid/cfgtoollogs/opatch/opatch2019-08-15_14-40-37PM_1.log
Invoking prereq
"checksystemspace"
Prereq "checkSystemSpace"
passed.
OPatch succeeded.
PARA ORACLE:
vi
/tmp/patch_list_gihome.txt
/opt/oracle/medios/ORACLE/28204707/28204939
/opt/oracle/medios/ORACLE/28204707/28204707
/opt/oracle/medios/ORACLE/28204707/27735020
oracle@procbsedb01fsa:ora01
[/oracle/app/product/11gR2/db/OPatch] $./opatch prereq CheckSystemSpace
-phBaseFile /tmp/patch_list_gihome.txt
Oracle Interim Patch Installer version
11.2.0.3.12
Copyright (c) 2019, Oracle
Corporation. All rights reserved.
PREREQ session
Oracle Home : /oracle/app/product/11gR2/db
Central Inventory : /opt/oraInventory
from :
/oracle/app/product/11gR2/db/oraInst.loc
OPatch version : 11.2.0.3.12
OUI version : 11.2.0.4.0
Log file location :
/oracle/app/product/11gR2/db/cfgtoollogs/opatch/opatch2019-08-13_16-42-37PM_1.log
Invoking prereq
"checksystemspace"
Prereq "checkSystemSpace"
passed.
OPatch succeeded.
Validación del Oracle Inventory
PARA GRID :
grid@procbsedb01fsa:+ASM
[/opt/oracrs/product/11gR2/grid/OPatch] $./opatch lsinventory -detail -oh
/opt/oracrs/product/11gR2/grid
Oracle Interim
Patch Installer version 11.2.0.3.12
Copyright (c) 2019,
Oracle Corporation. All rights reserved.
Oracle Home : /opt/oracrs/product/11gR2/grid
Central Inventory :
/opt/oraInventory
from :
/opt/oracrs/product/11gR2/grid/oraInst.loc
OPatch version : 11.2.0.3.12
OUI version : 11.2.0.4.0
Log file location :
/opt/oracrs/product/11gR2/grid/cfgtoollogs/opatch/opatch2019-08-13_14-14-06PM_1.log
Lsinventory Output
file location :
/opt/oracrs/product/11gR2/grid/cfgtoollogs/opatch/lsinv/lsinventory2019-08-13_14-14-06PM.txt
--------------------------------------------------------------------------------
Local Machine
Information::
Hostname:
procbsedb01fsa
ARU platform id:
226
ARU platform
description:: Linux x86-64
Installed Top-level
Products (1):
Oracle Grid
Infrastructure 11g 11.2.0.4.0
There are 1 products
installed in this Oracle Home.
Installed Products
(89):
Agent Required
Support Files
10.2.0.4.5
Assistant Common
Files 11.2.0.4.0
Automatic Storage
Management Assistant 11.2.0.4.0
Bali Share
1.1.18.0.0
Buildtools Common
Files
11.2.0.4.0
Character Set
Migration Utility 11.2.0.4.0
Cluster Ready
Services Files
11.2.0.4.0
Cluster
Verification Utility Common Files 11.2.0.4.0
Cluster Verification
Utility Files 11.2.0.4.0
Database SQL
Scripts
11.2.0.4.0
Deinstallation
Tool
11.2.0.4.0
Enterprise Manager
Common Core Files 10.2.0.4.5
Enterprise Manager
Common Files
10.2.0.4.5
Enterprise Manager
plugin Common Files 11.2.0.4.0
PARA ORACLE:
Oracle Interim
Patch Installer version 11.2.0.3.12
Copyright (c) 2019,
Oracle Corporation. All rights reserved.
Oracle Home : /oracle/app/product/11gR2/db
Central Inventory :
/opt/oraInventory
from :
/oracle/app/product/11gR2/db/oraInst.loc
OPatch version : 11.2.0.3.12
OUI version : 11.2.0.4.0
Log file location :
/oracle/app/product/11gR2/db/cfgtoollogs/opatch/opatch2019-08-15_14-50-33PM_1.log
Lsinventory Output
file location :
/oracle/app/product/11gR2/db/cfgtoollogs/opatch/lsinv/lsinventory2019-08-15_14-50-33PM.txt
--------------------------------------------------------------------------------
Local Machine
Information::
Hostname:
procbsedb01fsa
ARU platform id:
226
ARU platform
description:: Linux x86-64
Installed Top-level
Products (1):
Oracle Database
11g 11.2.0.4.0
There are 1
products installed in this Oracle Home.
Installed Products
(136):
Agent Required
Support Files
10.2.0.4.5
Assistant Common
Files 11.2.0.4.0
Bali Share
1.1.18.0.0
Buildtools Common
Files
11.2.0.4.0
Character Set
Migration Utility 11.2.0.4.0
Cluster
Verification Utility Common Files 11.2.0.4.0
Database
Configuration and Upgrade Assistants 11.2.0.4.0
Database SQL
Scripts
11.2.0.4.0
Database Workspace
Manager
11.2.0.4.0
Deinstallation
Tool
11.2.0.4.0
Enterprise Edition
Options 11.2.0.4.0
Enterprise Manager
Agent
10.2.0.4.5
Enterprise Manager
Agent Core Files 10.2.0.4.5
Enterprise Manager
Common Core Files 10.2.0.4.5
Identifique la ruta donde va a
tener los ejecutables del parche, esta ruta debe tener los permisos específicos
para los respectivos usuarios de ejecucion del mismo. (GRID u ORACLE)
oracle@procdb01fsa:ora01
[/opt/oracle/medios] $pwd
/opt/oracle/medios
oracle@procbs01fsa:ora01
[/opt/oracle/medios] $ll
total 914300
drwxr-xr-x 5 oracle oinstall 4096 Oct 10 2018 28429134
-rw-r--r-- 1 oracle oinstall
935171743 Aug 13 14:55 p28429134_112040_Linux-x86-64.zip
-rw-rw-r-- 1 oracle oinstall 143080 Nov
1 2018 PatchSearch.xml
·
Detener el Golden Gate (En caso de tener el servicio de réplica por Golden)
gg
info all
stop mgr
stop *
start mgr
start *
si no queda stoped = kill extract
GRUPO
·
Detener la DATABASE
$ORACLE_HOME/bin/srvctl stop database –d ora01
·
Detener el LISTENER
lsnrctl stop
Detener el DATAGUARD (En caso de tener el
servicio de replica por DATAGUARD)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Se debe ejecutar como usuario ROOT
Para
GRID:
cd /opt/oracrs/product/11gR2/grid/OPatch
./opatch auto 28429134/ -oh /opt/oracrs/product/11gR2/grid -ocmrf
/oracle/app/product/11gR2/db/OPatch/ocm.rsp
Para
ORACLE:
Cambiar a usuario de oracle
cd /oracle/app/product/11gR2/db/OPatch
./opatch apply 28429134/ -oh /oracle/app/product/11gR2/db -ocmrf
/oracle/app/product/11gR2/db/OPatch/ocm.rsp
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT
-
Iniciar Golden Gate
gg
info all
start mgr
start *
info all
** Validar sincronización
de golden gate **
info all
-
Iniciar Dataguard
ALTER DATABASE RECOVER MANAGED
STANDBY DATABASE DISCONNECT FROM SESSION PARALLEL 8;
ALTER DATABASE RECOVER MANAGED
STANDBY DATABASE DISCONNECT FROM SESSION;
-
Arrancar base de datos
srvctl start database -d ora01
-
Compilar objetos invalidos
cd
$ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT /
AS SYSDBA
SQL> @utlrp.sql
$ORACLE_HOME/OPatch/./opatch lspatches
sqlplus / as sysdba
SET LINESIZE 180
PAGESIZE 90
COLUMN FECHA FORMAT
A18
SYS@ora01>
SYS@ora01> COLUMN action FORMAT A20
SYS@ora01> COLUMN
version FORMAT A10
SYS@ora01> COLUMN
comments FORMAT A30
SYS@ora01> COLUMN
bundle_series FORMAT A10
SYS@ora01> SELECT
TO_CHAR(action_time, 'YYYY-MM-DD HH24:MI') AS FECHA,
action,
namespace,
version,
comments,
bundle_series
FROM
sys.registry$history
ORDER by action_time;
FECHA ACTION NAMESPACE VERSION COMMENTS BUNDLE_SER
2017-03-15
3:02 APPLY SERVER 11.2.0.4 PSU 11.2.0.4.8 PSU
oracle@proprd01a:ora01 [/home/oracle] $cd
$ORACLE_BASE/cfgtoollogs/catbundle
oracle@proprd01a:ora01 [/opt/oracle/cfgtoollogs/catbundle] $ll
total 712
-rw-r----- 1 oracle oinstall
7771 Mar 30 2017 catbundle_PSU_VDSDB_APPLY_2017Mar30_02_54_21.log
-rw-r--r-- 1 oracle oinstall 625921 Jul 11 23:25
catbundle_PSU_VDSDB_APPLY_2019Jul11_23_25_44.log
-rw-r--r-- 1 oracle oinstall
3757 Jul 11 23:37 catbundle_PSU_VDSDB_APPLY_2019Jul11_23_37_25.log
-rw-r----- 1 oracle oinstall
3435 Mar 30 2017
atbundle_PSU_VDSDB_GENERATE_2017Mar30_02_54_20.log
-rw-r--r-- 1 oracle oinstall
23939 Jul 11 23:24 catbundle_PSU_VDSDB_GENERATE_2019Jul11_23_24_04.log
-rw-r--r-- 1 oracle oinstall
28562 Jul 11 23:25 catbundle_PSU_VDSDB_GENERATE_2019Jul11_23_25_44.log
-rw-r--r-- 1 oracle oinstall
28562 Jul 11 23:37 catbundle_PSU_VDSDB_GENERATE_2019Jul11_23_37_24.log
Con usuario de Oracle
rman target /
RMAN target /
catalog catrman/CATRMAN_1102@CATALOGO
UPGRADE CATALOG;