Oracle
 sql >> база данни >  >> RDS >> Oracle

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

Често трябва да разберем колко голяма е тази конкретна таблица с оракул. Да предположим, че сте заредили огромно количество данни и искате да знаете размера на разпределената таблица на Oracle.

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

За размера на таблицата на Oracle в MB

select
owner as "Schema"
, segment_name as "Object Name"
, segment_type as "Object Type"
, round(bytes/1024/1024,2) as "Object Size (Mb)"
, tablespace_name as "Tablespace"
from dba_segments
where segment_name=’<table_name>’
and owner='<Table owner>';

За размера на таблицата на Oracle в GB

select
owner as "Schema"
, segment_name as "Object Name"
, segment_type as "Object Type"
, round(bytes/1024/1024/1024,2) as "Object Size (Gb)"
, tablespace_name as "Tablespace"
from dba_segments
where segment_name=’<table_name>’
and owner='<Table owner>'
and owner='<Table owner>';

Ако нямате достъп до dba_segments, тогава можете да използвате и user_segments

За размера в MB

select segment_name as "Object Name"
, segment_type as "Object Type"
, round(bytes/1024/1024,2) as "Object Size (Mb)"
, tablespace_name as "Tablespace"
from user_segments
where segment_name=’<table_name>’

За размера в GB

select
segment_name as "Object Name"
, segment_type as "Object Type"
, round(bytes/1024/1024/1024,2) as "Object Size (Gb)"
, tablespace_name as "Tablespace"
from user_segments
where segment_name=’<table_name>’;

можем също да използваме тази заявка, за да намерим първите десет най-големи таблици в определена схема или пространство за таблици

Топ 10 големи таблици в конкретна схема

select * from (select
owner as "Schema"
, segment_name as "Object Name"
, segment_type as "Object Type"
, round(bytes/1024/1024/1024,2) as "Object Size (Gb)"
, tablespace_name as "Tablespace"
from dba_segments
where owner=’<schema>’  and segment_type='TABLE' order by 4 desc)  where rownum < 11;

Топ 10 големи маси в специално пространство за таблици

