Subido por Daniel

Tuning SQL Recuperación de Espacio en Tablas

Anuncio
Lección 01: Recuperación de espacio en tablas
Talleres Oracle
RECUPERACION DE ESPACIO EN TABLAS
Con el tiempo, las actualizaciones y eliminaciones en objetos dentro de un espacio de tablas pueden crear
espacios vacíos que, individualmente, no son lo suficientemente grandes como para ser reutilizados para nuevos
datos. Este tipo de espacio vacío se conoce como espacio libre fragmentado.
Los objetos con espacio libre fragmentado pueden generar mucho desperdicio de espacio y pueden afectar el
rendimiento de la base de datos. La forma preferida de desfragmentar y reclamar este espacio es realizar
una reducción del segmento en línea.
-------------------------------------------------------------------- 1. CREANDO TABLESPACE TBS_DATOS, TABLAS E INSERCIÓN DE REGISTROS
-------------------------------------------------------------------
$ mkdir /u03/data
CREATE TABLESPACE TBS_DATOS
DATAFILE '/u03/data/df_data.dbf' SIZE 200M;
CREATE TABLE CURSO ( ID INTEGER , NOMBRE CHAR(200) )
TABLESPACE TBS_DATOS;
INSERT INTO CURSO
SELECT LEVEL , 'CURSO_' || LEVEL
FROM DUAL CONNECT BY LEVEL <= 500000;
COMMIT;
SELECT COUNT(*) FROM CURSO;
www.talleresoracle.com
Versión: 2021 11
Lección 01: Recuperación de espacio en tablas
Talleres Oracle
----------------------------------------------------- 2. ESPACIO OCUPADO POR LA TABLA – 500K REISTROS
----------------------------------------------------
SELECT SEGMENT_NAME, SEGMENT_TYPE, BYTES/1024/1024 MB, BLOCKS
FROM USER_SEGMENTS WHERE SEGMENT_NAME = 'CURSO';
-- NUMERO DE FILAS DE TABLA
SELECT OWNER, TABLE_NAME, BLOCKS, NUM_ROWS FROM DBA_TABLES
WHERE TABLE_NAME IN ('CURSO');
ANALYZE TABLE CURSO
COMPUTE STATISTICS;
----------------------------------- 3. BORRADO DEL 50% DE REGISTROS
----------------------------------
DELETE FROM CURSO WHERE ID <= 250000;
COMMIT;
-------------------------------------------------------- 4. ESPACIO OCUPADO POR LA TABLA LUEGO DEL BORRADO
-------------------------------------------------------
SELECT SEGMENT_NAME, SEGMENT_TYPE, BYTES/1024/1024 MB, BLOCKS
FROM USER_SEGMENTS WHERE SEGMENT_NAME = 'CURSO';
-- NUMERO DE FILAS DE TABLA ( conteo directo )
SELECT COUNT(*) FROM CURSO;
-- NUMERO DE FILAS DE TABLA (de las estadísticas)
SELECT OWNER, TABLE_NAME, BLOCKS, NUM_ROWS FROM DBA_TABLES
WHERE TABLE_NAME IN ('CURSO');
www.talleresoracle.com
Versión: 2021 11
Lección 01: Recuperación de espacio en tablas
Talleres Oracle
ANALYZE TABLE CURSO COMPUTE STATISTICS;
SELECT OWNER, TABLE_NAME, BLOCKS, NUM_ROWS FROM DBA_TABLES
WHERE TABLE_NAME IN ('CURSO');
----------------------------------- 5. RECUPERANDO ESPACIO DE REGISTROS BORRADOS
----------------------------------
ALTER TABLE CURSO ENABLE ROW MOVEMENT;
ALTER TABLE CURSO SHRINK SPACE ;
SELECT SEGMENT_NAME, SEGMENT_TYPE, BYTES/1024/1024, BLOCKS
FROM USER_SEGMENTS WHERE SEGMENT_NAME = 'CURSO';
www.talleresoracle.com
Versión: 2021 11
Descargar