powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Размер таблицы
9 сообщений из 9, страница 1 из 1
Размер таблицы
    #39602744
HobbytF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, совсем запутался, прошу помочь с разъяснениями.
Пытаюсь узнать размер таблицы. На просторах нашел кучу разных запросов по определению размера таблицы, но они все выдают разные данные (потому что смотрят в разных представлениях).
Решил последовательно разобраться. Обращаюсь к разным представлениям словаря данных и получаю разную информацию (везде в Mb, размер блока 8 Kb).

TABLE_SIZE
Код: plsql
1.
2.
3.
select table_name, SUM(BYTES)/1024/1024 from table_size group by table_name having table_name='SH_IDE_PACKETS_FROM_GATEWS';

SH_IDE_PACKETS_FROM_GATEWS	151477



DBA_TABLES
Код: plsql
1.
2.
3.
select table_name, blocks*8/1024 from dba_tables where table_name='SH_IDE_PACKETS_FROM_GATEWS';

SH_IDE_PACKETS_FROM_GATEWS	5815,46875



DBA_EXTENTS
Код: plsql
1.
2.
3.
select segment_name, sum(bytes)/1024/1024 from dba_extents group by segment_name having segment_name='SH_IDE_PACKETS_FROM_GATEWS';

SH_IDE_PACKETS_FROM_GATEWS	37631



Разве эти данные не должны сходиться, хотя бы примерно? Что я делаю не правильно? Как интерпретировать полученные результаты?
...
Рейтинг: 0 / 0
Размер таблицы
    #39602747
HobbytF,

как минимум - не попробовал DBA_SEGMENTS :)
...
Рейтинг: 0 / 0
Размер таблицы
    #39602748
HobbytF,

кроме того, совершенно непонятно, что ты вкладываешь в понятие "размер таблицы"....
пространство на диске, реально занятое данными? выделенное под хранение данных таблицы пространство? что-то ещё?
...
Рейтинг: 0 / 0
Размер таблицы
    #39602749
HobbytF,

также не ясно, что у тебя там за "самопал" скрывается под именем table_size
...
Рейтинг: 0 / 0
Размер таблицы
    #39602759
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - ЭхHobbytF,

также не ясно, что у тебя там за "самопал" скрывается под именем table_size
а тут вообще завернул зачем-то :)
авторgroup by segment_name having
...
Рейтинг: 0 / 0
Размер таблицы
    #39602761
Q.Tarantino,

и не только там... первый запрос такой же "идиотский", с фильтрацией в HAVING...
...
Рейтинг: 0 / 0
Размер таблицы
    #39602811
HobbytF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - ЭхHobbytF,

кроме того, совершенно непонятно, что ты вкладываешь в понятие "размер таблицы"....
пространство на диске, реально занятое данными? выделенное под хранение данных таблицы пространство? что-то ещё?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
CREATE OR REPLACE FORCE VIEW "SYS"."TABLE_SIZE" ("TABLE_NAME", "OWNER", "BYTES"
  )
AS
  SELECT segment_name table_name,
    owner,
    bytes
  FROM dba_segments
  WHERE segment_type = 'TABLE'
  UNION ALL
  SELECT i.table_name,
    i.owner,
    s.bytes
  FROM dba_indexes i,
    dba_segments s
  WHERE s.segment_name = i.index_name
  AND s.owner          = i.owner
  AND s.segment_type   = 'INDEX'
  UNION ALL
  SELECT l.table_name,
    l.owner,
    s.bytes
  FROM dba_lobs l,
    dba_segments s
  WHERE s.segment_name = l.segment_name
  AND s.owner          = l.owner
  AND s.segment_type   = 'LOBSEGMENT'
  UNION ALL
  SELECT l.table_name,
    l.owner,
    s.bytes
  FROM dba_lobs l,
    dba_segments s
  WHERE s.segment_name = l.index_name
  AND s.owner          = l.owner
  AND s.segment_type   = 'LOBINDEX';



Есть рост базы данных. Требуется понимание, что дает наибольший прирост. Поэтому решил смотреть по размеру таблиц. Понятно, что могут и индексы расти, но пока точечно. Кроме того, в таблице уже данных может и не быть, но HWM стоит высоко. Вот я и хочу найти такие таблицы и как-то сократить объем памяти выделенный, но неиспользуемый.

Первоначально я использовал для создания "снимков" размеров таблиц запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT tz.owner, tz.table_name, TRUNC(SUM(tz.bytes)/1024/1024/1024,4) GB,
  t.num_rows,
FROM table_size tz
LEFT JOIN dba_tables t
  on (tz.table_name=t.table_name)
WHERE tz.owner IN UPPER('&owner')
GROUP BY tz.table_name, tz.owner, t.num_rows
HAVING SUM(tz.bytes)/1024 > 10
ORDER BY SUM(tz.bytes) DESC;



Он похож на правду.
Потом решил поэкспериментировать с DBA_TABLES, чтобы понять использование блоков (конечно правильнее использовать dbms_space.unused_space, но это я взял для сравнения):

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET SERVEROUTPUT ON
DECLARE
  v_alloc number;
  v_used number;
BEGIN
  SELECT ROUND((BLOCKS*8),2) into v_alloc FROM DBA_TABLES WHERE TABLE_NAME = 'SH_IDE_PACKETS_FROM_GATEWS';
  SELECT ROUND((NUM_ROWS*AVG_ROW_LEN/1024),2) into v_used FROM DBA_TABLES WHERE TABLE_NAME = 'SH_IDE_PACKETS_FROM_GATEWS';
  DBMS_OUTPUT.PUT_LINE('TOTAL: '||v_alloc/1024||' KB');
  DBMS_OUTPUT.PUT_LINE('USED: '||v_used/1024||' KB');
  DBMS_OUTPUT.PUT_LINE('UNUSED: '||(v_alloc - v_used)/1024||' KB');
END;



Но результат сильно отличается. Вот и возникают вопросы.
...
Рейтинг: 0 / 0
Размер таблицы
    #39602856
HobbytF,

"Смешались в кучу кони, люди"(с)

ты уж определись, что считаешь - только таблицу, или таблицу с индексами и прочими лобами. А то в одном месте так, в другом сяк...
ну и на dba_tables.blocks я бы вообще смотреть не стал, если непосредственно перед запросом не провести пересбор статистики по таблице.... и даже после пересбора статистики смотреть не стал бы...
...
Рейтинг: 0 / 0
Размер таблицы
    #39602879
HobbytF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

Свою ошибку осознал. Т.е. если dbms_space.unused_space мне говорит, что неиспользованных блоков и байтов нет, значит так оно и есть, HWM не завышен?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Размер таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]