sql >> Databáze >  >> RDS >> Oracle

Dotaz na kontrolu velikosti tabulky v databázi Oracle

Často potřebujeme zjistit, jak velký je ten konkrétní věštecký stůl. Předpokládejme, že jste provedli obrovské zatížení dat a chcete znát velikost přidělené tabulky Oracle.

Ke kontrole velikosti tabulky v oracle

můžeme použít níže uvedený dotaz

Pro velikost tabulky Oracle v 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>';

Pro velikost tabulky Oracle v 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>';

Pokud nemáte přístup k dba_segments, můžete také použít user_segments

Pro velikost v 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>’

Pro velikost v 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>’;

tento dotaz můžeme také použít k nalezení prvních deseti největších tabulek v konkrétním schématu nebo tabulkovém prostoru

10 nejlepších velkých tabulek v konkrétním schématu

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 nejlepších velkých stolů v konkrétním tabulkovém prostoru

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;

Uveďte tabulky větší než 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;

Zde je dotaz, pokud chcete znát také prostor spojený s indexy v tabulce

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
/

Součet velikosti tabulky pro konkrétní schéma

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;

Výše uvedené dotazy poskytnou prostor přidělený v databázi. Pokud vás zajímá prostor řádků spotřebovaný tabulkou, můžete použít níže uvedený dotaz

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

Tento dotaz by měl být spuštěn po vygenerování statistik pro tabulku.

Pokud vás zajímá využití prostoru tabulky za určité období nebo trend růstu objektu, můžete použít níže uvedený dotaz

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 vypočítat velikost pro tabulku obsahující segmenty LOB

výběr ze sloupce BYTES v DBA_SEGMENTS pro tabulku zobrazuje segment tabulky, ale nezahrnuje velikosti segmentů LOB (CLOB nebo BLOB).
K výpočtu celkové velikosti tabulky a souvisejících segmentů LOBS musí být součet následujících vyskytují:
bajty pro tabulku => z dba_segments
+
bajty pro segmenty LOB => z dba_lobs a dba_segments, kde typ_segmentu je LOBSEGMENT
+
the bajtů pro index LOB (Lob Locator) =z dba_indexes a dba_segments

K výpočtu celkové velikosti můžeme použít níže uvedený dotaz

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;

Doufám, že se vám tento článek o tom, jak zkontrolovat velikost tabulky v databázi Oracle, bude líbit. Dali jsme různé dotazy a můžete je použít podle požadavku. Uveďte prosím zpětnou vazbu

Související články

Jak zkontrolovat tabulkový prostor v Oracle:Přečtěte si o tom, jak zkontrolovat tabulkový prostor v Oracle, volný prostor tabulkového prostoru, informace o růstu tabulkového prostoru, velikost tabulkového prostoru, přidružené datové soubory, velikost tabulkového prostoru
Změnit tabulku v Oracle:K úpravám se používá Alter tabulka v oracle sloupec, zrušení a přidání omezení, změna datového typu sloupce tabulky, změna parametrů úložiště tabulky
vytvoření tabulky v oracle:Tabulky jsou základní jednotkou ukládání dat v databázi Oracle. zabýváme se tím, jak používat příkaz Oracle create table k vytvoření tabulky s cizím klíčem /primární klíč
alter table add column oracle:Užitečný pohled na Jak změnit tabulku add column oracle. Podrobnosti o funkci rychlého přidávání sloupců představené v oracle 11g
položit otázku
High Water Mark v Oracle:High Water Mark v databázi Oracle se používá k zobrazení bloků, které byly kdy použity v životním cyklu Tabulka oracle
ora-00942:Naučte se odstraňovat problémy s tabulkou nebo pohledem ORA-00942 v databázi Oracle neexistuje. Snadné způsoby, jak chybu vyřešit za kratší dobu

Doporučené kurzy

Zde je pěkný kurz Udemy pro Oracle SQL
Oracle-Sql-krok za krokem:Tento kurz pokrývá základní sql, spojení, vytváření tabulek a úpravu jejich struktury, vytváření zobrazení, sjednocení, sjednocení – vše a mnoho dalších věcí. . Skvělý kurz a kurz, který musíte mít pro začátečníky SQL
Úplný certifikační kurz Oracle SQL :Toto je dobrý kurz pro každého, kdo chce být Job připraven na vývojářské dovednosti SQL. Pěkně vysvětlený kurz
Oracle SQL Developer:Základy, tipy a triky :Vývojářský nástroj Oracle Sql používá mnoho vývojářů. Tento kurz nám poskytuje triky a lekce, jak jej efektivně používat a stát se produktivním vývojářem sql
Oracle SQL Performance Tuning Masterclass 2020 :Ladění výkonu je jednou z kritických a nejvyhledávanějších dovedností. Toto je dobrý kurz, jak se o tom dozvědět a začít s laděním výkonu SQL


  1. Práce se sloupci MySQL TIMESTAMP v SQL Server

  2. Alternativní ovladače Oracle pro .net

  3. Chyby, úskalí a doporučené postupy T-SQL – pivotování a unpivoting

  4. 4 způsoby, jak získat informace o struktuře tabulky v SQLite