Automatización de la Expansión de Tablespaces en Oracle con Go

Este script en Go automatiza la expansión de tablespaces en entornos Oracle. Monitoriza el uso del tablespace y ajusta su tamaño basándose en tendencias históricas o umbrales configurados, reduciendo la necesidad de intervenciones manuales repetitivas.

Características Principales

  • Predicción Inteligente: Utiliza datos históricos de AWR para estimar las necesidades futuras de espacio.
  • Gestión de Rutas: Selecciona la ruta del archivo de datos basándose en la última ruta utilizada en el tablespace.
  • Soporte de Almacenamiento: Reconoce y maneja sistemas de archivos y ASM, omitiendo dispositivos "raw".
  • Modo Umbral: Permite definir un porcentaje de espacio libre mínimo para disparar la expensión.
  • Validaciones de Seguridad: Comprueba la disponibilidad de espacio en el almacenamiento subyacente antes de expandir.
  • Configuración Flexible: Soporta la especificación de tablespaces concretos, exclusiones y días de predicción.
  • Modo de Vista Previa: Genera las sentencias SQL de expansión sin ejecutarlas, para validación manual.
  • Registro Detallado: Ofrece niveles de log INFO, ERROR y DEBUG.
  • Verificación Ambiental: Comprueba la configuración del entorno Oracle y el estado de la base de datos.

Configuración del Entorno

Variables de Entorno Requeridas


# SID de la base de datos
export ORACLE_SID=tu_sid

# Ruta de Oracle Home
export ORACLE_HOME=/ruta/a/tu/oracle/home
   

Permisos Necesarios

  • El usuario que ejecuta el script debe tener privilegios SYSDBA o SYSOPER.
  • La autenticación OS debe estar configurada correctamente.

Uso

Parámetros Básicos

  • -s: Especifica el ORACLE_SID de la base de datos (por defecto: variable de entorno $ORACLE_SID).
  • -m: Especifica la ruta de ORACLE_HOME (por defecto: variable de entorno $ORACLE_HOME).
  • -t: Nombres de tablespaces a verificar, separados por comas (por defecto: ALL).
  • -e: Nombres de tablespaces a excluir, separados por comas (usado cuando -t es ALL).
  • -d: Número de días para predecir el crecimiento futuro (por defecto: 7).
  • -l: Umbrales de espacio libre en porcentaje para tablespaces específicos, ej: TBS1:10,TBS2:15. Si se usa, ignora -t, -e y -d.
  • -p: Solo imprime las sentencias SQL de expansión, sin ejecutarlas (por defecto: false).
  • -debug: Activa el modo DEBUG para un registro más detallado (por defecto: false).
  • -v: Muestra la versión y la información de contacto.
  • -h: Muestra el mensaje de ayuda.

Ejemplos de Uso

1. Verificación General (Modo Predicción)


# Verifica todos los tablespaces prediciendo el crecimiento para los próximos 7 días
./tbscale

# Predice el crecimiento para 30 días
./tbscale -d 30

# Activa el modo DEBUG para ver el proceso detallado
./tbscale -debug
   

2. Verificación de Tablespaces Específicos


# Verifica solo los tablespaces USERS y DATA
./tbscale -t USERS,DATA

# Verifica todos los tablespaces, excluyendo UNDOTBS1
./tbscale -t ALL -e UNDOTBS1
   

3. Modo Umbral (Recomendado para Producción)


# Expande USERS si el espacio libre cae por debajo del 10%
./tbscale -l USERS:10

# Establece umbrales diferentes para varios tablespaces
./tbscale -l USERS:10,DATA:15,SYSTEM:20

# Combina modo umbral con modo vista previa
./tbscale -l TEST:100 -p
   

4. Validación y Ayuda


# Vista previa de las sentencias SQL de expansión para USERS
./tbscale -t USERS -p

# Muestra la versión y la información de contacto
./tbscale -v

# Muestra el mensaje de ayuda
./tbscale -h
   

Funcionamiento Interno

Modo Predicción (Predeterminado)

  1. Recopila información del tablespace (tamaño actual, espacio libre, autoextensión).
  2. Analiza las tendencias de uso de los últimos 7 días desde las vistas AWR.
  3. Calcula la demanda futura basada en el crecimiento diario promedio.
  4. Inicia la expansión si el espacio libre actual es menor que la demanda proyectada.
  5. Verifica la disponibilidad de espacio en el sistema de almacenamiento (ASM o sistema de archivos).
  6. Ejecuta el comando ALTER TABLESPACE ADD DATAFILE, creando archivos de 1GB con autoextensión hasta 32GB.

Modo Umbral

  1. Obtiene el porcentaje de uso actual de los tablespaces especificados.
  2. Compara el espacio libre con el umbral definido.
  3. Si el espacio libre es inferior al umbral, procede a la expansión.
  4. Añade un nuevo archivo de datos con las mismas características que en el modo predicción.

Gestión de Tipos de Almacenamiento

  • ASM: Los archivos de datos se crean en el diskgroup correspondiente, con nombres generados por Oracle.
  • Sistema de Archivos: Los archivos se crean con el formato NOMBRE_TABLESPACE_N.dbf en el directorio de datos especificado.
  • Dispositivos Raw: Se omiten y se registra un mensaje informativo.

Registro (Logging)

Niveles de Registro

  • INFO: Muestra operaciones clave y resultados.
  • ERROR: Detalla los errores que impiden la ejecución del script.
  • DEBUG: Proporciona información exhaustiva para la depuración, incluyendo sentencias SQL.

Manejo de Errores

Errores Comunes y Soluciones

  • ORACLE_HOME Inválido: Verifique la variable de entorno ORACLE_HOME.
  • Base de Datos No Iniciada: Asegúrese de que la instancia de base de datos esté en estado OPEN y el listener activo.
  • Permisos Insuficientes (ORA-01031): Confirme que el usuario tiene privilegios SYSDBA/SYSOPER y que la autenticación OS está configurada.
  • Datos AWR Insuficientes: Espere a que se recopilen más datos de AWR o utilice el modo umbral (-l).

Mejores Prácticas

Recomendaciones para Entornos de Producción

  • Prefiera el modo umbral (-l) para una respuesta más directa a las condiciones de bajo espacio.
  • Utilice el modo vista previa (-p) para revisar las sentencias SQL antes de la ejecución inicial.
  • Configure umbrales de espacio libre entre el 10% y el 20%.
  • Revise periódicamente los logs del script para asegurar el correcto funcionamiento.

Configuración de Tareas Programadas (Cron)


# Ejecución diaria a las 2 AM usando modo umbral
0 2 * * * /ruta/a/tbscale -l USERS:10,DATA:15 >> /var/log/tbscale.log 2>&1

# Verificación semanal detallada
0 3 * * 0 /ruta/a/tbscale -debug >> /var/log/tbscale_weekly.log 2>&1
   

Información de Versión y Soporte

  • Versión Actual: 0.1
  • Compatibilidad: Oracle 11g, 12c, 19c.

Etiquetas: Oracle tablespace automatización Go awr

Publicado el 10-31 08:18