Modificar UNDO_RETENTION a nivel de PDB en Active Data Guard

¿Qué es UNDO_RETENTION? UNDO_RETENTION es un parámetro de la base de datos Oracle que determina el período de retención de los datos de UNDO. Estos datos de UNDO son esenciales para operaciones como:

  • Transacciones en curso: Permiten revertir cambios en caso de que se produzcan errores.

  • Consultas consistentes: Garantizan que las consultas de larga duración tengan una vista consistente de los datos, incluso si se están produciendo cambios en ellos.

  • Flashback: Facilitan el uso de tecnologías de recuperación como Flashback Query para restaurar datos a un estado anterior sin necesidad de recuperación completa.

Cuando modificamos el parámetro UNDO_RETENTION en la base de datos primaria a nivel de PDB, este cambio debe propagarse automáticamente a la base de datos standby debido a la replicación continua de datos entre ambas bases de datos en una configuración de Active Data Guard.

Para ello primero haremos el cambio en la primaria:


[oracle@rac-xxx-001 ~]$ pdb_variables
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@rac-xxx-001 ~]$ sql

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jul 12 12:30:05 2024
Version 19.22.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.22.0.0.0

SQL> sho parameter undo_retention
NAME                     TYPE                      VALUE
------------------------------------ -------------------------------------------- ------------------------------
undo_retention                 integer                      21600


SQL> alter system set undo_retention=604800 scope=both sid='*';

SQL> sho parameter undo_retention
NAME                     TYPE                      VALUE
------------------------------------ -------------------------------------------- ------------------------------
undo_retention                 integer                      604800


[oracle@rac-xxx-001 ~]$ cdb_variables
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@rac-xxx-001 ~]$ sql

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jul 12 12:30:43 2024
Version 19.22.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.22.0.0.0

SYS@cdbxxx> alter system switch logfile;

System altered.

SYS@cdbgxxx>  alter system switch logfile;

System altered.

SYS@cdbxxx>  alter system switch logfile;

System altered.

Posteriormente paramos y arrancamos la PDB para ver los cambios efectuados. No se aplican a la configuración actual, es necesario reiniciarla.


SQL> alter session set container=PDB_ESQUEMA;

Session altered.

SQL> sho parameter undo_retention
NAME                     TYPE                      VALUE
------------------------------------ -------------------------------------------- ------------------------------
undo_retention                 integer                      21600


SQL> alter pluggable database close instances=all;

Pluggable database altered.

SQL> alter pluggable database open instances=all;

Pluggable database altered.

SQL> sho parameter undo_retention

NAME                     TYPE                      VALUE
------------------------------------ -------------------------------------------- ------------------------------
undo_retention                 integer                      604800

Y listo!