sql >> Base de Datos >  >> RDS >> Oracle

Consulta para verificar el tamaño de la tabla en la base de datos Oracle

A menudo necesitamos averiguar qué tan grande es esa tabla de oráculo en particular. Suponga que hizo una gran carga de datos y desea saber el tamaño de la tabla de Oracle asignado.

Podemos usar la siguiente consulta para verificar el tamaño de la tabla en Oracle

Para el tamaño de la tabla de Oracle en 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 el tamaño de la tabla de Oracle en 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>';

Si no tiene acceso a dba_segments, también puede usar user_segments

Para el tamaño en 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 el tamaño en 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>’;

también podemos usar esta consulta para encontrar las diez tablas más grandes en un esquema o espacio de tablas en particular

Top 10 tablas grandes en esquema particular

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 mesas grandes en Tablespace Particular

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;

Mostrar tablas de más de 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;

Aquí está la consulta si también desea conocer el espacio asociado con los índices en la tabla

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
/

Suma del tamaño de la tabla para un esquema particular

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;

Las consultas anteriores proporcionarán el espacio asignado en la base de datos. Si está interesado en el espacio de fila consumido por la tabla, puede utilizar la siguiente consulta

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

Esta consulta debe ejecutarse después de generar las estadísticas para la tabla.

Si está interesado en el uso del espacio de la tabla durante un período de tiempo o en la tendencia de crecimiento del objeto, puede utilizar la siguiente consulta

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

Cómo calcular el tamaño de la tabla que contiene segmentos LOB

seleccione de la columna BYTES en DBA_SEGMENTS para que la tabla muestre el segmento de la tabla pero no incluya los tamaños de los segmentos LOB (CLOB o BLOB).
Para calcular el tamaño total de la tabla y los segmentos LOBS asociados, se debe sumar lo siguiente ocurrir:
los bytes para la tabla => de dba_segments
+
los bytes para los segmentos LOB => de dba_lobs y dba_segments donde tipo_segmento es LOBSEGMENT
+
el bytes para el índice LOB (Lob Locator) =de dba_indexes y dba_segments

Podemos usar la siguiente consulta para calcular el tamaño 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 le guste este artículo sobre cómo verificar el tamaño de la tabla en la base de datos de Oracle. Hemos dado varias consultas y puede usarlas de acuerdo con el requisito. Proporcione sus comentarios

Artículos relacionados

Cómo verificar el espacio de tablas en Oracle:aprenda cómo verificar el espacio de tablas en Oracle, el espacio libre del espacio de tablas, la información de crecimiento del espacio de tablas, el tamaño del espacio de tablas, los archivos de datos asociados, el tamaño del espacio de tablas una columna, eliminar y agregar restricciones, cambiar el tipo de datos de la columna de la tabla, cambiar los parámetros de almacenamiento de la tabla
crear una tabla en Oracle:Las tablas son la unidad básica de almacenamiento de datos en una base de datos Oracle. Cubrimos cómo usar el comando de creación de tabla de Oracle para crear una tabla con clave externa/clave primaria
alterar tabla agregar columna oráculo:información útil sobre cómo alterar tabla agregar columna oráculo. Detalles sobre la función de adición rápida de columnas introducida en Oracle 11g
pregunta de asktom
Marca de límite superior en Oracle:la marca de límite superior en la base de datos de Oracle se utiliza para mostrar los bloques que se han utilizado alguna vez en el ciclo de vida del tabla oracle
ora-00942:aprenda a solucionar el problema de la tabla o vista ORA-00942 que no existe en la base de datos Oracle. Maneras fáciles de resolver el error en menos tiempo

Cursos recomendados

Aquí está el buen curso de Udemy para Oracle SQL
Oracle-Sql-Step-by-step:este curso cubre sql básico, uniones, creación de tablas y modificación de su estructura, creación de vistas, unión, unión, todo y mucho más. . Un gran curso y un curso imprescindible para principiantes de SQL
El curso completo de certificación de Oracle SQL :Este es un buen curso para cualquier persona que quiera estar preparado para trabajar con habilidades de desarrollador de SQL. Un buen curso explicado
Oracle SQL Developer:fundamentos, consejos y trucos :muchos desarrolladores utilizan la herramienta para desarrolladores Oracle Sql. Este curso nos brinda trucos y lecciones sobre cómo usarlo de manera efectiva y convertirnos en un desarrollador sql productivo
Oracle SQL Performance Tuning Masterclass 2020 :El ajuste del rendimiento es una de las habilidades críticas y más buscadas. Este es un buen curso para aprender sobre esto y comenzar a realizar ajustes de rendimiento de sql