# MOUNT vs NOMOUNT, he aquí la cuestión

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