Muitas vezes precisamos descobrir o quão grande é essa mesa de oráculo em particular. Suponha que você tenha feito uma grande carga de dados e queira saber o tamanho da tabela oracle alocada.
Podemos usar a consulta abaixo para verificar o tamanho da tabela no oracle
Para o tamanho da tabela oracle em 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>';
Para o tamanho da tabela oracle em 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>';
Se você não tiver acesso a dba_segments, também poderá usar user_segments
Para o tamanho em 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>’
Para o tamanho em 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>’;
também podemos usar esta consulta para encontrar as dez maiores tabelas em um determinado esquema ou tablespace
As 10 principais tabelas grandes em esquema específico
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;
As 10 principais tabelas grandes em um tablespace específico
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;
Listar tabelas maiores que 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;
Aqui está a consulta se você quiser saber também o espaço associado aos índices na tabela
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 /
Soma do tamanho da tabela para um esquema específico
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;
As consultas acima fornecerão o espaço alocado no banco de dados. Se você estiver interessado no espaço de linha consumido pela tabela, poderá usar a consulta abaixo
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';
Essa consulta deve ser executada após a geração das estatísticas para a tabela.
Se você estiver interessado no uso do espaço da tabela durante um período de tempo ou na tendência de crescimento do objeto, poderá usar a consulta abaixo
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
Como calcular o tamanho da tabela que contém segmentos LOB
selecione na coluna BYTES em DBA_SEGMENTS para que a tabela mostre o segmento da tabela, mas não inclua os tamanhos dos segmentos LOB (CLOB ou BLOB).
Para calcular o tamanho total da tabela e os segmentos LOBS associados, uma soma dos seguintes deve ser ocorrem:
os bytes para a tabela => de dba_segments
+
os bytes para os segmentos LOB => de dba_lobs e dba_segments onde segment_type é LOBSEGMENT
+
o bytes para o LOB Index (Lob Locator) =de dba_indexes e dba_segments
Podemos usar a consulta abaixo para calcular o tamanho total
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;
Espero que você goste deste artigo sobre como verificar o tamanho da tabela no banco de dados Oracle. Demos várias consultas e você pode usá-las de acordo com a necessidade. Por favor, forneça o feedback
Artigos relacionados
Como verificar o tablespace no Oracle:Aprenda como verificar o tablespace no Oracle, tablespace free space, informações de crescimento do tablespace, tamanho do tablespace, arquivos de dados associados, tamanho do tablespace
Alter Table in Oracle:Alter table in oracle é usado para modificar uma coluna, remover e adicionar restrições, alterar o tipo de dados da coluna da tabela, alterar os parâmetros de armazenamento da tabela
criar tabela no oracle:As tabelas são a unidade básica de armazenamento de dados em um banco de dados Oracle. abordamos como usar o comando Oracle create table para criar uma tabela com chave estrangeira / chave primária Detalhes sobre o recurso de adição rápida de coluna introduzido no oracle 11g
pergunte a pergunta
High Water Mark in Oracle:High Water Mark no banco de dados Oracle é usado para mostrar os blocos que já foram usados no ciclo de vida do tabela oracle
ora-00942:Aprenda a solucionar problemas de tabela ou visualização ORA-00942 não existe no banco de dados Oracle. Maneiras fáceis de resolver o erro em menos tempo
Cursos recomendados
Aqui está o bom curso da Udemy para Oracle SQL
Oracle-Sql-Step-by-step:Este curso abrange sql básico, junções, criação de tabelas e modificação de sua estrutura, criação de exibição, união, união -tudo e muitas outras coisas . Um ótimo curso e curso obrigatório para iniciantes em SQL
O Curso Completo de Certificação Oracle SQL :Este é um bom curso para quem quer estar pronto para trabalhar com habilidades de desenvolvedor SQL. Um bom curso explicado
Oracle SQL Developer:Essentials, Tips and Tricks :A ferramenta de desenvolvedor Oracle Sql está sendo usada por muitos desenvolvedores. Este curso nos dá truques e lições sobre como usá-lo efetivamente e se tornar um desenvolvedor sql produtivo
Oracle SQL Performance Tuning Masterclass 2020 :O ajuste de desempenho é uma das habilidades críticas e mais procuradas. Este é um bom curso para aprender sobre isso e começar a fazer o ajuste de desempenho do sql