El Independent Automaton de Fleet Patching and Provisioning, también descrito por Oracle internamente en el contexto de FPP Local Mode, es una herramienta diseñada para realizar out-of-place patching entre dos ORACLE_HOME instalados en el mismo servidor, incluso cuando:
no existe Oracle Grid Infrastructure; no existe Oracle Restart; no existe un servidor FPP central; los Oracle Homes no son working copies; los Homes fueron instalados mediante runInstaller u otro método convencional. Oracle permite a través de esta opción que 2 ORACLE_HOME instalados y no administrados por un servidor FPP, pueden ser migrados o actualizados.
La versión disponible del FPP en modo local solo dispone de un comando:
commands: move objects: database No contiene las funciones completas de un servidor o cliente FPP, como:
rhpctl add imagerhpctl add workingcopyrhpctl query jobrhpctl deploy homerhpctl move gihomerhpctl upgrade databaserhpctl -version y esto no esta mal, ya que es el comportamiento esperado en la versión autónoma.
La herramienta identifica las bases asociadas al Home origen y las cambia al Home destino.
La sintaxis básica documentada es:
Mi escenario para este laboratorio es el siguiente:
FPP integra la ejecución de datapatch como parte del movimiento, salvo que se le indique explícitamente no hacerlo.
Un punto importante mientras no se elimine ni modifique el Home de origen, puede realizarse el movimiento inverso.
No obstante, debe distinguir entre:
retornar los binarios al Home anterior; revertir los cambios SQL aplicados por datapatch. Después de que el RU nuevo haya modificado el diccionario, el retorno no debe tratarse simplemente como un cambio de variables. El procedimiento debe considerar el rollback SQL del RU, la compatibilidad y las opciones que soporte rhpctl. Por ello, el Home anterior debe conservarse hasta completar todas las validaciones funcionales.
A continuación podrás ver el procedimiento completo para realizar el cambio o actualización que describí previamente.
[oracle@oracle-server-26ai bin]$ ./rhpctl move database -h
Moves a database from source Oracle home to the patched Oracle home.
Usage: rhpctl move database -sid -sourcehome
-desthome
[-eval]
[-ignorewcpatches]
[-stopoption ]
[-drain_timeout ]
[-datapatchargs ]
-sid
SID of Oracle Single Instance Database
-sourcehome
Source Oracle home path
-desthome
Path to destination for move of Oracle home
-eval
Evaluate without executing the command.
-ignorewcpatches
Ignores if the patched working copy is missing
some patches which are present inthe source path or working copy
-stopoption
Stop option for database:
ABORT, IMMEDIATE, NORMAL, TRANSACTIONAL, TRANSACTIONAL_LOCAL
-drain_timeout
Service drain timeout specified in seconds
-datapatchargs
Arguments to be passed to datapatch in format: "-debug -verbose ..."
LSNRCTL for Linux: Version 23.26.1.0.0 - Production on 11-JUL-2026 18:19:22
Copyright (c) 1991, 2026, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST=oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 23.26.1.0.0 - Production
Start Date 11-MAY-2026 22:02:26
Uptime 60 days 20 hr. 16 min. 55 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/26ai/network/admin/listener.ora
Listener Log File
/u01/app/oracle/diag/tnslsnr/oracle-server-26ai/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
(HOST=oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "48945b67d121c623e063399b5e6478e6" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
Service "565a6eb10875bf38e0638200000a78f6" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
Service "cdb" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
Service "cdbXDB" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
Service "pdb1" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
The command completed successfully
#### Validación de que no exista ningún inconveniente con la
#### ejecución en el llamado al autómata
#### Opción: -eval
[oracle@oracle-server-26ai bin]$ ./rhpctl move database -sid cdb -sourcehome \
/u01/app/oracle/product/26ai -desthome /u01/app/oracle/product/26.23.2 -eval
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: verifying versions of Oracle homes ...
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: verifying owners of Oracle homes ...
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: verifying groups of Oracle homes ...
-- No hay errores reportados, así que procedemos a realizar la actualización
-- del directorio y el RU.
[oracle@oracle-server-26ai bin]$ ./rhpctl move database -sid cdb -sourcehome \
/u01/app/oracle/product/26ai -desthome /u01/app/oracle/product/26.23.2
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: verifying versions of Oracle homes ...
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: verifying owners of Oracle homes ...
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: verifying groups of Oracle homes ...
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: starting to move
the following databases: "cdb"
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: restarting databases: "cdb" ...
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: SQL*Plus:
Release 23.26.1.0.0 - Production on Sat Jul 11 18:20:52 2026
Version 23.26.1.0.0Copyright (c) 1982, 2025, Oracle.
All rights reserved.Connected to:Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 -
ProductionVersion 23.26.1.0.0
SQL>
SQL> Pluggable database altered.
SQL> Disconnected from Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 -
ProductionVersion 23.26.1.0.0 :successful
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: stopping instances of databases "cdb" ...
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com: SQL*Plus: Release 23.26.1.0.0 -
Production on Sat Jul 11 18:20:52 2026Version 23.26.1.0.0Copyright (c) 1982, 2025, Oracle.
All rights reserved.Connected to:Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 -
ProductionVersion 23.26.1.0.0
SQL> Database closed.Database dismounted.ORACLE instance shut down.
SQL> Disconnected from Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 -
ProductionVersion 23.26.1.0.0 :successful
oracle-server-26ai: 2026-07-11T18:21:07Z : standalone non-GI and non-SIHA node
oracle-server-26ai: /u01/app/oracle/product/26.23.2
oracle-server-26ai:
oracle-server-26ai: cdb
oracle-server-26ai:
oracle-server-26ai: database Type:
oracle-server-26ai: trying datapatch run for cdb, attempt### 1 ###
oracle-server-26ai: datapatch command /u01/app/oracle/product/26.23.2/OPatch/datapatch
-verbose -db cdb datapatch completed successfully for database : cdb
oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com:
Completed the 'move database' operation for databases: "cdb"
Proceso indica que ha sido ejecutado correctamente.
En el archivo /etc/oratab, podemos observar que la entrada para el ORACLE_HOME
de producción ha sido actualizado.
[oracle@oracle-server-26ai bin]$ cat /etc/oratab
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by either Database Configuration Assistant while creating
# a database or ASM Configuration Assistant while creating ASM instance.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME::
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third field indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
cdb:/u01/app/oracle/product/26.23.2:N
Un detalle importante, es que la configuración del LISTENER no es modificada.
Por tanto, cuando validamos la información, vemos que aún apunta a la ruta
logs del ORACLE_HOME anterior.
Hay que reiniciar el servicio para que actualice esta ruta y libere los
archivos para poder, remover el directorio anterior.
[oracle@oracle-server-26ai bin]$ . oraenv
ORACLE_SID = [cdb] ? cdb
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@oracle-server-26ai bin]$ lsnrctl status
LSNRCTL for Linux: Version 23.26.2.0.0 - Production on 11-JUL-2026 18:35:20
Copyright (c) 1991, 2026, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST=oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 23.26.1.0.0 - Production
Start Date 11-MAY-2026 22:02:26
Uptime 60 days 20 hr. 32 min. 53 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/26ai/network/admin/listener.ora
Listener Log File
/u01/app/oracle/diag/tnslsnr/oracle-server-26ai/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
(HOST=oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "48945b67d121c623e063399b5e6478e6" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
Service "565a6eb10875bf38e0638200000a78f6" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
Service "cdb" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
Service "cdbXDB" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
Service "pdb1" has 1 instance(s).
Instance "cdb", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@oracle-server-26ai bin]$ sqlplus /nolog
SQL*Plus: Release 23.26.2.0.0 - Production on Sat Jul 11 18:35:45 2026
Version 23.26.2.0.0
Copyright (c) 1982, 2026, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
SQL> exit
Disconnected from Oracle AI Database 26ai Enterprise Edition
Release 23.26.2.0.0 - Production Version 23.26.2.0.0
[oracle@oracle-server-26ai bin]$ sqlplus /nolog
SQL*Plus: Release 23.26.2.0.0 - Production on Sat Jul 11 18:36:00 2026
Version 23.26.2.0.0
Copyright (c) 1982, 2026, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle AI Database 26ai Enterprise Edition Release 23.26.2.0.0 -
Production Version 23.26.2.0.0
[oracle@oracle-server-26ai bin]$ lsnrctl stop
LSNRCTL for Linux: Version 23.26.2.0.0 - Production on 11-JUL-2026 18:36:48
Copyright (c) 1991, 2026, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST=oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com)(PORT=1521)))
The command completed successfully
[oracle@oracle-server-26ai bin]$ lsnrctl start
LSNRCTL for Linux: Version 23.26.2.0.0 - Production on 11-JUL-2026 18:36:53
Copyright (c) 1991, 2026, Oracle. All rights reserved.
Starting /u01/app/oracle/product/26.23.2/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 23.26.2.0.0 - Production
System parameter file is /u01/app/oracle/product/26.23.2/network/admin/listener.ora
Log messages written to
/u01/app/oracle/diag/tnslsnr/oracle-server-26ai/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
(HOST=oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST=oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 23.26.2.0.0 - Production
Start Date 11-JUL-2026 18:36:53
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/26.23.2/network/admin/listener.ora
Listener Log File
/u01/app/oracle/diag/tnslsnr/oracle-server-26ai/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
(HOST=oracle-server-26ai.sub01310653110.vnc1.oraclevcn.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
[oracle@oracle-server-26ai bin]$ sqlplus /nolog
SQL*Plus: Release 23.26.2.0.0 - Production on Sat Jul 11 18:37:11 2026
Version 23.26.2.0.0
Copyright (c) 1982, 2026, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1.5717E+10 bytes
Fixed Size 5045184 bytes
Variable Size 5804916736 bytes
Database Buffers 8824815616 bytes
Redo Buffers 8855552 bytes
Vector Memory Area 1073741824 bytes
Database mounted.
Database opened.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
SQL>
SQL> select BANNER_FULL from v$version;
BANNER_FULL
--------------------------------------------------------------------------------
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.0.0 - Production
Version 23.26.2.0.0
SQL>Finalmente vamos a validar si existe algún archivo aún abierto en el ORACLE_HOME anterior
oracle@oracle-server-26ai 26.23.2]$ lsof | grep "/u01/app/oracle/product/26ai"
No hay archivos utilizando, ahora podemos borrar el directorio anterior.
[oracle@oracle-server-26ai product]$ rm -rf 26ai_delete
[oracle@oracle-server-26ai product]$ ls -alt
total 4
drwxrwx---. 3 oracle oinstall 21 Jul 11 20:00 .
drwxr-xr-x. 65 oracle oinstall 4096 Jul 11 19:55 26.23.2
drwxrwx---. 11 oracle oinstall 138 May 4 19:01 ..
No hay comentarios:
Publicar un comentario
Te agradezco tus comentarios. Te esperamos de vuelta.