11.2.0.4.0.
В ней по создавали кучи файлов данных tablespace по 32 гига каждый.
На сейчас провели частичную очистку таблиц в tablespace, теперь таблица объемом 200 гиг равна 24 гига, другие таблицы в tablespace все вместе не более 30 гигов.
Вопрос, как избавится от лишних файлов данных в tablespace ?
Этот SQL попробуйте запустить. Сам по себе он ничего не меняет. Но в выводе его есть команды.
ну собственно про это Егор и говорил. один экстент в конце на hwm, дырка размером терабайт в середине - и без мува вы ничего с ней не сделаете
Да согласен. Но для начала надо оценить реалии.
я делал простой union по dba_extents и dba_free_space с сортировкой. там прямо визуально эти дыры видно.
Поделитесь SQL запросом ?
как до компьютера доберусь
Я б ещё запланировал апгрейд до актуальной версии СУБД. Например, до 19c С 12 версии и выше появилось множество опций по онлайн-перемещению объектов. Не нужен даунтайм для проведения процедур по уменьшению места.
Ну это пока не мое.
добирался, отправить забыл 🤣 что-то типа такого (работает медленно): with all_space as ( select owner ||'.' || segment_name || nullif('.' || partition_name, '.') full_segment_name, tablespace_name, extent_id, owner, segment_name, partition_name, segment_type, file_id, block_id, blocks from dba_extents e union all select null, tablespace_name, null, null, null, null, null, file_id, block_id, blocks from dba_free_space ), contiguous_space as ( select s.tablespace_name, s.owner, s.segment_name, s.partition_name, s.segment_type, s.file_id, count(*) allocated_extents, min(s.block_id) first_block, sum(s.blocks) total_blocks from ( select s.*, sum(s.sog) over ( partition by s.tablespace_name, s.file_id order by s.block_id ) group_id from ( select s.*, decode( full_segment_name, lag(full_segment_name, 1, null) over ( partition by s.tablespace_name, s.file_id order by s.block_id ), 0, 1 ) sog from all_space s ) s ) s group by s.group_id, s.tablespace_name, s.owner, s.segment_name, s.partition_name, s.segment_type, s.file_id ) select * from contiguous_space --where tablespace_name = 'USERS' order by tablespace_name, file_id, first_block /
Обсуждают сегодня