powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / узнать размер таблицы?
25 сообщений из 27, страница 1 из 2
узнать размер таблицы?
    #35997171
Fedortsov A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый деlty!Ora10g Winserv 2003
как просомотреть объем определенной таблицы?

Заранее благодарен
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35997179
SysOper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fedortsov A.,

Dba_Segments

не стоит благодарности
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35997250
skelet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fedortsov A.,

Код: plaintext
1.
2.
3.
select sum(bytes)/ 1024 / 1024  mb from user_segments
where segment_name = 'имя'
group by segment_name
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35997415
Фотография Brass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fedortsov A.Добрый деlty!Ora10g Winserv 2003
как просомотреть объем определенной таблицы?

Заранее благодарен
очень удобная процедурка
помимо общего обьема таблицы показывает ещё и количество свободного места в блоках
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
variable unf number; 
variable unfb number; 
variable fs1 number; 
variable fs1b number; 
variable fs2 number; 
variable fs2b number; 
variable fs3 number; 
variable fs3b number; 
variable fs4 number; 
variable fs4b number; 
variable full number; 
variable fullb number; 

begin 
dbms_space.space_usage('OWNER','TABLE_NAME', 
                        'TABLE', 
                        :unf, :unfb, 
                        :fs1, :fs1b, 
                        :fs2, :fs2b, 
                        :fs3, :fs3b, 
                        :fs4, :fs4b, 
                        :full, :fullb); 
end; 
/ 

где
unformatted_blocks
Total number of blocks that are unformatted

unformatted bytes
Total number of bytes that are unformatted

fs1_blocks
Number of blocks that has at least 0 to 25% free space

fs1_bytes
Number of bytes that has at least 0 to 25% free space

fs2_blocks
Number of blocks that has at least 25 to 50% free space

fs2_bytes
Number of bytes that has at least 25 to 50% free space

fs3_blocks
Number of blocks that has at least 50 to 75% free space

fs3_bytes
Number of bytes that has at least 50 to 75% free space

fs4_blocks
Number of blocks that has at least 75 to 100% free space

fs4_bytes
Number of bytes that has at least 75 to 100% free space

ful1_blocks
Total number of blocks that are full in the segment

full_bytes
Total number of bytes that are full in the segment
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35997603
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Brass,


не очень очень удобная процедурка :)

Код: plaintext
1.
2.
3.
4.
5.
..

ошибка в строке  1 :
ORA- 14107 : Спецификация секции необходима для секционированного объекта
ORA- 06512 : на  "SYS.DBMS_SPACE", line  190 
ORA- 06512 : на  line  2 
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35997617
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fedortsov A.
как просомотреть объем определенной таблицы?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select t.owner,
       t.segment_name,
       round((sum(t.bytes) / ( 1024  *  1024 )),  2 ) Mbytes
  from DBA_EXTENTS t
 where t.owner in ('Username1', 'Username2')
   and t.segment_type in
       ('TABLE', 'TABLE PARTITION', 'INDEX', 'INDEX PARTITION')
 group by t.owner, t.segment_name
 order by Mbytes desc
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35997765
Фотография Brass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishBrass,


не очень очень удобная процедурка :)

Код: plaintext
1.
2.
3.
4.
5.
..

ошибка в строке  1 :
ORA- 14107 : Спецификация секции необходима для секционированного объекта
ORA- 06512 : на  "SYS.DBMS_SPACE", line  190 
ORA- 06512 : на  line  2 

документацию по пакету посмотри
там и по партиционированным обьектам вроде можно информацию получить
завтра точнее отпишу если надо
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35997781
Фотография Brass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BrassorawishBrass,


не очень очень удобная процедурка :)

Код: plaintext
1.
2.
3.
4.
5.
..

ошибка в строке  1 :
ORA- 14107 : Спецификация секции необходима для секционированного объекта
ORA- 06512 : на  "SYS.DBMS_SPACE", line  190 
ORA- 06512 : на  line  2 

документацию по пакету посмотри
там и по партиционированным обьектам вроде можно информацию получить
завтра точнее отпишу если надо
даже сегодня
точно, есть соответствующий параметр

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Table 98-11 SPACE_USAGE Procedure Parameters
Parameter 	Description
segment_owner 	Schema name of the segment to be analyzed
segment_name 	Name of the segment to be analyzed
 partition_name 	Partition name of the segment to be analyzed 
segment_type 	Type of the segment to be analyzed (TABLE, INDEX, or CLUSTER)
unformatted_blocks 	Total number of blocks that are unformatted
unformatted bytes 	Total number of bytes that are unformatted
fs1_blocks 	Number of blocks that has at least 0 to 25% free space
fs1_bytes 	Number of bytes that has at least 0 to 25% free space
fs2_blocks 	Number of blocks that has at least 25 to 50% free space
fs2_bytes 	Number of bytes that has at least 25 to 50% free space
fs3_blocks 	Number of blocks that has at least 50 to 75% free space
fs3_bytes 	Number of bytes that has at least 50 to 75% free space
fs4_blocks 	Number of blocks that has at least 75 to 100% free space
fs4_bytes 	Number of bytes that has at least 75 to 100% free space
ful1_blocks 	Total number of blocks that are full in the segment
full_bytes 	Total number of bytes that are full in the segment
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35997800
Деев И.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще v$segstat содержит данные о выделенном и занятом пространстве.
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #35999711
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Brass,

