¿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!