Wir müssen oft herausfinden, wie groß dieser bestimmte Orakeltisch ist. Angenommen, Sie haben eine große Datenmenge geladen und möchten die zugewiesene Oracle-Tabellengröße wissen.
Wir können die folgende Abfrage verwenden, um die Tabellengröße in Oracle
zu überprüfenFür Oracle-Tabellengröße 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>';
Für Oracle-Tabellengröße 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>';
Wenn Sie keinen Zugriff auf dba_segments haben, können Sie auch user_segments verwenden
Für die Größe 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>’
Für die Größe 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>’;
wir können diese Abfrage auch verwenden, um die zehn größten Tabellen in einem bestimmten Schema oder Tablespace zu finden
Top 10 der großen Tabellen in einem bestimmten 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 der großen Tische in einem bestimmten Tablespace
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;
Tabellen auflisten, die größer als 10 GB sind
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 ist die Abfrage, ob Sie auch den mit den Indizes in der Tabelle verknüpften Speicherplatz wissen möchten
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 /
Summe der Tabellengröße für ein bestimmtes 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;
Die obigen Abfragen liefern den in der Datenbank zugewiesenen Speicherplatz. Wenn Sie am von der Tabelle verbrauchten Zeilenspeicherplatz interessiert sind, können Sie die folgende Abfrage verwenden
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';
Diese Abfrage sollte ausgeführt werden, nachdem die Statistiken für die Tabelle generiert wurden.
Wenn Sie an der Speicherplatzbelegung der Tabelle über einen bestimmten Zeitraum oder am Objektwachstumstrend interessiert sind, können Sie die folgende Abfrage
verwendenselect * 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
So berechnen Sie die Größe für die Tabelle mit LOB-Segmenten
Aus der Spalte BYTES in DBA_SEGMENTS auswählen, damit die Tabelle das Tabellensegment anzeigt, aber keine LOB-Segmentgrößen (CLOB oder BLOB) enthält.
Um die Gesamtgröße für die Tabelle und die zugehörigen LOBS-Segmente zu berechnen, muss eine Summe der folgenden Werte verwendet werden auftreten:
die Bytes für die Tabelle => von dba_segments
+
die Bytes für die LOB-Segmente => von dba_lobs und dba_segments wobei segment_type LOBSEGMENT ist
+
the Bytes für den LOB Index (Lob Locator) =aus dba_indexes und dba_segments
Wir können die folgende Abfrage verwenden, um die Gesamtgröße zu berechnen
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;
Ich hoffe, Ihnen gefällt dieser Artikel zum Überprüfen der Tabellengröße in der Oracle-Datenbank. Wir haben verschiedene Abfragen angegeben, die Sie je nach Anforderung verwenden können. Bitte geben Sie Feedback
Verwandte Artikel
So überprüfen Sie den Tablespace in Oracle:Erfahren Sie, wie Sie den Tablespace in Oracle überprüfen, den freien Speicherplatz des Tablespace, die Informationen zum Tablespace-Wachstum, die Tablespace-Größe, die zugehörigen Datendateien, die Tablespace-Größe eine Spalte, Löschen und Hinzufügen von Einschränkungen, Ändern des Datentyps der Tabellenspalte, Ändern der Tabellenspeicherparameter
Erstellen einer Tabelle in Oracle:Tabellen sind die Grundeinheit der Datenspeicherung in einer Oracle-Datenbank. Wir behandeln, wie Sie den Oracle-Befehl „Tabelle erstellen“ verwenden, um eine Tabelle mit dem Fremdschlüssel /Primärschlüssel zu erstellen. Details zur Funktion zum schnellen Hinzufügen von Spalten, die in Oracle 11g eingeführt wurden
Frage von Asktom
High Water Mark in Oracle:Die High Water Mark in der Oracle-Datenbank wird verwendet, um die Blöcke anzuzeigen, die jemals im Lebenszyklus der verwendet wurden Oracle-Tabelle
ora-00942:Erfahren Sie, wie Sie ORA-00942-Tabelle oder -Ansicht in Oracle-Datenbank beheben
Empfohlene Kurse
Hier ist der nette Udemy-Kurs für Oracle SQL
Oracle-Sql-Schritt-für-Schritt :Dieser Kurs behandelt grundlegendes SQL, Joins, Erstellen von Tabellen und Ändern ihrer Struktur, Erstellen von Ansichten, Union, Union -all und vieles mehr . Ein großartiger Kurs und ein Muss für SQL-Einsteiger
Der vollständige Oracle SQL-Zertifizierungskurs :Dies ist ein guter Kurs für alle, die für SQL-Entwicklerfähigkeiten einsatzbereit werden möchten. Ein gut erklärter Kurs
Oracle SQL Developer:Grundlagen, Tipps und Tricks :Das Oracle Sql-Entwicklertool wird von vielen Entwicklern verwendet. Dieser Kurs gibt uns Tricks und Lektionen, wie man es effektiv nutzt und ein produktiver SQL-Entwickler wird
Oracle SQL Performance Tuning Masterclass 2020 :Leistungsoptimierung ist eine der kritischsten und gefragtesten Fähigkeiten. Dies ist ein guter Kurs, um mehr darüber zu erfahren und mit der Optimierung der SQL-Leistung zu beginnen