sql >> Databasteknik >  >> RDS >> Oracle

Hur beräknar jag tabellstorlek i Oracle

Du kanske är intresserad av den här frågan. Den talar om hur mycket utrymme som tilldelas för varje tabell med hänsyn till indexen och eventuella LOB på bordet. Ofta är du intresserad av att veta "Hur mycket utrymme inköpsordertabellen tar, inklusive eventuella index" snarare än bara själva tabellen. Du kan alltid fördjupa dig i detaljerna. Observera att detta kräver åtkomst till DBA_*-vyerna.

COLUMN TABLE_NAME FORMAT A32
COLUMN OBJECT_NAME FORMAT A32
COLUMN OWNER FORMAT A10

SELECT
   owner, 
   table_name, 
   TRUNC(sum(bytes)/1024/1024) Meg,
   ROUND( ratio_to_report( sum(bytes) ) over () * 100) Percent
FROM
(SELECT segment_name table_name, owner, bytes
 FROM dba_segments
 WHERE segment_type IN ('TABLE', 'TABLE PARTITION', 'TABLE SUBPARTITION')
 UNION ALL
 SELECT i.table_name, i.owner, s.bytes
 FROM dba_indexes i, dba_segments s
 WHERE s.segment_name = i.index_name
 AND   s.owner = i.owner
 AND   s.segment_type IN ('INDEX', 'INDEX PARTITION', 'INDEX SUBPARTITION')
 UNION ALL
 SELECT l.table_name, l.owner, s.bytes
 FROM dba_lobs l, dba_segments s
 WHERE s.segment_name = l.segment_name
 AND   s.owner = l.owner
 AND   s.segment_type IN ('LOBSEGMENT', 'LOB PARTITION')
 UNION ALL
 SELECT l.table_name, l.owner, s.bytes
 FROM dba_lobs l, dba_segments s
 WHERE s.segment_name = l.index_name
 AND   s.owner = l.owner
 AND   s.segment_type = 'LOBINDEX')
WHERE owner in UPPER('&owner')
GROUP BY table_name, owner
HAVING SUM(bytes)/1024/1024 > 10  /* Ignore really small tables */
ORDER BY SUM(bytes) desc
;


  1. Köra ett MariaDB Galera-kluster utan verktyg för containerorkestrering:Del ett

  2. PostgreSQL-borttagning med inre koppling

  3. 2 sätt att få antalet dagar i en månad i Oracle

  4. Hur ändrar jag positionen för en kolumn i en PostgreSQL-databastabell?