Managing Database
Storage Structures
Creado por Camilo Torres
Este curso explora la gestión de estructuras de almacenamiento en
bases de datos Oracle, cubriendo desde bloques de datos hasta
tablespaces completos.
by Camilo Torres
Objetivos
Después de completar esta lección, serás capaz de:
• Describir el almacenamiento de datos de filas de tablas en bloques
• Crear y gestionar tablespaces
• Obtener información sobre tablespaces
¿Cómo se almacenan los
datos de tablas?
Columns
Componentes básicos que definen la estructura de datos en una tabla
Rows
Filas de datos que contienen la información almacenada en la tabla
Blocks
Unidades básicas de almacenamiento donde se guardan las filas
Tablespace
Unidad lógica que agrupa segmentos y facilita la administración
Database Block: Contenidos
Estructura de un bloque de base de Eldatos
tamaño del bloque se configura durante la creación de
la base de datos y afecta directamente al rendimiento.
Los bloques son las unidades fundamentales de Un bloque más grande puede almacenar más filas pero
almacenamiento en Oracle y contienen: podría aumentar la contención.
• Free space: Espacio disponible para nuevos datos La administración eficiente del espacio dentro de los
• bloques es crucial para optimizar el rendimiento de la
Row data: Almacena los datos reales de las filas de
base de datos.
tabla
• Block header: Contiene información de metadatos
sobre el bloque, SCN (System Change Number), Tipo
de bloque, Información de control de transacciones,
Información de consistencia
Explorando la Estructura de Almacenamiento
Visualización mediante SQL*Plus Estructura jerárquica
• Tablespaces contienen segmentos
SQL> SELECT * FROM dba_tablespaces;
• Segmentos contienen extents
SQL> SELECT * FROM dba_data_files;
SQL> SELECT * FROM dba_segments WHERE • Extents contienen bloques
tablespace_name='USERS'; • Bloques almacenan filas
Esta jerarquía facilita la organización y gestión eficiente de los datos en Oracle.
Estos comandos nos permiten examinar la estructura de almacenamiento sin
depender del Enterprise Manager.
Creando un Nuevo Tablespace
Usando SQL*Plus Parámetros principales
• DATAFILE: Ubicación y nombre del archivo de datos
SQL> CREATE TABLESPACE users_data DATAFILE
• SIZE: Tamaño inicial del archivo
'/u01/app/oracle/oradata/ orcl/users_data01.dbf'
SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 500M; • AUTOEXTEND: Permite crecimiento automático
• NEXT: Incremento cuando sea necesario expandir
• MAXSIZE: Límite máximo de crecimiento
Creando Tablespace con SQL
Developer
SQL Developer ofrece una interfaz gráfica para la creación de tablespaces, pero
internamente genera los mismos comandos SQL que escribiríamos en SQL*Plus.
Paso 1
Conectarse como usuario con privilegios administrativos (SYSDBA)
Paso 2
Navegar a la sección de Tablespaces en el panel de navegación
Paso 3
Hacer clic derecho y seleccionar "Crear Tablespace"
Paso 4
Configurar nombre, ubicación de archivos y opciones adicionales
Configuración de Tablespace Temporal
Tablespaces Temporales Características especiales
Se utilizan para operaciones de ordenamiento y creación de índices temporales • Utilizan archivos TEMPFILE en lugar de DATAFILE
durante consultas complejas. • No almacenan datos permanentes
• Optimizados para operaciones de ordenamiento
SQL> CREATE TEMPORARY TABLESPACE temp_users TEMPFILE
• Importante dimensionarlos adecuadamente para consultas grandes
'/u01/app/oracle/oradata/ orcl/temp_users01.dbf'
SIZE 50M AUTOEXTEND ON;
Grupos de Tablespaces Tempora
Los grupos de tablespaces temporales permiten distribuir la carga de trabajo de
ordenamiento entre múltiples tablespaces.
Crear grupo Añadir tablespace
SQL> CREATE TABLESPACE TEMP2... SQL> ALTER TABLESPACE SET
SQL> ALTER DATABASE temp_group ADD TABLESPACE
DEFAULT TEMPORARY TABLESPACE temp2;
temp_group;
Eliminar tablespace
SQL> ALTER TABLESPACE SET
temp_group REMOVE
TABLESPACE temp2;
Tablespaces Creados por Defecto
SYSTEM
SYSAUX
Almacena el diccionario de datos y
Tablespace auxiliar que contiene
objetos del sistema core. Crítico para
componentes como AWR, ADDM y
el funcionamiento de la base de
otros componentes Oracle.
datos.
EXAMPLE UNDOTBS1
Opcional, contiene esquemas de Almacena información de deshacer
ejemplo para aprendizaje y (undo) para operaciones DML y
pruebas. recuperación.
TEMP
USERS
Usado para operaciones de
Destinado a almacenar objetos y
ordenamiento y almacenamiento
datos de usuarios del sistema.
temporal durante consultas.
Alterando un Tablespace
Operaciones comunes Casos de uso
• READ ONLY: Útil para tablespaces históricos o de referencia que no cambian
-- Cambiar a modo de solo lecturaSQL> ALTER TABLESPACE users READ ONLY;--
• OFFLINE: Necesario para mantenimiento o recuperación de archivos de datos
Volver a modo lectura-escrituraSQL> ALTER TABLESPACE users READ WRITE;--
Cambiar estadoSQL> ALTER TABLESPACE users OFFLINE;SQL> ALTER TABLESPACE users • RENAME: Cambiar nombres de tablespaces para mejor organización
ONLINE; • DEFAULT: Especificar el tablespace por defecto para usuarios
Añadiendo un Data File
a un Tablespace
Los tablespaces de tipo SMALLFILE pueden contener múltiples
archivos de datos, lo que permite distribuir la carga entre diferentes
discos y aumentar el espacio total.
SQL> ALTER TABLESPACE users ADD DATAFILE
'/u01/app/oracle/oradata/orcl/[Link]' SIZE
100M AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
Este comando añade un nuevo archivo de datos al tablespace
existente, aumentando su capacidad total y potencialmente
mejorando el rendimiento al distribuir las operaciones I/O.
Modificando un Data File
1 Cambiar tamaño
SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/[Link]'
RESIZE 150M;
Permite aumentar el tamaño de un archivo de datos para proporcionar más espacio.
2 Configurar autoextend
SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/[Link]'
AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
Habilita el crecimiento automático cuando el espacio se agota.
3 Desactivar autoextend
SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/[Link]'
AUTOEXTEND OFF;
Previene el crecimiento automático, útil para controlar estrictamente el espacio.
Eliminando Tablespaces
Eliminar solo el tablespace Eliminar tablespace y contenidos
SQL> DROP TABLESPACE test_data; SQL> DROP TABLESPACE test_data INCLUDING CONTENTS;
Esta opción solo elimina la definición del tablespace pero mantiene los archivos físicos en el sistema
operativo. No funciona si el tablespace contiene objetos. Elimina el tablespace y todos sus objetos, pero mantiene los archivos físicos.
Eliminar todo completamente
SQL> DROP TABLESPACE test_data INCLUDING CONTENTS AND DATAFILES;
Elimina la definición, los objetos y los archivos físicos del sistema.
Consultando Información de Tablespaces
Vistas del diccionario Información de espacio
Información general de tablespaces Espacio usado y libre
SQL> SELECT tablespace_name, status, SQL> SELECT tablespace_name,
contents, logging, extent_management SUM(bytes)/1024/1024 MB, SUM(blocks)
FROM dba_tablespaces; blocks FROM dba_free_space GROUP BY
-- Información de archivos de datos tablespace_name;
SQL> SELECT file_name, file_id, -- Segmentos por tablespace
tablespace_name FROM dba_data_files; SQL> SELECT tablespace_name, segment_name,
segment_type, bytes/1024/1024 MB
FROM dba_segments WHERE
tablespace_name='USERS';
Oracle Managed Files (OMF)
OMF permite especificar operaciones de archivos en términos de objetos de base de datos en lugar de nombres de archivos, simplificando la administración.
DB_CREATE_FILE_DEST
Define la ubicación del directorio predeterminado para archivos de datos y temporales
DB_CREATE_ONLINE_LOG_DEST_n
Define la ubicación para archivos de redo log y archivos de control
DB_RECOVERY_FILE_DEST
Proporciona la ubicación predeterminada para el área de recuperación rápida
Ejemplo: SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u01/app/oracle/oradata';SQL> CREATE TABLESPACE tbs_1; - Oracle creará automáticamente el archivo de datos con nombre generado
Quiz: Oracle Managed Files
Una base de datos puede tener una mezcla de archivos gestionados por Oracle y archivos no gestionados.
Verdadero ✓ Falso ✗
Oracle permite la coexistencia de ambos tipos de Esta afirmación sería incorrecta. Oracle está diseñado
archivos en la misma base de datos. Puedes tener para ser flexible y permitir una migración gradual hacia
algunos tablespaces usando OMF mientras otros usan la OMF sin necesidad de convertir todos los archivos
nomenclatura tradicional. existentes.
Los OMF simplifican la administración pero no son obligatorios para todos los archivos en una instalación de Oracle.
Ampliando la Base de Datos
Puedes ampliar la base de datos de las siguientes maneras:
Crear un nuevo tablespace
Añade un tablespace completamente nuevo para un propósito específico
Añadir un data file
Agrega un archivo de datos adicional a un tablespace smallfile existente
Aumentar tamaño del data file
Incrementa el tamaño de un archivo de datos existente para proporcionar más
espacio
Habilitar crecimiento dinámico
Configura AUTOEXTEND para permitir que los archivos crezcan
automáticamente según sea necesario
Moviendo o Renombrando Data Files Online
Almacenamiento en File System Almacenamiento en ASM
SQL> ALTER DATABASE MOVE DATAFILE SQL> ALTER DATABASE MOVE DATAFILE
'/u01/app/oracle/ '+DATAC1/orcl/ datafile/users.256.1'
oradata/orcl/[Link]' TO TO '+DATAC2';
'/u02/app/oracle/oradata/
orcl/users01_new.dbf';
Facilita la migración de archivos entre diferentes
Permite mover archivos entre diferentes ubicaciones del diskgroups de ASM, útil para balanceo de carga o
sistema de archivos sin interrumpir las operaciones de la mantenimiento.
base de datos.
La funcionalidad MOVE DATAFILE es extremadamente útil para operaciones de mantenimiento sin tiempo de inactividad,
permitiendo reorganizar el almacenamiento mientras la base de datos sigue funcionando.