logo
MyWebStudies - Página de inicio
INGRESAR

REGISTRARSE
Buscador

Borrando un miembro de REDO LOG

Selecciona el idioma :

Este video solo está disponible para los alumnos que han adquirido el curso

Borrando un miembro de REDO LOG


En esta sesión vamos a aprender cómo eliminar un miembro de un grupo del REDO LOG.

Primero vamos a acceder a la vista V$LOG:

  • SELECT GROUP#, MEMBERS, STATUS FROM V$LOG

Y tenemos aquí el grupo cuatro el cual tiene dos miembros, y es el portador del status CURRENT. Pues vamos a eliminar un miembro precisamente de este grupo 4.

Antes vamos a acceder a la vista V$LOGFILE, para ver cuáles son los ficheros de REDO LOG que conforman este grupo, entonces escribimos el siguiente comando:

  • SELECT GROUP#, MEMBER FROM V$LOGFILE

Podemos observar que el grupo 4, contiene dos ficheros, que serían los dos miembros que forman el grupo 4. Vamos a eliminar entonces el miembro al cual corresponde este fichero de aquí, el grupo4-log1.log.

Entonces, para eliminar un miembro de un grupo, debemos escribir el siguiente comando:

  • ALTER DATABASE DROP LOGFILE MEMBER [/vedado/grupo4-log1.log]

Si observamos, no tenemos que indicarle el grupo al que pertenece el miembro que queremos eliminar. Y es que en realidad Oracle no lo necesita, ya que se puede identificar el grupo al que pertenece determinado fichero del REDO LOG, ya que en una única ubicación, podemos tener solo un fichero con el mismo nombre.

Presionamos Intro, y Oracle nos muestra un error, informándonos básicamente que no se puede eliminar un miembro de un grupo con status CURRENT. Esto tiene mucha lógica, ya que este fichero está manejando transacciónes en tiempo real, y son transacciónes que aún no se sincronizan con el fichero de datos, y en caso de un borrado de este archivo, se pudieran perder cambios que se hayan realizado en la base de datos. Aunque tengamos multiplexado los grupos, como en este caso, donde tenemos otro fichero de REDO LOG, el grupo4-log2-log, aun así, Oracle no permite eliminar un miembro de un grupo con status CURRENT.

¿Qué podemos hacer entonces? Pues podemos hacer un SWITCH, y entonces el status CURRENT pasaria al próximo grupo en la cola, y una vez liberado del status CURRENT el grupo 4 deberíamos poder eliminar uno de sus miembros:

  • ALTER SYSTEM SWITCH LOGFILE

Para comprobar que ya no tenemos el status CURRENT en el grupo 4, volvemos a la vista V$LOG:

  • SELECT GROUP#, MEMBERS, STATUS FROM V$LOG

Y podemos ver que ya no tenemos el status CURRENT en el grupo 4. Ese status lo tiene ahora el grupo 1.

Ahora si deberíamos poder eliminar un miembro del grupo 4:

  • ALTER DATABASE DROP LOGFILE MEMBER [/vedado/grupo4-log1.log]

Para comprobar que se ha eliminado un grupo, volvamos a la vista V$LOG:

  • SELECT GROUP#, MEMBERS, STATUS FROM V$LOG

Y vemos que ahora el grupo 4 tiene un solo miembro.

Si observamos bien, el grupo 4 tiene un status ACTIVE, esto no impide que se borre un miembro, ya que antes de borrarlo, Oracle se encarga de sincronizar su contenido con el fichero de datos, evitando que se pierda información alguna.

Si eliminamos un miembro de un grupo con status ACTIVE en una base de datos muy grande, puede que


borrando miembro

Publicaciones Recientes de oracle dba

¿Hay algún error o mejora?

¿Dónde está el error?

¿Cúal es el error?