We moeten vaak uitzoeken hoe groot die specifieke orakeltafel is. Stel dat u een enorme hoeveelheid gegevens hebt geladen en de toegewezen grootte van de orakeltabel wilt weten.
We kunnen de onderstaande query gebruiken om de tabelgrootte in orakel te controleren
Voor orakeltabelgrootte in 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>';
Voor orakeltabelgrootte in 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>';
Als u geen toegang heeft tot dba_segments, kunt u ook user_segments gebruiken
Voor de grootte in 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>’
Voor de grootte in 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>’;
we kunnen deze zoekopdracht ook gebruiken om de top tien van grootste tabellen in een bepaald schema of bepaalde tabelruimte te vinden
Top 10 grote tabellen in een bepaald schema
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;
Top 10 grote tafels in een bepaalde tafelruimte
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;
Maak tabellen groter dan 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;
Hier is de vraag als u ook de ruimte wilt weten die is gekoppeld aan de indexen op de tafel
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 /
Som van de grootte van de tabel voor een bepaald schema
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;
De bovenstaande query's zorgen voor de toegewezen ruimte in de database. Als u geïnteresseerd bent in rijruimte die door de tabel wordt verbruikt, kunt u onderstaande query gebruiken
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';
Deze query moet worden uitgevoerd nadat de statistieken voor de tabel zijn gegenereerd.
Als u geïnteresseerd bent in het ruimtegebruik van de tabel over een bepaalde periode of in de groeitrend van het object, kunt u de onderstaande vraag gebruiken
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
Hoe de grootte te berekenen voor de tabel met LOB-segmenten
selecteer uit de kolom BYTES in DBA_SEGMENTS voor de tabel toont het tabelsegment maar bevat geen LOB (CLOB of BLOB) segmentgroottes.
Om de totale grootte voor de tabel en de bijbehorende LOBS-segmenten te berekenen, moet een som van het volgende optreden:
de bytes voor de tabel => van dba_segments
+
de bytes voor de LOB-segmenten => van dba_lobs en dba_segments waarbij segment_type LOBSEGMENT is
+
de bytes voor de LOB Index (Lob Locator) =van dba_indexes en dba_segments
We kunnen de onderstaande query gebruiken om de totale grootte te berekenen
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;
Ik hoop dat je dit artikel leuk vindt over het controleren van de tabelgrootte in de Oracle-database. We hebben verschillende vragen gegeven en u kunt ze gebruiken volgens de vereiste. Geef alsjeblieft de feedback
Gerelateerde artikelen
Tabelruimte controleren in Oracle:meer informatie over het controleren van tabelruimte in Oracle, vrije ruimte in tabelruimte, informatie over groei van tabelruimte, grootte van tabelruimte, bijbehorende gegevensbestanden, grootte van tabelruimte
Tabel wijzigen in Oracle:Tabel wijzigen in Oracle wordt gebruikt om te wijzigen een kolom, verwijder en voeg beperkingen toe, wijzig het gegevenstype van de tabelkolom, wijzig de tabelopslagparameters
maak een tabel in Oracle:Tabellen zijn de basiseenheid van gegevensopslag in een Oracle Database. we bespreken hoe u de Oracle Create Table-opdracht kunt gebruiken om een tabel te maken met een externe sleutel /primaire sleutel
tabel wijzigen kolom orakel toevoegen:Nuttig inzicht in het wijzigen van tabel toevoegen kolom orakel. Details over de functie voor snel toevoegen van kolommen in oracle 11g
asktom question
High Water Mark in Oracle:High Water Mark in de Oracle-database wordt gebruikt om de blokken weer te geven die ooit zijn gebruikt in de levenscyclus van de orakeltabel
ora-00942:leer problemen met de ORA-00942-tabel of -weergave op te lossen in de Oracle-database. Eenvoudige manieren om de fout in minder tijd op te lossen
Aanbevolen cursussen
Hier is de mooie Udemy-cursus voor Oracle SQL
Oracle-Sql-Step-voor-stap:deze cursus behandelt basis-sql, joins, tabellen maken en de structuur wijzigen, weergave maken, Union, Union -alles en nog veel meer . Een geweldige cursus en een must-have cursus voor SQL-starters
De complete Oracle SQL-certificeringscursus :Dit is een goede cursus voor iedereen die Job-klaar wil zijn voor SQL-ontwikkelaarsvaardigheden. Een mooi uitgelegde cursus
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql-ontwikkelaarstool wordt door veel ontwikkelaars gebruikt. Deze cursus geeft ons trucs en lessen om het effectief te gebruiken en een productieve sql-ontwikkelaar te worden
Oracle SQL Performance Tuning Masterclass 2020 :Het afstemmen van prestaties is een van de belangrijkste en meest gezochte vaardigheden. Dit is een goede cursus om erover te leren en te beginnen met het afstemmen van sql-prestaties