Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie o sprawdzenie rozmiaru tabeli w bazie danych Oracle

Często musimy dowiedzieć się, jak duży jest ten konkretny stół z wyrocznią. Załóżmy, że ładowałeś ogromne ilości danych i chcesz poznać przydzielony rozmiar tabeli Oracle.

Możemy użyć poniższego zapytania, aby sprawdzić rozmiar tabeli w Oracle

Dla rozmiaru tabeli Oracle w 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>';

Dla rozmiaru stołu Oracle w 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>';

Jeśli nie masz dostępu do dba_segments, możesz również użyć user_segments

Dla rozmiaru w 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>’

Dla rozmiaru w 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>’;

możemy również użyć tego zapytania, aby znaleźć dziesięć największych największych tabel w określonym schemacie lub przestrzeni tabel

10 największych dużych stołów w schemacie szczegółowym

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 najlepszych dużych stołów w określonej przestrzeni stołowej

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;

Wymień tabele większe niż 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;

Oto zapytanie, jeśli chcesz poznać również miejsce związane z indeksami w tabeli

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
/

Suma rozmiaru tabeli dla konkretnego schematu

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;

Powyższe zapytania zapewnią przestrzeń przydzieloną w bazie danych. Jeśli interesuje Cię ilość miejsca zajmowanego przez tabelę, możesz użyć poniższego zapytania

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';

To zapytanie powinno zostać uruchomione po wygenerowaniu statystyk dla tabeli.

Jeśli interesuje Cię wykorzystanie miejsca w tabeli w czasie lub trend wzrostu obiektów, możesz użyć poniższego zapytania

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

Jak obliczyć rozmiar tabeli zawierającej segmenty LOB

wybierz z kolumny BYTES w DBA_SEGMENTS, aby tabela wyświetlała segment tabeli, ale nie zawiera rozmiarów segmentów LOB (CLOB lub BLOB).
Aby obliczyć całkowity rozmiar tabeli i powiązanych segmentów LOBS, należy występują:
bajty dla tabeli => z dba_segments
+
bajty dla segmentów LOB => z dba_lobs i dba_segments gdzie segment_type to LOBSEGMENT
+
bajty dla indeksu LOB (Lob Locator) =z dba_indexes i dba_segments

Możemy użyć poniższego zapytania, aby obliczyć całkowity rozmiar

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;

Mam nadzieję, że spodobał Ci się ten artykuł na temat sprawdzania rozmiaru tabeli w bazie danych Oracle. Zadaliśmy różne zapytania i możesz ich użyć zgodnie z wymaganiami. Prosimy o przesłanie opinii

Powiązane artykuły

Jak sprawdzić przestrzeń tabel w Oracle:Dowiedz się, jak sprawdzić przestrzeń tabel w Oracle, wolne miejsce w przestrzeni tabel, informacje o zwiększeniu przestrzeni tabel, rozmiar obszaru tabel, powiązane pliki danych, rozmiar obszaru tabel
Zmień tabelę w Oracle:Zmień tabelę w Oracle służy do modyfikacji kolumnę, upuść i dodaj ograniczenia, zmień typ danych kolumny tabeli, zmień parametry przechowywania tabeli
utwórz tabelę w Oracle:Tabele są podstawową jednostką przechowywania danych w bazie danych Oracle. omówimy, jak używać polecenia Oracle create table do tworzenia tabeli z kluczem obcym /klucz podstawowy
zmień tabelę dodaj wyrocznię kolumn:Przydatny wgląd w Jak zmienić tabelę dodaj wyrocznię kolumn. Szczegóły dotyczące funkcji szybkiego dodawania kolumn wprowadzonej w Oracle 11g
zadanie pytania
Wysoki znak wodny w Oracle:Wysoki znak wodny w bazie danych Oracle służy do pokazywania bloków, które były kiedykolwiek używane w cyklu życia Tabela oracle
ora-00942:Dowiedz się, jak rozwiązywać problemy z tabelą lub widokiem ORA-00942 nie istnieje w bazie danych Oracle.Łatwe sposoby rozwiązania błędu w krótszym czasie

Polecane kursy

Oto fajny kurs Udemy dotyczący Oracle SQL
Oracle-Sql-Step-by-step :Ten kurs obejmuje podstawowy SQL, złączenia, tworzenie tabel i modyfikowanie ich struktury, tworzenie widoków, łączenie, łączenie i wiele innych rzeczy . Świetny kurs i obowiązkowy kurs dla początkujących SQL
Pełny kurs certyfikacji Oracle SQL :To dobry kurs dla każdego, kto chce być gotowy do pracy w zakresie umiejętności programistycznych SQL. Fajnie objaśniony kurs
Oracle SQL Developer:Essentials, Tips and Tricks :Narzędzie programistyczne Oracle SQL jest używane przez wielu programistów. Ten kurs zawiera sztuczki i lekcje, jak skutecznie z niego korzystać i zostać produktywnym programistą sql
Oracle SQL Performance Tuning Masterclass 2020 :Dostrajanie wydajności jest jedną z najważniejszych i najbardziej poszukiwanych umiejętności. To dobry kurs, aby się o tym dowiedzieć i zacząć dostrajać wydajność 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. Oracle:zapytanie SQL, które zwraca wiersze zawierające tylko wartości liczbowe

  2. Parsowanie nazw tabel i kolumn z SQL/HQL Java

  3. Samouczek ORACLE SQL*Plus

  4. skuteczny sposób na sprawdzenie, czy istnieje wiersz tabeli

  5. jak zamienić wiele ciągów razem w Oracle