Estouro de espaço em campo LOB

quarta-feira, 4 de novembro de 2009

Olá, hoje quero falar de campos LOB em Oracle 9i (BLOB, CLOB e etc...). Recebi o seguinte erro abaixo para correção:

ORA-01691: unable to extend lob segment OW.SYS_LOB0000050980C00006$$ by 128 in tablespace TBS_DATA

Pelo número do erro, encontrei rapidamente no Google as soluções possíveis. Ao inserir um registro, mas não havia espaço suficiente pois o arquivo de dados especificado para a tablespace deste campo estava cheio.

Como solução poderia adicionar um novo datafile à tablespace, aumentar a o arquivo de dados ou ainda criar uma nova tablespace para os dados, outra para os campos LOB e uma nova tabela com a mesma estrutura que apontassem para estas tablespaces. Por fim, seria necessário exportar os dados da tabela antiga para a nova.

Analisei a situação e decidi por apenas aumentar o arquivo de dados.

Para saber qual(is) datafile(s) compunha(m) a tablespace, executei este script:

SELECT * FROM DBA_DATA_FILES where tablespace_name = 'TBS_DATA';
/


Resultado:



FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUTOEXTENSIBLE MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------------------------- --------------- ----------------------- --------------- ------- --------------- --------------- --------------- --------------- --------------- --------------- --------------- -----------
C:\ORACLE\ORADATA\TBS_DATA.DBF 16 TBS_DATA 209715200 64000 AVAILABLE 16 NO 0 0 0 209715200 63992

1 rows selected



E para alterar o tamanho do datafile:
ALTER DATABASE DATAFILE 'C:\ORACLE\ORADATA\TBS_DATA.DBF' RESIZE 500M;
/


Referência:
http://www.cryer.co.uk/brian/oracle/ORA01691.htm