Skip to main content

Command Palette

Search for a command to run...

MOUNT vs NOMOUNT, he aquí la cuestión

Updated
3 min readView as Markdown
MOUNT vs NOMOUNT, he aquí la cuestión
C
Hola mundo! Soy Carmen. En mi camino como DBA, con particular interés en Oracle, nace este blog para documentar los pequeños aprendizajes y compartirlos con todos los que por una razón u otra han acabado aqui. No busco inventar o descubrir nada nuevo, pero si algo he aprendido en estos años es que a veces la clave no está en qué comunicas, sino el cómo, asique te animo a leer algún post mientras disfrutas de un buen café. Actualmente cuento con 3 años de experiencia, con formación en administración de bases de datos y en desarrollo de SQL en Oracle principalmente. Mis próximos pasos? Una gran incógnita por ahora, entre posts y cafés los descubriremos juntos.

Pensando en cual sería mi primera aportación, quise hacer honor a lo que he aprendido en este tiempo junto al Arquitecto DBA Jose Carlos Pavón, quién fue la primera persona que me planteó y me enseñó algo fundamental:

‘‘ Puedes llevar 20 años trabajando con bases de datos, que si no sabes responder esta sencilla pregunta, no has entendido cómo funcionan realmente las bases de datos, asi que: Qué diferencia hay entre el estado MOUNT y NOMOUNT? “

Pensé en lo que habia aprendido en clase, cuando nos explicaban los diferentes estados en lo que podia encontrarse las bases de datos de Oracle. Pero, sorpresa: no tenia una respuesta directa que dar. En mi mente era texto memorizado y escrito en un examen.

Y así llegó mi primera lección: si no puedes responder a una pregunta sencila sobre cómo funciona internamente una base de datos, de poco sirve lanzar queries o saber hacer un shutdown.

Por tanto, vamos a contestar a esta pregunta, MOUNT y NOMOUNT, he aquí la cuestión.

La respuesta corta es:

“En NOMOUNT arranca y se construye la instancia de Oracle, pero la base de datos no está montada, no es accesible.”

Ahora vamos a documentar un poco más esta lección. Primero, Oracle separa el arranque en varias fases porque su arquitectura tambien está dividida:

  • Por una lado tenemos la instancia

  • Por otro lado, la base de datos física

Y encontramos tres estados en Oracle, OPEN, MOUNT y NOMOUNT.

NOMOUNT

Es el primer estado de arranque. Se construye la instancia (procesos + áreas de memoria), pero en este punto la instancia todavia no tiene ninguna informacion acerca de los ficheros que componen la base de datos y su estructura (esa informacion se encuentra en los ficheros de control o CONTROLFILES)

Oracle solo lee los archivos de parámetros en $ORACLE_HOME/dbs :

  • primero lee spfile.ora

  • si no lo encuentra, lee el init.ora

ℹ️ Especificando el PFILE en el comando de arranque STARTUP se puede iniciar con otro PFILE determinado

SQL> STARTUP NOMOUNT PFILE='/home/oracle/my_pfile_.ora';

Este estado se usa para:

  • Crear o recuperar archivos de control

  • Tareas de mantenimiento que no requieren acceso a los DATAFILES

  • Recuperar o crear una base de datos

MOUNT

En este estado, Oracle monta la base de datos, es decir, lee los controls files (parámetro CONTROLFILE) en el archivo de parámetros, que contiene la estructura fisica de la base de datos. Los archivos de control tiene información sobre los:

  • DATAFILES

  • REDO LOGs

Pero en este punto todavia, los datos todavía no son accesibles.

Se usa para:

  • Recuperaciones (recovery)

  • Cambiar el modo de archivado (ARCHIVELOG / NOARCHIVELOG)

OPEN

Es el estado operativo final. En este punto, Oracle abre los archivos de datos y los redo logs, la base de datos ya esta lista para poder conectarse, hacer consultas, etc.

Se usa para:

  • Conexiones de usuarios

  • Consultas y modificaciones de datos (DML)

  • Otras operaciones