как да проверите размера на схемата в


Отговор 1:

Зависи дали се опитвате да намерите размера на разпределените за таблицата размери или дали имате предвид размера на данните вътре в нея.

Данните от базата данни на Oracle се съхраняват в блокове и непрекъснат брой блокове с данни е степен. Един или повече екстенти ще съставят сегмент, който съответства на индекс, таблица, дял на таблица и т.н. Ако искате да знаете общия размер, разпределен за неразделена таблица, използвайте:

SQL> изберете сума (байтове)от потребителски_сегментикъдето segment_type = 'TABLE'и segment_name = '& tabname';

Проблемът е, че ако сте добавили милион редове към таблица и след това ги изтриете всички, ще има разпределени много размери, но в тях няма да има данни. Ако искате да знаете размера на действителните данни, съхранявани в таблицата, съберете статистиката на таблицата:

SQL> exec dbms_stats.gather_table_stats ('& owner', '& tabname');

След това умножете броя на редовете по средния размер на редовете (байтове):

SQL> изберете avg_row_len * num_rowsот user_tablesкъдето table_name = '& tabname';

Като алтернатива можете да разгледате пакета dbms_space.


Отговор 2:

Трябва да погледнете физическото му представяне. Не е нужно да използвате блокове или екстенти, а сегменти. Отидете до диктонарния DBA_SEGMENTS и намерете обекта си (име_сегмент и собственик) и сумирайте байтовете.

SQL заявката по-долу:

ИЗБЕРЕТЕ собственик, таблица с име_на_сегменти, име, сума (байтове) / 1024/1024 като MB ОТ dba_segments WHERE owner = '& ObjectOwner' И segment_name = '& ObjectName' GROUP BY owner, segment_name

Той ще отговори на въпроса ви.

Имайте предвид, че не филтрирате типа сегмент, така че ако вашето име и собственик съответстват на индекс или друго, ще ви покажат мястото, което той разпределя за този обект.

Това е приблизително, тъй като таблицата може да бъде фрагментирана (да кажем, че има празни интервали между редовете) и те ще бъдат отчетени като част от разпределеното пространство от таблицата.


Отговор 3:

За да намерите топ n най-големите (напр. 20-те най-големи) обекта, може да се използва тази заявка:

задайте линии 200

задайте страници 200

задайте numformat 999,999,999.9

col собственик формат a10

col таблица_име формат a20

col сегмент_име формат a30

col сегмент_тип формат a12

col колона_име формат a20

col таблица име_на_формат формат a15

изберете

собственик, име_сегмент,

тип_сегмент,

GB,

таблично_име

от (

изберете собственик, име_сегмент, тип_сегмент, (байтове / (1024 * 1024 * 1024)) "GB",

таблично_име от dba_segments

подреждане по байтове desc) където rownum <21;

Надявам се това да помогне.

С най-добри пожелания, Bhavesh Patel.


Отговор 4:

задайте линии 155

изчисляване на сумата от totalsize_megs в отчета

почивка на доклад

col собственик за a20

col сегмент_име за a30

col сегмент_тип за a10

col totalsize_megs за 999 999,9

изберете * от (

изберете собственик, име на сегмент, тип_сегмент,

сума (байта / 1024/1024) като totalsize_megs,

таблично_име

от dba_segments

където собственик като nvl ('& owner', owner)

и segment_name като nvl ('& table_name', segment_name)

и segment_type като nvl ('& type', segment_type)

група по собственик, име_сегмент, име_таблица, тип_сегмент

поръчка по 4 дес

)

където rownum <30

подредете по 4;

Дайте в името на собственика на входа (Собственик на схемата на таблицата на обекта)

и името на таблицата


Отговор 5:

Можете да намерите размера на таблицата в oracle, като използвате заявката по-долу.

изберете име_сегмент, сума (байтове) / 1024/1024/1024 GB от потребителски_сегменти, където segment_type = 'TABLE' и segment_name = горна ('& TABLE_NAME') група по име_на сегмент;

За да проверите размера на таблицата на дяловете:

изберете PARTITION_NAME, сума (байтове) / 1024/1024/1024 MB от dba_segments, където SEGMENT_NAME = горна ('& TABLE_NAME') и PARTITION_NAME = 'P01' група от PARTITION_NAME;

Как да намерите размера на таблицата в Oracle - orahow

Отговор 6:

изберете име_сегмент, тип_сегмент, байтове / 1024/1024 MB от dba_segments където segment_type = 'tablename' и segment_name = 'tablename';

Справка: https://community.oracle.com/thread/1113909


Отговор 7:

За да получите размер в MB, използвайте:

изберете име на сегмент, тип_сегмент, байтове / 1024/1024 MB от dba_segmentsкъдето segment_type = 'TABLE' и segment_name = ' ';

Отговор 8:

изберете байтове / 1024/1024 MB от потребителски_сегменти, където segment_name = 'Table_name'

Споменете името на таблицата в клаузата where, за която търсите името на таблицата, която търсите.


Отговор 9:

Изпълнете следната заявка:

ИЗБЕРЕТЕ DS.TABLESPACE_NAME, SEGMENT_NAME, КРЪГЛИ (СУММА (DS.BYTES) / (1024 * 1024)) КАТО МБ

ОТ DBA_SEGMENTS DS

WHERE SEGMENT_NAME = името на вашата таблица тук

ГРУПИРАНЕ ПО DS.TABLESPACE_NAME, SEGMENT_NAME;


Отговор 10:

ИЗБЕРЕТЕ СУММА (байта) ОТ dba_segments WHERE segment_type = 'TABLE' И segment_name = UPPER ('& nombretabla')


Отговор 11:

заявка dba_segments