Notas Oracle

Consultas y comandos cortos para gestionar tablas, cambiar columnas y revisar el espacio en Oracle.

Crear y modificar tablas

Crear una tabla

La clave primaria identifica cada tarea.

CREATE TABLE demo_tasks (
  task_id NUMBER PRIMARY KEY,
  title VARCHAR2(100 CHAR) NOT NULL
);

Añadir una columna

Las tareas existentes quedan con fecha de vencimiento nula.

ALTER TABLE demo_tasks ADD (due_on DATE);

Ampliar una columna

El título pasa de admitir 100 a 200 caracteres.

ALTER TABLE demo_tasks MODIFY (title VARCHAR2(200 CHAR));

Renombrar una columna

Actualiza también las consultas que usen el nombre anterior.

ALTER TABLE demo_tasks RENAME COLUMN due_on TO due_date;

Borrar una columna

Se pierden los valores de la columna. Oracle confirma los cambios de estructura automáticamente y ROLLBACK no recupera la columna.

ALTER TABLE demo_tasks DROP COLUMN due_date;

Ver la estructura de una tabla

En SQL*Plus o SQLcl, DESCRIBE muestra columnas, tipos y si admiten nulos.

DESCRIBE demo_tasks

Trabajar con filas

Insertar y consultar una fila

COMMIT guarda la inserción. La consulta busca la tarea por su clave primaria.

INSERT INTO demo_tasks (task_id, title) VALUES (1, 'Review documentation');
COMMIT;
SELECT task_id, title FROM demo_tasks WHERE task_id = 1;

Actualizar una fila

Comprueba primero qué fila coincide con WHERE. Con autocommit desactivado, puedes elegir entre COMMIT y ROLLBACK tras revisar el resultado.

SELECT task_id, title FROM demo_tasks WHERE task_id = 1;
UPDATE demo_tasks SET title = 'Publish documentation' WHERE task_id = 1;

Consultar espacio

Ver el tamaño de cada tablespace

Suma el tamaño actual de los archivos de datos de cada tablespace. Los temporales quedan fuera y la consulta requiere acceso a DBA_DATA_FILES.

SELECT tablespace_name, ROUND(SUM(bytes) / POWER(1024, 2), 1) AS allocated_mib
FROM dba_data_files
GROUP BY tablespace_name
ORDER BY allocated_mib DESC;

Ver el porcentaje de uso

El porcentaje usa el tamaño máximo posible, que puede incluir el crecimiento automático. Requiere acceso a la vista del diccionario.

SELECT tablespace_name, ROUND(used_percent, 1) AS used_pct
FROM dba_tablespace_usage_metrics
ORDER BY used_pct DESC;

Ver cuánto ocupa una tabla

Muestra el espacio asignado a la tabla de ejemplo en tu esquema. Los índices y los LOB se almacenan en segmentos aparte.

SELECT segment_name, ROUND(bytes / POWER(1024, 2), 1) AS allocated_mib
FROM user_segments
WHERE segment_name = 'DEMO_TASKS' AND segment_type = 'TABLE';