Poner una BD Oracle en modo QUIESCE (solo sesiones DBA)

En algunas ocasiones es necesario realizar operaciones sobre una BD cuando está abierta, por ejemplo mover datafiles o poner tablespaces en read only.

Estas operaciones generalmente se pueden realizar con la BD en producción, pero el problema surge cuando tenemos una actividad alta y tenemos que realizar cambios en masa. En estos casos lo mejor es restringir el acceso a los usuarios, permitiendo solo accesos DBA (sys o system si no hemos creado ningún otro).

Podemos poner la BD en modo quiesce (quieto o inactivo), solo sys y system pueden crear nueva sesiones, el resto siguen existiendo hasta que terminan la transacción.

Para ver el estado de la BD:

Source   
select active_state from v$instance;

El resultado puede ser:
NORMAL: Estado normal de la BD.
QUIESCING: Inicio de modo quiesced, todavía tenemos sesiones no DBA activas aunque no se pueden crear sesiones nuevas.
QUIESCED: Sin sesiones no DBA activas y nuevas sesiones no permitidas.

Para poner la BD en modo quiesce (desde sqlplus):

Source   
ALTER SYSTEM QUIESCE RESTRICTED;

Esperará a que terminen todas las sesiones que no sean SYS ni SYSTEM, para ver que sesiones se está esperando:

Source   
select bl.sid, user, osuser, type, program
from v$blocking_quiesce bl, v$session se
where bl.sid = se.sid;

Después de esperar un tiempo prudencial y una vez identificadas, podemos parar la aplicación propietaria de las sesiones o matarlas directamente.

Ahora podemos realizar las tareas administrativas sin esperas generadas por una alta concurrencia en la BD.

Para sacarla la BD del modo quiesce:

Source   
ALTER SYSTEM UNQUIESCE;

 

Deja un comentario