Проверка оставшегося свободного пространства в базе данных Oracle

Пакет DBMS_SPACE удобен для проверки того, сколько места занято и сколько свободного пространства осталось в различных сегментах, таких как сегменты таблиц, индексов и кластеров. Напомним, что представление словаря данных DBA_FREE_SPACE позволяет находить информацию о свободном месте в табличных пространствах и файлах данных, но не в объектах базы данных. Если пакет DBMS_SPACE не используется, сложно будет узнать, сколько свободного места есть в сегментах, выделенных различным объектам базы данных. Пакет DBMS_SPACE позволяет ответить на следующие вопросы:

  • Сколько свободного пространства я могу использовать перед тем, как понадобится следующий экстент?
  • Сколько блоков данных находятся выше маркера максимального уровня заполнения (high-water mark — HWM)?

Представления словаря данных DBA_EXTENTS и DBA_SEGMENTS предоставляют массу информации о месте, выделенном объектам, таким как таблицы и индексы, но вы не сможете узнать из них о том, сколько пространства занято и сколько осталось свободного. Если проанализировать таблицы, то столбец BLOCKS даст HWM — максимальный размер, которого достигала таблица. Однако если таблица подвергалась большому количеству операций вставки и удаления, то HWM не будет показательным индикатором реального использованного пространства. Пакет DBMS_SPACE идеален для нахождения использованного и свободного пространства, оставшегося в объектах.

Пакет DBMS_SPACE включает в себя три основных процедуры: процедура UNUSED_SPACE даст информацию о неиспользованном пространстве в сегменте объекта,процедура FREE_BLOCKS — информацию о количестве свободных блоков в сегменте, а процедура SPACE_USED — подробности об использованном пространстве в блоках.

Давайте внимательнее рассмотрим процедуру UNUSED_SPACE и посмотрим, как ее применять для получения детальной информации о неиспользованном пространстве.Процедура имеет три входных (IN) параметра (четвертый — параметр по умолчанию) и семь выходных (OUT) параметров. В листинге ниже показан вывод, полученный при выполнении процедуры UNUSED_SPACE.


SQL> DECLARE
2 v_total_blocks                  NUMBER;
3 v_total_bytes                   NUMBER;
4 v_unused_blocks                 NUMBER;
5 v_unused_bytes                  NUMBER;
6 v_last_used_extent_file_id      NUMBER;
7 v_last_used_extent_block_id     NUMBER;
8 v_last_used_block               NUMBER;
9 BEGIN
10 dbms_space.unused_space (segment_owner => 'OE',
11 segment_name                   => 'PRODUCT_DESCRIPTIONS',
12 segment_type                   => 'TABLE',
13 total_blocks                   => v_total_blocks,
14 total_bytes                    => v_total_bytes,
15 unused_blocks                  => v_unused_blocks,
16 unused_bytes                   => v_unused_bytes,
17 last_used_extent_file_id       => v_last_used_extent_file_id,
18 last_used_extent_block_id      => v_last_used_extent_block_id,
19 last_used_block                => v_last_used_block,
20 partition_name                 => NULL);
21 dbms_output.put_line ('Общее количество блоков :
'||v_total_blocks);
22 dbms_output.put_line ('Количество байт :
'||v_total_bytes);
23 dbms_output.put_line ('Количество неиспользованных блоков :
'||v_unused_blocks);
24 dbms_output.put_line ('Количество неиспользованных байт :
'||v_unused_bytes );
25 END;
Общее количество блоков : 384
Количество байт : 3145728
Количество неиспользованных блоков : 0
Количество неиспользованных байт : 0
PL/SQL procedure successfully completed.
SQL> 

 

Вас заинтересует / Intresting for you:

Oracle Database: обзор базы да...
Oracle Database: обзор базы да... 10304 просмотров Илья Дергунов Sun, 11 Aug 2019, 15:01:35
Версии СУБД Oracle Database 10...
Версии СУБД Oracle Database 10... 3513 просмотров Илья Дергунов Sat, 11 Aug 2018, 11:43:08
Oracle изменения изменений!
Oracle изменения изменений! 2255 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Разница между базой данных и э...
Разница между базой данных и э... 2131 просмотров Александров Попков Tue, 21 Nov 2017, 13:18:46
Войдите чтобы комментировать