select * from (select
owner as "Schema"
, segment_name as "Object Name"
, segment_type as "Object Type"
, round(bytes/1024/1024/1024,2) as "Object Size (Gb)"
, tablespace_name as "Tablespace"
from dba_segments
where tablespace_name =’<tablespace name>' and segment_name='TABLE' order by 4 desc ) where rownum <11;

Избройте таблици, по-големи от 10G

select
owner as "Schema"
, segment_name as "Object Name"
, segment_type as "Object Type"
, round(bytes/1024/1024/1024,2) as "Object Size (Gb)"
, tablespace_name as "Tablespace"
from dba_segments
where segment_type='TABLE' where bytes/1024/1024/1024 >10  order by 4 desc;

Ето заявката, ако искате да знаете и пространството, свързано с индексите в таблицата

with tables
as
(
select segment_name tname, to_char(bytes/1024/1024,'999,999.99') table_size
from user_segments
where segment_type = 'TABLE'
and segment_name not like 'BIN%'
),
indexes
as
(
select table_name, index_name, scbp, rn,
(select to_char(bytes/1024/1024,'999,999.99') from user_segments where segment_name = INDEX_NAME and segment_type = 'INDEX') index_size
from (
select table_name, index_name,
substr( max(sys_connect_by_path( column_name, ', ' )), 3) scbp,
row_number() over (partition by table_name order by index_name) rn
from user_ind_columns
start with column_position = 1
connect by prior table_name = table_name
and prior index_name = index_name
and prior column_position+1 = column_position
group by table_name, index_name
)
)
select decode( nvl(rn,1), 1, tables.tname ) tname,
decode( nvl(rn,1), 1, tables.table_size ) table_size,
rn "INDEX#",
indexes.scbp,
indexes.index_name,
indexes.index_size
from tables, indexes
where tables.tname = indexes.table_name(+)
and tables.tname = '&1'
order by tables.tname, indexes.rn
/

Сбор от размера на таблицата за конкретна схема

select owner,sum(bytes)/1024/1024/1024 as "SIZE in GB" from dba_segments where owner='SCHEMA_NAME' and segment_type='TABLE' group by owner;

Горните заявки ще осигурят пространството, разпределено в базата данни. Ако се интересувате от пространството на редовете, консумирано от таблицата, можете да използвате заявката по-долу

select round((num_rows*avg_row_len/1024),2) used_space_bytes from dba_tables where table_name ='<table name>'
and table_owner='<table owner';

Тази заявка трябва да се изпълни след генериране на статистическите данни за таблицата.

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

select * from table(dbms_space.OBJECT_GROWTH_TREND('<table owner>','<table name>','TABLE'));

Example
SQL> select * from table(dbms_space.OBJECT_GROWTH_TREND('SCOTT','EMP_DATA','TABLE'));
TIMEPOINT SPACE_USAGE SPACE_ALLOC QUALITY
---------------------- ---------- ------------ --------
05-JUN-19 08.59.45.214446 AM 210979117 225829120 INTERPOLATED
06-JUN-19 08.59.45.214446 AM 210979117 225829120 INTERPOLATED
07-JUN-19 08.59.45.214446 AM 210979117 225829120 INTERPOLATED

Как да изчислим размера за таблицата, съдържаща LOB сегменти

изберете от колоната BYTES в DBA_SEGMENTS за таблицата показва сегмента на таблицата, но не включва LOB (CLOB или BLOB) размери на сегментите.
За да се изчисли общият размер за таблицата и свързаните LOBS сегменти, трябва да има сума от следното възникват:
байтовете за таблицата => от dba_segments
+
байтовете за LOB сегментите => от dba_lobs и dba_segments, където segment_type е LOBSEGMENT
+
байтове за LOB индекса (Lob Locator) =от dba_indexes и dba_segments

Можем да използваме заявката по-долу, за да изчислим общия размер

ACCEPT SCHEMA PROMPT 'Table Owner: '
ACCEPT TABNAME PROMPT 'Table Name: '
SELECT
(SELECT SUM(S.BYTES)
FROM DBA_SEGMENTS S
WHERE S.OWNER = UPPER('&SCHEMA') AND
(S.SEGMENT_NAME = UPPER('&TABNAME'))) +
(SELECT SUM(S.BYTES)
FROM DBA_SEGMENTS S, DBA_LOBS L
WHERE S.OWNER = UPPER('&SCHEMA') AND
(L.SEGMENT_NAME = S.SEGMENT_NAME AND L.TABLE_NAME = UPPER('&TABNAME') AND L.OWNER = UPPER('&SCHEMA'))) +
(SELECT SUM(S.BYTES)
FROM DBA_SEGMENTS S, DBA_INDEXES I
WHERE S.OWNER = UPPER('&SCHEMA') AND
(I.INDEX_NAME = S.SEGMENT_NAME AND I.TABLE_NAME = UPPER('&TABNAME') AND INDEX_TYPE = 'LOB' AND I.OWNER = UPPER('&SCHEMA')))
"TOTAL TABLE SIZE"
FROM DUAL;

Надяваме се да ви хареса тази статия за как да проверите размера на таблицата в базата данни на Oracle. Дадохме различни запитвания и можете да ги използвате според изискването. Моля, предоставете обратната връзка

Сродни статии

Как да проверите пространството за таблици в Oracle:Научете как да проверите пространството за таблици в Oracle, свободното пространство за таблици, информацията за растежа на табличното пространство, размера на пространството за таблици, свързаните файлове с данни, размера на табличното пространство
Промяна на таблицата в Oracle:Промяната на таблицата в Oracle се използва за модифициране колона, махнете и добавете ограничения, променете типа данни на колоната на таблицата, променете параметрите за съхранение на таблицата
създайте таблица в oracle:Таблиците са основната единица за съхранение на данни в базата данни на Oracle. ние описваме как да използваме командата за създаване на таблица на Oracle за създаване на таблица с външен ключ /първичен ключ
alter table add column oracle:Полезна информация за това как да промените таблица add column oracle. Подробности за функцията за бързо добавяне на колони, въведена в oracle 11g
asktom question
High Water Mark в Oracle:High Water Mark в базата данни на oracle се използва за показване на блоковете , които някога са били използвани в жизнения цикъл на oracle table
ora-00942:Научете се да отстранявате неизправности ORA-00942 таблица или изглед не съществува в базата данни на Oracle. Лесни начини за разрешаване на грешката за по-малко време

Препоръчани курсове

Ето хубавия курс на Udemy за Oracle SQL
Oracle-Sql-Step-by-step :Този курс обхваща основния sql, присъединяването, Създаването на таблици и промяната на структурата им, Създаване на изглед, Обединение, Обединение - всичко и много други неща . Страхотен курс и задължителен курс за SQL начинаещи
Пълният курс за сертифициране на Oracle SQL :Това е добър курс за всеки, който иска да бъде готов за работа за SQL разработчици. Приятно обяснен курс
Oracle SQL Developer:Основни неща, съвети и трикове :Инструментът за разработчици на Oracle Sql се използва от много разработчици. Този курс ни дава трикове и уроци как да го използваме ефективно и да станем продуктивен sql разработчик
Мастърклас за настройка на производителността на Oracle 2020 г. :Настройката на производителността е едно от критичните и най-търсените умения. Това е добър курс, за да научите за него и да започнете да правите настройка на производителността на sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Код за извикване на функция в пакет от C# и ODP.NET

  2. Как да създадете ненулево ограничение в oracle

  3. Как да извика функция или съхранена процедура на Oracle, използвайки рамка за постоянство на пружината?

  4. Инсталиране на софтуер Oracle Database 12c на Windows

  5. Безплатни ES за 11.2.0.4 и 12.2 Дата на пускане