# Tutorial para DBAs: Uso de crsctl para Configurar SPFILE en ASM (Versiones 11g-19c)

**Introducción:**

Como DBAs de Oracle, sabemos que el SPFILE es parte del corazón de nuestra base de datos Oracle y en la botica cuidamos la salud de las BBDD y para ello almacenar los parámetros de inicialización, y su correcta gestión es vital. En entornos ASM, modificar el SPFILE requiere un entendimiento profundo de crsctl y ASMCMD. En este artículo, te guiaré a través del proceso.

# **Revisando el SPFILE Actual en ASM:**

Antes de realizar cualquier modificación, es fundamental conocer el SPFILE actual en uso. Aquí te muestro cómo hacerlo:

1. ### **Usando crsctl:**
    
    ```sql
    [grid@laboratoriodelabotica ~]$ crsctl stat res ora.boticadb.db –p
    ```
    
    Este comando muestra los atributos del recurso de la base de datos, incluyendo la ubicación del SPFILE.
    
2. ### **Copiando el SPFILE a un Archivo Temporal:**
    
    ```sql
    ASMCMD> cp +DISKGROUPMIRROR/BOTICADBA/PARAMETERFILE/spfile.270.1032718459 /tmp/sptemp.ora
    ```
    
    Copiamos el SPFILE a un archivo temporal para su edición.
    
3. ### **Verificando el Estado de los Recursos:**
    
    ```sql
    crsctl stat res –t
    ```
    
    Este comando muestra el estado de todos los recursos del cluster.
    
4. ### **Confirmando la Ubicación del SPFILE con SQL:**
    
    ```sql
    SQL> show parameter spfile
    ```
    
    Este comando confirma la ubicación del SPFILE que la base de datos está utilizando.
    

## **Modificando el SPFILE:**

1. **Editando el Archivo Temporal:**
    
    Edita el archivo `/tmp/sptemp.ora` con los cambios (solo si es necesario)
    
2. **Reemplazando el SPFILE en ASM:**
    
    Aquí es donde la sintaxis de ASMCMD se vuelve crucial. Dependiendo de la versión de Oracle, los comandos pueden variar ligeramente:
    

### **Oracle 11g/12c:**

* ```sql
    ASMCMD> rm +DISKGROUPMIRROR/BOTICADBA/PARAMETERFILE/spfile.270.1032718459
    ASMCMD> cp /tmp/sptemp.ora +DISKGROUPMIRROR/BOTICADBA/PARAMETERFILE/spfile.new
    ```
    

1. ### **Actualizando el Recurso de la Base de Datos:**
    
    ```sql
    crsctl modify res ora.boticadb.db -attr "PARAMETER_FILE=+DISKGROUPMIRROR/BOTICADBA/PARAMETERFILE/spfile.new"
    ```
    
    Actualizamos el recurso de la base de datos para que utilice el nuevo SPFILE.
    

## **Reiniciando la Base de Datos:**

1. **Deteniendo la Base de Datos:**
    
    ```sql
    [oracle@laboratoriodelabotica ~]$ srvctl stop database -d boticadb
    ```
    
2. **Iniciando la Base de Datos:**
    
    ```sql
    [oracle@laboratoriodelabotica ~]$ srvctl start database -d boticadb
    ```
    
3. **Verificando el Nuevo SPFILE:**
    
    ```sql
    SQL> show parameter spfile
    ```
    
    Verificamos que la base de datos esté utilizando el nuevo SPFILE.
    

**Verificando la Configuración del Cluster con** `crsctl check config`:

Después de modificar el SPFILE y reiniciar la base de datos, es crucial verificar la configuración del cluster para asegurar que todo funcione correctamente.

1. **Ejecutando** `crsctl check config`:
    
    ```sql
    [grid@laboratoriodelabotica ~]$ crsctl check config
    ```
    
    Este comando verifica la integridad de la configuración del cluster, incluyendo la red, el almacenamiento y los recursos.
    
2. **Interpretando los Resultados:**
    
    * **Salida Exitosa:**
        
        Si la configuración es correcta, el comando no mostrará errores.
        
    * **Errores Comunes y Soluciones:**
        
        * **Error:** `CRS-4639: Could not contact Oracle High Availability Services`:
            
            Este error indica un problema con los servicios de alta disponibilidad.
            
            * **Solución:** Verifica que los servicios CRS estén en ejecución:
                
                ```sql
                [root@laboratoriodelabotica ~]# crsctl start crs
                ```
                
        * **Error:** `CRS-4535: Cannot communicate with Cluster Synchronization Services daemon`:
            
            Este error indica un problema con el daemon CSS.
            
            * **Solución:** Verifica el estado de CSS y reinicia el cluster si es necesario:
                
                ```sql
                [root@laboratoriodelabotica ~]# crsctl check css
                [root@laboratoriodelabotica ~]# crsctl stop crs -f
                [root@laboratoriodelabotica ~]# crsctl start crs
                ```
                
        * **Error:** `CRS-4000: Command check failed, or completed with errors`:
            
            Este error genérico indica que la verificación falló. Revisa los logs de CRS para obtener más detalles:
            
            * `/u01/app/grid/diag/crs/boticadb1/crs/trace/ocssd.log`
                
            * `/u01/app/grid/diag/crs/boticadb2/crs/trace/crsd.log`
                
            * **Solución:** Los logs te darán pistas sobre la causa del error. Sigue las recomendaciones de Oracle Support para resolver problemas específicos.
                

## **Consejos:**

### **Sintaxis ASMCMD Completa:**

* * `ASMCMD> cp [opciones] origen destino`: Copia archivos entre ASM y el sistema de archivos local.
        
    * `ASMCMD> rm [opciones] nombre_archivo`: Elimina archivos de ASM.
        
    * `ASMCMD> ls [opciones] [ruta]`: Lista el contenido de un directorio ASM.
        
    * `ASMCMD> mkdir [opciones] nombre_directorio`: Crea un directorio en ASM.
        
    * `ASMCMD> pwd`: Muestra el directorio actual en ASM.
        

### **Diferencias de Versión:**

* * Siempre consulta la documentación específica de tu versión de Oracle para conocer las últimas actualizaciones y cambios en ASMCMD.
        
    * Presta especial atención a las opciones de los comandos, ya que pueden variar entre versiones.
        

### **Ejemplos Específicos de Parámetros del SPFILE:**

* * Modificando `memory_target`:
        
        SQL
        
        ```sql
        ALTER SYSTEM SET memory_target=8G SCOPE=SPFILE;
        ```
        
    * Modificando `processes`:
        
        SQL
        
        ```sql
        ALTER SYSTEM SET processes=500 SCOPE=SPFILE;
        ```
        

### **Verificando la Integridad del SPFILE:**

* * Después de modificar el SPFILE, verifica que no esté corrupto:
        
        ```sql
        SQL> CREATE PFILE='/tmp/verify.ora' FROM SPFILE='+DISKGROUPMIRROR/BOTICADBA/PARAMETERFILE/spfile.new';
        ```
        
        Si el comando se ejecuta sin errores, el SPFILE es válido.
        
    

### **Conclusión:**

Modificar el SPFILE en ASM puede parecer complejo, pero con un conocimiento sólido de crsctl y ASMCMD, y siguiendo las mejores prácticas, podemos realizar esta tarea de manera eficiente y segura.

En [laboticadeldba.com](http://laboticadeldba.com), te queremos acompañar en el cuidado y dedicación por las bases de Datos Oracle, espero este articulo ayude a mejorar la salud de tus bases de datos en compromiso con la excelencia y la calidad de tus entornos Oracle.
