در دیتابیس اوراکل LOBها همیشه در LOB segment ذخیره نمی شوند! زمانی که حجم یک LOB از مقدار مشخصی کمتر باشد، این LOB در segment متعلق به خود جدول و در کنار فیلدهای non-LOB ذخیره خواهد شد:
SQL> create table tbl_asnad( id number, doc clob);
Table created
SQL> alter table tbl_asnad rename lob(doc) "SYS_LOB0000136146C00002$$" to lob_asnad_doc;
Table altered
SQL> insert into TBL_ASNAD values(1,'usefzadeh.com');
1 row inserted
SQL> select segment_name,bytes from user_segments where segment_name in ('LOB_ASNAD_DOC','TBL_ASNAD');
SEGMENT_NAME BYTES
---------------------- ----------
TBL_ASNAD 65536
LOB_ASNAD_DOC 65536
SQL> begin
2 for i in 1.. 100000 loop
3 insert into TBL_ASNAD values(1,'usefzadeh.com');
4 end loop;
5 end;
6 /
PL/SQL procedure successfully completed
SQL> select segment_name,bytes from user_segments where segment_name in ('LOB_ASNAD_DOC','TBL_ASNAD');
SEGMENT_NAME BYTES
-------------------- ----------
TBL_ASNAD 8388608
LOB_ASNAD_DOC 65536
این محدودیت در نسخه 21c برابر 4000 بود و در نسخه 23c به 8000 افزایش یافته است. به ادعای اوراکل، با این قابلیت می توان در زمان عملیاتهایی نظیر Full table scan، Index range scan و DML کارایی بهتری داشت.