Подтвердить что ты не робот

Понимание сегментов Lob (SYS_LOB) в оракуле?

В большинстве таблиц (если не все) есть поле "blob". Одна из таблиц, в которых хранятся журналы действия пользователя, теперь выросла до 8 ГБ (около 5 миллионов записей).

И наш администратор баз данных видел, что эта схема теперь экспоненциально поставляет пространство. Мы немного разобрались и выяснили, что есть одна из таблиц с (SYS_LOB), которая занимает около 116 ГБ базы данных 140 ГБ.

Наш администратор баз данных сообщил нам, что эта таблица связана с таблицей, которая сохраняет журналы действий пользователя (что составляет 8 ГБ)

Кто-нибудь знает, что делают таблицы SYS_LOB? Является ли фактический blob сохраненным в созданной нами таблице OR orac фактически хранит эти blob в другой таблице (если да, то SYS_LOB будет этой таблицей)?

4b9b3361

Ответ 1

В базе данных Oracle нет таблицы SYS_LOB (по крайней мере, нет такой таблицы, которая является частью базовой установки базы данных. Существует таблица DBA_LOBS, которая отображает информацию обо всех столбцах LOB в базе данных, но на самом деле он не хранит данные LOB, а только метаданные. Фактические сегменты LOB в базе данных имеют системные имена, которые принимают форму SYS_LOBidentifier $$.

Я предполагаю, что ваш администратор базы данных идентифицировал сегмент с именем SYS_LOB identifier $$, который потребляет 116 ГБ пространства. Предполагая, что это правильно, вы можете узнать, в каком столбце таблицы, в которой сопоставляется таблица LOB, с использованием таблицы DBA_LOBS, т.е.

SELECT owner, table_name, column_name
  FROM dba_lobs
 WHERE segment_name = 'SYS_LOB<<identifier>>$$'