дык я не сомневался, что для партиций там есть параметры.
просто, если код публикуете (где буков много), то, имхо,
он мог бы быть и более общим
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
узнать размер таблицы?
    #38302399
Evgeny_1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fedortsov A., я бы предложил более корректный вариант с подсчетом сегментов данных, индексов и blob-полей таблицы:

http://konurbaev-e.blogspot.ru/2013/06/oracle-database-how-to-calculate-actual.html
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #38302431
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeny_1987Fedortsov A., я бы предложил более корректный вариант с подсчетом сегментов данных, индексов и blob-полей таблицы:
http://konurbaev-e.blogspot.ru/2013/06/oracle-database-how-to-calculate-actual.html Адский блог
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #38302490
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Evgeny_1987,

имхо,
1. достаточно одного селекта
2. не стоит делать upper, лучше подавайте на вход сразу верное название
3. мешанина ALL_ c DBA_, да еще и их джойны без учета owner'a
4. не учитывает lob index'ы и вложенные таблицы
5. dba_segments достаточно "тяжелая" вьюха, если уж туда идти, то хотя бы один раз
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #38302491
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
это только то, что сразу в глаза бросилось
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #38302588
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderэто только то, что сразу в глаза бросилосьПризнаки стилистического говнокода изобилуют, но уже на втором плане после - может посчитать сегменты другой таблицы, свои сегменты несколько раз или не посчитать...
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #38302615
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
-2-может посчитать сегменты другой таблицы, свои сегменты несколько раз или не посчитать...ага, это про овнера
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #38303905
Evgeny_1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

автор1. достаточно одного селекта

Сразу скажу, что код писался не для использования в промышленной системе, а для периодических разовых запусков, чтобы узнать размер таблицы, поэтому задачи обойтись одним селектом не стояла.
Вопрос был - как узнать размер таблицы, функция свою задачу выполняет.

автор2. не стоит делать upper, лучше подавайте на вход сразу верное название
3. мешанина ALL_ c DBA_, да еще и их джойны без учета owner'a

ALL на DBA заменили.

А в join-ах было условие:
and
t.owner = upper(pOwner);

автор4. не учитывает lob index'ы и вложенные таблицы

lob-сегменты и lob-индексы учитываются этим селектом:

select
sum(s.bytes) into val
from
dba_lobs t
inner join
dba_segments s on t.segment_name = s.segment_name
where
t.table_name = upper(pNazvanie)
and
t.owner = upper(pOwner);

автор5. dba_segments достаточно "тяжелая" вьюха, если уж туда идти, то хотя бы один раз

Опять таки, скорость для разовых запусков значения не имела.
Данная функция выполняется 2 секунды, более чем достаточно.
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #38303947
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Печалька... попытка #2:
1. Тем более, зачем функцию создавать для разового запуска
2. Размер "ТаБлИцы" не посчитает
3. Это не условие джойна
4. Лобиндексы оттуда не получить
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #38304022
неймспейс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Evgeny_1987Опять таки, скорость для разовых запусков ...да похеp на скорость, могу привести простейший случай простой таблицы с индексом, для которых объем посчитается больше в несколько раз
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
узнать размер таблицы?
    #39261664
Pit_T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fedortsov A.,

Вот селект, который сам спросит OWNER-а, ну и после ввода выдаст список таблиц с размерами...

COLUMN TABLE_NAME FORMAT A32
COLUMN OBJECT_NAME FORMAT A32
COLUMN OWNER FORMAT A10

SELECT
owner,
table_name,
TRUNC(sum(bytes)/1024/1024) Meg,
ROUND( ratio_to_report( sum(bytes) ) over () * 100) Percent
FROM
(SELECT segment_name table_name, owner, bytes
FROM dba_segments
WHERE segment_type IN ('TABLE', 'TABLE PARTITION', 'TABLE SUBPARTITION')
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 IN ('INDEX', 'INDEX PARTITION', 'INDEX SUBPARTITION')
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 IN ('LOBSEGMENT', 'LOB PARTITION')
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')
WHERE owner in UPPER('&owner')
GROUP BY table_name, owner
HAVING SUM(bytes)/1024/1024 > 10 /* Ignore really small tables */
ORDER BY SUM(bytes) desc
;
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #39261670
Pit_T,

спасибо, что не оставил тему без ответа. Мы тут тебя три года ждали, спаситель ты наш
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #39261783
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pit_TВот селектне все типы сегментов учтены и из приведенных не всегда корректно приведены к имени таблицы. опять частичное решение.
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #39261941
Фотография samatom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Pit_TВот селектне все типы сегментов учтены и из приведенных не всегда корректно приведены к имени таблицы. опять частичное решение.Стесняюсь спросить, что еще необходимо учесть? Заранее спасибо.
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #39261962
Фотография samatom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечу сам - nested table, claster, lob subpartition
...
Рейтинг: 0 / 0
узнать размер таблицы?
    #39261965
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samatomОтвечу сам - nested table, claster , lob subpartition

WTF?
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / узнать размер таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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