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
SYSDBAoSYSOPER. - 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-tesALL).-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,-ey-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)
- Recopila información del tablespace (tamaño actual, espacio libre, autoextensión).
- Analiza las tendencias de uso de los últimos 7 días desde las vistas AWR.
- Calcula la demanda futura basada en el crecimiento diario promedio.
- Inicia la expansión si el espacio libre actual es menor que la demanda proyectada.
- Verifica la disponibilidad de espacio en el sistema de almacenamiento (ASM o sistema de archivos).
- Ejecuta el comando
ALTER TABLESPACE ADD DATAFILE, creando archivos de 1GB con autoextensión hasta 32GB.
Modo Umbral
- Obtiene el porcentaje de uso actual de los tablespaces especificados.
- Compara el espacio libre con el umbral definido.
- Si el espacio libre es inferior al umbral, procede a la expansión.
- 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.dbfen 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_HOMEInválido: Verifique la variable de entornoORACLE_HOME.- Base de Datos No Iniciada: Asegúrese de que la instancia de base de datos esté en estado
OPENy el listener activo. - Permisos Insuficientes (ORA-01031): Confirme que el usuario tiene privilegios
SYSDBA/SYSOPERy 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.