DATA_LENGTH хранит максимальное количество байтов, которое будет занято в строке для столбца.Если CLOB может храниться в строке, то максимальное значение равно 4000. LOBS никогда не будет занимать более 4000 байтов.Если в хранилище строк отключено, то LOB будет хранить только ту информацию указателя, которая ему необходима для поиска данных LOB, что намного меньше 4000 байтов.
SQL> create table t (clob_in_table clob
2 , clob_out_of_table clob
3 ) lob (clob_out_of_table) store as (disable storage in row)
4 , lob (clob_in_table) store as (enable storage in row)
5 /
Table created.
SQL> select table_name, column_name, data_length
2 from user_tab_columns
3 where table_name = 'T'
4 /
TABLE_NAME COLUMN_NAME DATA_LENGTH
------------------------------ ------------------------------ -----------
T CLOB_IN_TABLE 4000
T CLOB_OUT_OF_TABLE 86
РЕДАКТИРОВАТЬ, добавляя информацию в *_LOBS view
Используйте представление [DBA | ALL | USER] _LOBS для просмотра определенных в строке параметров хранения строк вне строки:
SQL> select table_name
2 , cast(substr(column_name, 1, 30) as varchar2(30))
3 , in_row
4 from user_lobs
5 where table_name = 'T'
6 /
TABLE_NAME CAST(SUBSTR(COLUMN_NAME,1,30)A IN_
------------------------------ ------------------------------ ---
T CLOB_IN_TABLE YES
T CLOB_OUT_OF_TABLE NO
EDIT 2,некоторые ссылки
См. Хранилище больших объектов в Руководство разработчика приложений базы данных Oracle - Большие объекты для получения дополнительной информации об определении хранилища больших объектов, особенно в третьей заметке, в которой говорится очто можно изменить:
Примечание:
Только некоторые параметры хранения могут быть изменены.Например, вы можете использовать оператор ALTER TABLE ... MODIFY LOB
, чтобы изменить RETENTION
, PCTVERSION
, CACHE
или NO CACHE LOGGING
или NO LOGGING
, а также предложение STORAGE
.
Вы также можете изменить TABLESPACE с помощью инструкции ALTER TABLE ... MOVE.
Однако после создания таблицы вы не можете изменить размер CHUNK, либо ENABLE, либо DISABLE STORAGE.Настройки IN ROW.
Кроме того, больших объектов в индексированных организованных таблицах говорит:
По умолчанию все большие объекты в организованной индексной таблице создаются безсегмент переполнения будет сохранен вне линии.Другими словами, если организованная по индексу таблица создается без сегмента переполнения, тогда у больших объектов в этой таблице свои атрибуты хранения по умолчанию как DISABLE STORAGE IN ROW.Если вы принудительно попытаетесь указать условие ENABLE STORAGE IN ROW для таких больших объектов, то SQL выдаст ошибку.
Это объясняет, почему jonearles не видел 4000 в столбце data_length, когда он создавал большой объект виндексная организованная таблица.