Leonardo Pedroso Costa
MongoDB | SQL Server | Oracle

Corrigindo o erro ORA-22297: warning: Open LOBs exist at transaction commit time

O erro ORA-22297: warning: Open LOBs exist at transaction commit time ocorre quando o usuário faz alguma manipulações colunas do tipo CLOB ou BLOB e por algum motivo não fechou o LOB conforme deveria antes de fazer o commit.

Abaixo segue um exemplo simples que poderia ter evitado o problema:

[code lang="sql"]
DBMS_LOB.CLOSE(myFile);
DBMS_LOB.CLOSE(myBlob);
COMMIT;

Para solucionar o problema precisei fazer um rebuild no CLOB e na PK da tabela em questão. O primeiro passo foi listar os índices da tabela:

[code lang="SQL"]
desc DBUSER.TB_CLOB
select * from dba_indexes where table_name = 'TB_CLOB' and owner='DBCLOB';

Após verificar os índices, fiz o move no CLOB e o rebuild na PK:

[code lang="sql"]
ALTER TABLE DBUSER.TB_CLOB MOVE LOB (CLOB_ARQUIVO) STORE AS (TABLESPACE TD_USER);
alter index DBUSER.PK_CLOB rebuild;

Após realizar esse procedimento conseguimos executar o processo sem retornar o erro:

ORA-22297: warning: Open LOBs exist at transaction commit time

Em alguns blogs e sites de referência, a maioria das pessoas disseram que essa mensagem é apenas informativa, porém só consegui rodar o processo após o reubild no CLOB e na PK da tabela.

Fica a dica.

Leonardo Pedroso

Leonardo Pedroso

Profissional de TI experiência em administração de banco de dados: SQL Server 2000 a 2019, Oracle 11g a 19c, PostgreSQL, MySQL, MongoDB, Cassandra. Atua realizando análise de desempenho, DR e HA, implantação, administração de banco de dados em cluster e implementação de projetos de banco de dados NoSQL (MongoDB, Cassandra), bem como automação de processos utilizando Shell script, Powershell (dbatools), e players de Cloud: Azure e Aws.