es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La consulta generada por Liquibase consume todo el espacio TEMP, lo que provoca que Oracle arroje un error al intentar ampliar el tablespace TEMP.

Mientras Spring Boot ejecuta el liquibase, se ejecuta la siguiente consulta y devuelve “No se puede ampliar en 128 en el tablespace TEMP”. Dado que nuestra base de datos tiene más de 200 esquemas, todas las * vistas consumen mucha memoria TEMP y arrojan un error.

SELECT  NULL AS TABLE_CAT, atc.OWNER AS TABLE_SCHEMA, atc.OWNER, atc.TABLE_NAME, atc.COLUMN_NAME, NULLABLE, ac.VALIDATED as VALIDATED, ac.SEARCH_CONDITION, ac.CONSTRAINT_NAME 
FROM **ALL_TAB_COLS** atc 
JOIN **all_cons_columns** acc ON atc.OWNER = acc.OWNER AND atc.TABLE_NAME = acc.TABLE_NAME AND atc.COLUMN_NAME = acc.COLUMN_NAME 
JOIN all_constraints ac ON atc.OWNER = ac.OWNER AND atc.TABLE_NAME = ac.TABLE_NAME AND acc.CONSTRAINT_NAME = ac.CONSTRAINT_NAME 
WHERE atc.OWNER='XXXX' AND atc.hidden_column='NO' AND ac.CONSTRAINT_TYPE='C' and ac.search_condition is not null AND atc.TABLE_NAME='DATABASECHANGELOG';

¿Por qué liquibase verifica todas las * vistas en la base de datos en lugar de un esquema específico? ¿Existe alguna solución que solucione este problema?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La utilidad de Liquibase utiliza algunas tablas y vistas del sistema para gestionar los cambios en el esquema de la base de datos, y la consulta mostrada es un ejemplo de ello. Específicamente, esta consulta verifica las restricciones en la tabla DATABASECHANGELOG en un esquema específico (XXXX), y puede ejecutarse durante la migración del esquema al ejecutar una aplicación con Spring Boot que utiliza Liquibase.

    Respecto al mensaje de error “No se puede extender en 128 en el tablespace TEMP”, esto sugiere que el tablespace TEMP de la base de datos de Oracle puede quedarse sin espacio durante la ejecución de la consulta. Una posible razón para esto es que la consulta posiblemente está realizando unión entre un gran número de tablas del sistema (como all_tab_cols, all_cons_columns y all_constraints), las cuales pueden consumir mucho espacio temporal, especialmente si la base de datos tiene un gran número de esquemas.

    Para solucionar este problema, una solución podría ser modificar la consulta para consultar solo los esquemas específicos que sean relevantes para la aplicación. Por ejemplo, en lugar de usar ALL_TAB_COLS, se puede utilizar USER_TAB_COLS o DBA_TAB_COLS, dependiendo del nivel deseado de cobertura de esquemas. Además, podría ser posible ajustar los parámetros del tablespace TEMP de la base de datos de Oracle (como aumentar su tamaño u optimizar su uso) para mejorar su eficiencia general al ejecutar consultas grandes.

    En general, si encuentras este error con Liquibase y el tablespace TEMP de la base de datos, puede ser útil investigar la consulta específica que se está ejecutando e identificar oportunidades para reducir su consumo de recursos u optimizar la configuración de la base de datos para manejar mejor dichas consultas.

Comments are closed.