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