Please enable JavaScript.
Coggle requires JavaScript to display documents.
Oracle (Objetos del esquema (Índice (Tipos (Árbol B (X defecto (tabla),…
Oracle
Objetos del esquema
Tabla
Unidad básica de almacenamiento de datos
Datos
Fila
Columna
Columna virtual = calculado :arrow_right: GENERATED
No se puede escribir explícitamente
Definida por
Nombre
Conjunto de columnas (campos)
Nombre
Tipo
Si es LOB, varray o tabla anidada
Almacenada en su propio segmento de datos aparte de la tabla
Longitud (a veces depende del tipo)
Reglas: restricciones de integridad
Tipos
Ordinaria
Organizada por montón (heap organized)
Datos almacenados como colección desordenada (heap)
Clusterizada
Tabla que forma parte de un cluster
Organizada por índice
Árbol B
Particionada
Tablas q rompen los datos en + pequeños = particiones (tb permite sub-particiones)
Cada partición tiene sus propios atributos físicos :arrow_right: se guarda en su propio segmento
Temporales
Uso: aplicaciones donde un conj resultado puede ser útil para operaciones posteriores
Definición visible para todas las sesiones
Datos sólo visibles para sesión actual
Al crear la tabla (CREATE GLOBAL TEMPORARY TABLE)
indicar en el COMMIT que ocurre con los datos al acabar la transacción
DELETE ROW
Específica para la transacción
Al hacer commit se borran las filas
PRESERVE ROWS
Específica para la sesión
Al hacer commit se mantienen las filas, al terminar la sesión se borran
Se pueden definir índices (temporales)
Almacenados en tablespace temporal
Del usuario (x defecto)
Otro especificado
Modificar
Parámetros físicos: initrans, next, pctincrease
(NO se pueden modificar en el mismo tablespace initial y minextends)
Mover
Tabla a nuevo tablespace
Partición a nuevo segmento
Actualizar índices
Añadir/cambiar definición/renombrar/quitar columnas
Poner en modo READONLY
No se pueden borrar/cambiar los registros/campos
Si se puede añadir registros/campos
Eliminar
Normal
Eliminar restricciones a tablas hijas
Recuperar espacio usado inmediatamente :arrow_right: PURGE
Conservar definición y borrar datos :arrow_right: TRUNCATE
Índice
Estructura opcional asociada a tablas y cluster q permite q las consultas SQL se ejecuten + rápido indexando algunos campos
Tipos
Árbol B
X defecto (tabla)
Para cluster
Hash
Cluster
Globales y locales
Tablas particionadas e índices
Clave inversa
RAC (Real Application Cluster,
Cluster con alta disponibilidad)
Mapas de bit
Para columnas con un pequeño conjunto de valores
Basados en funciones
Valor precalculado de una función/expresión
De dominio
Específicos para una aplicación
Lógica y físicamente independiente de los datos de su tabla asociada :arrow_right: requieren su propio espacio en la BD
Al estar en tablespaces
:arrow_right: :arrow_up: rendimiento
Tablespace1 :arrow_right: tabla
Tablespace2 :arrow_right: índice
Crearlo si
Si se requiere recuperar frecuentemente un % pequeño (+- 15%) de una tabla grande
Para mejorar el rendimiento de joins
Declarar primero las columnas + usadas :arrow_right: :arrow_up:rendimiento
Si existen muchos índices :arrow_right: puede :arrow_down: rendimiento (cada operación sobre datos tb implica actualizarlos)
CREATE INDEX NOLOGGING = no usar redo logs en esta sentencia :arrow_right: ahorra espacio y tiempo, hacer backup después
No usable
Ignorados x optimizador, no mantenidos en operaciones DML
Al crearlo se borran sus apuntadores pero no la definición
Útil para cargar datos rápidamente
Invisible
Ignorados x optimizador, mantenidos en operaciones DML
Requisitos para crearlos
En mi esquema
(cumplir alguno)
Tabla/cluster suyacente está en mi esquema
Privilegio INDEX en la tabla a indexar
Privilegio de sistema CREATE ANY INDEX
En otro esquema
(cumplir todos)
Privilegio de sistema CREATE ANY INDEX
Propietario del otro esquema tiene
Cuota en el tablespace donde va el índice
Tiene el privilegio de sistema UNLIMITED TABLESPACE (cuota
)
Creación
Explícita
Normal
Único (columna única)
Implícita (xe UNIQUE, PK)
Se puede especificar
Opciones de almacenamiento
Índice a utilizar
Creándolo
Usando uno existente
Modificación
Cambiar almacenamiento (STORAGE)
Reconstruir (REBUILD) :arrow_right: + eficiente q borrar y crear
Hacerlo
No usable (UNUSABLE)
No visible (INVISIBLE)
Visible
Renombrar
Eliminación
Cluster
Método opcional de guardar datos de tablas
Formado x grupos de tablas q comparten mismos bloques de datos
Tablas agrupadas pq comparten columnas comunes y normalmente se usan juntas
Beneficios
Reduce E/S a disco, mejora tiempo de acceso para joins de tablas clusterizadas
Clave del cluster = columna/grupo de columnas q las tablas tienen en común :arrow_right: solo aparece 1 vez
Pasos
(mín. abrá 1 índice)
1-Crear cluster
2-Crear tablas
3-Crear índices
4-Insertar registros
Se pueden crear/destruir índices adicionales
Crear cluster para tablas
Que se acceden conjuntamente con frecuencia
Se usan principalmente para consultas
Requisitos para crearlos
En mi esquema
Privilegio CREATE CLUSTER
Cuota para tablespace q contendrá el cluster o UNLIMITED TABLESPACE
En otro esquema
Privilegio CREATE ANY CLUSTER
Propietario del esquema tiene cuota para tablespace q contendrá el cluster o UNLIMITED TABLESPACE
Modificación
Atributos físicos (INITRANS y características de almacenamiento)
Cantidad media de espacio requerido para guardar todas las filas de un valor de clave del cluster (size)
Grado de paralelismo por defecto = nº de transacciones q consultan el cluster a la vez
Eliminar
De golpe
DROP CLUSTER name_cluster INCLUDING TABLES CASCADE
Pasos
1-DROP TABLE
2-DROP INDEX
3-DROP CLUSTER
Hash cluster
Alternativa a tabla no clusterizada con un índice o a un cluster
Pasos
1-Crear HASH CLUSTER
2-Cargar datos
La BD almacena físicamente las filas de la tabla y las recupera según función hash
Función hash: genera una distribución de valores numéricos (valores hash) basados en valores específicos de la clave del cluster (puede ser 1 o varias columnas)
Beneficio
En cluster/tabla con índice para encontrar/guardar un registro
1 E/S para encontrar/guardar el valor de la clave en el índice
1 E/S para leer/escribir la fila en tabla/cluster
En hash cluster
Calcular función hash :arrow_right:determina el bloque de la BD directamente
Útiles cuando
Mayoría de consultas se producen en la clave del cluster
Tablas muy estáticas de tamaño y se puede determinar el espacio requerido para el hash cluster desde el principio.
Si excedemos del espacio inicial :arrow_right:se necesitan bloques de overflow (merman rendimiento)
Opciones
HASH IS :arrow_right: indica el campo con el que se calcula función HASH
Si no se especifica :arrow_right: la BD genera una clave interna
HASHKEYS :arrow_right: nº de valores únicos que puede generar la función HASH (la BD redondea al nº primo más cercano)
No se puede crear un cluster indexado dentro de un cluster hash
SORT = hash cluster ordenado :arrow_right: la BD guarda los registros correspondientes a cada valor de la función hash de forma que se devuelvan de forma ordenada
Las columnas de ordenación no tienen pq formar parte del cluster
SINGLE TABLE = se pueden crear hash cluster de
1 sola tabla
para dar acceso rápido a las filas de una tabla determinada
Especificar HASHKEYS
Modificación :arrow_right: ALTER CLUSTER
Eliminación :arrow_right: DROP CLUSTER
Vista
Representación lógica de una tabla o combinación de tablas :arrow_right: consulta almacenada
Deriva sus datos de las tablas en las que se basa (tablas base)
Tablas
Vistas
Operaciones
Consultar
Actualizar/insertar/borrar :arrow_right: afecta a 1 o + tablas base de la vista
JOIN VIEW
(vista join) = vista con más de 1 tabla base o vista
Reglas para actualización
En general
Cualquier operación INSERT/UPDATE/DELETE puede modificar sólo una tabla subyacente cada vez
Si la vista se define con WITH CHECK OPTION :arrow_right: no es actualizable
UPDATE
Todas las columnas actualizables de una vista join deben corresponderse con columnas de una tabla preservada por clave
DELETE
Las filas de una vista join pueden borrarse siempre que haya exactamente una tabla preservada por clave involucrada
INSERT
No debe referirse a columnas, de forma explícita o implícita, de una tabla no preservada por clave
Requisitos para crearlos
En mi esquema
Privilegio CREATE VIEW
En otro esquema
Privilegio CREATE ANY VIEW
El propietario de la vista debe de tener privilegios sobre los objetos base (referenciados) de forma
explícita
(no a través de roles)
Cada privilegio sobre los objetos referenciados repercute en la vista
Para que el propietario pueda conceder privilegios sobre la vista :arrow_right: debe tener concedidos sobre los objetos base estos privilegios WITH GRANT OPTION
Para los privilegios de sistema :arrow_right: aplica lo mismo WITH ADMIN OPTION
Creación
WITH CHECK OPTION (CONSTRAINT name) = la BD prohibe cualquier cambio en la vista que produzca filas que no sean seleccionables por ella
Si no le damos nombre a la restricción después de CONSTRAINT :arrow_right: Oracle le asigna un nombre único
WITH READ ONLY = la vista (o tabla) no puede ser actualizada
Oracle expande la definición = al poner select
Oracle traduce
por los nombres de los campos :arrow_right: si añadimos campos nuevos en la tabla base, en la vista no aparecen
CREATE FORCE VIEW = definir vista sintácticamente correcta pero ahora no se puede ejecutar pq la tabla base no existe
Reemplazo
Borrar y volver a crear :arrow_right: volver a conceder todos los privilegios (al borrar la vista se pierden)
CREATE OR REPLACE VIEW
Eliminación
DROP VIEW
Tablas preservadas por claves
(key-preserved)
Tabla en la que cada clave de la tabla tb puede ser una clave del join resultante
No es necesario que se seleccione la clave de la tabla, pero si se selecciona :arrow_right: tb debería ser clave del join resultante
Secuencia
Objetos de la BD a partir de los cuales varios usuarios pueden generar números enteros únicos
El generador de secuencia indica los números secuenciales que pueden usarse para generar de forma automática claves primarias y para coordinar claves en varias filas/tablas
Elimina la serialización debida a candados y mejora la concurrencia de una aplicación
Requisitos para crearlos
En mi esquema
Privilegio CREATE SEQUENCIE
En otro esquema
Privilegio CREATE ANY SEQUENCE
CACHE = nº de enteros únicos que se guardan en la caché de la SGA
Aumenta la eficiencia, pero en caso de fallo de instancia o SHUTDOWN ABORT, se pierden estos nº de secuencia cacheados
Eliminación
DROP SEQUENCE
Elementos
NEXTVAL
Genera el nuevo valor de la secuencia
Se puede usar desde INSERT, UPDATE, SELECT
CURRVAL
Da el valor actual de la secuencia
Para usarlo, debemos haber invocado a NEXTVAL en la sesión actual
No pueden usarse en subconsultas, SELECT DISTINCT, SELECT GROUP BY, SELECT ORDER BY, SELECT combinadas con otras SELECT en UNION, INTERSECT, MINUS,cláusulas WHERE de un SELECT o condiciones de una restricción CHECK
Sinónimo
Alias para un objeto del esquema
Proveen
Nivel de seguridad: enmascaran el nombre y propietario de un objeto
Transparencia de localización para objetos remotos en una BD distribuida
No son del todo seguros: si damos privilegios sobre un sinónimo, tb estamos dando privilegios sobre los objetos subyacentes
Tb pueden usarse para reducir la complejidad de las sentencias SQL
Tipos
Público
Pertenece al grupo de usuarios especial PUBLIC y es accesible para cualquier usuario de la BD
Privado
Pertenece al esquema de un usuario y está disponible sólo para él o para aquellos usuarios que tengan permisos en el objeto subyacente
Requisitos para crearlos
En mi esquema
Privilegio CREATE SYNONYM
En otro esquema
Privilegio CREATE ANY SYNONYM
CREATE PUBLIC SYNONYM name FOR tabla
Eliminación
DROP SYNONYM
DROP PUBLIC SYNONYM
Disparador
Trigger
Bloque PL/SQL con nombre guardado en BD, se ejecuta de forma
implícita
cuando ocurre un evento
Evento disparador
Sentencia DML (INSERT, DELETE, UPDATE) contra una tabla
Sentencia DDL (CREATE, ALTER) :arrow_right: los DBA auditan los cambios en los esquemas
Evento del sistema (arranque/parada de la BD)
Evento del usuario (logon/logoff)
Tipos
AFTER
Se ejecuta justo después de la operación DML, asume que ésta ya se ha hecho
BEFORE
Se ejecuta justo antes de la operación DML, asume que ésta no se ha hecho
Procedimiento
Bloque de código PL/SQL con nombre guardado en la BD
Puede ser invocado por parte del usuario, pasándole parámetros de entrada o salida
Función
Procedimiento que devuelve un valor
Cursor
Permite recorrer consultas y tratar los registros de estas consultas de forma individual desde PL/SQL
Paquete
Colección de objetos PL/SQL (procedimientos, funciones, cursores, declaraciones, tipos y variables) agrupados con un nombre
Dependencia entre objetos
Cuando algunos tipos de objetos del esquema referencian a otros objetos
Tipos
Objeto dependiente
Objeto que referencia a otro (xe una vista)
Objeto referenciado
Objeto al que hace referencia (xe una tabla)
Validación
Tb se puede recompilar un objeto inválido de forma manual
La BD ORACLE provee un mecanismo automático para asegurar que cada objeto dependiente está siempre al día respecto a sus objetos referenciados
Referencias establecidas en tiempo de
compilación
, si el compilador no puede resolverlas :arrow_right: objeto marcado como inválido
Proceso
Cuando se crea un objeto dependiente, la BD rastrea las dependencias entre el objeto dependiente y sus objetos referenciados
Cuando un objeto referenciado se cambia de forma que pueda afectar al objeto dependiente, éste se marca como
inválido
Un objeto inválido debe ser recompilado con la nueva definición de sus objetos referenciados antes de que sea usado
La recompilación ocurre de forma automática cuando se referencia un objeto inválido
Invalidación de objetos
Afecta a las aplicaciones
Un objeto inválido debe revalidarse antes de usarlo :arrow_right: revalidación añade latencia a la ejecución de aplicaciones
La invalidación de un procedimiento/función/paquete puede provocar excepciones en otras sesiones que ejecuten el procedimiento/función/paquete
La BD rastrea los elementos de un objeto referenciado que están involucrados en la dependencia (xe una vista con ciertos campos de una tabla)
Objetos invalidados en cascada
Si un objeto se vuelve inválido por cualquier motivo :arrow_right: tb se vuelven inválidos de forma automática todos sus objetos dependientes
Si revocamos cualquier privilegio de objeto en un objeto del esquema :arrow_right: sus objetos dependientes se invalidan en cascada
Revalidar objetos
(utilidades)
En paralelo y en orden de dependencia
Uno a uno
Para invalidar y recompilar un objeto de forma manual :arrow_right: ALTER
Una tía muy
ordinaria
tiene en un armario
clu
tchs muy
organizado
s, luego los
parte
No usable
usable
En el
clut
ch mete
tabl
etas de chocolate, con el dedo
índice
las
registra
Coge una
tabl
eta de chocolate, le
hin
ca el diente y cierra el
clu
tch