Vous êtes sur la page 1sur 5

TRANSACCIONES Y SEGURIDAD

A. Transacciones

1. Una transacción comienza cuando se encuentra la primera instrucción SQL


ejecutable.
Una instrucción SQL ejecutable es una instrucción SQL que genera llamadas a
una instancia de base de datos , incluidas las declaraciones DML y DDL y
la SET TRANSACTIONdeclaración.

Una transacción termina cuando ocurre alguna de las siguientes acciones:


 Un usuario emite
una declaración COMMITo sin una cláusula.ROLLBACKSAVEPOINT
 Un usuario ejecuta un comando DDL tales
como CREATE, DROP, RENAME, o ALTER.
 Un usuario sale normalmente de la mayoría de las utilidades y herramientas
de la base de datos Oracle, lo que hace que la transacción actual se
confirme implícitamente. El comportamiento de confirmación cuando un
usuario se desconecta depende de la aplicación y es configurable.
 Un proceso de cliente termina de forma anormal, lo que provoca que la
transacción se retrotraiga implícitamente utilizando los metadatos
almacenados en la tabla de transacciones y el segmento de deshacer.
2. Oracle proporciona tres niveles de aislamiento:
a) read-committed: Nivel de aislamiento por defecto. Cada consulta de una
transacción solo ve los datos que fueron confirmados antes de que la consulta
comenzara. Se producen lecturas no reproducibles.
b) serializable transactions: Solamente se ven los cambios realizados por
transacciones confirmadas + cambios efectuados por ella misma.
c) read-only : transacciones de solo lectura ven datos confirmados antes de
empezar y no permiten modificaciones de los datos.

Para seleccionar uno de estos comandos al comienzo de una transacción:


· SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
· SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
· SET TRANSACTION ISOLATION LEVEL READ ONLY;
Para establecer un nivel de aislamiento para el conjunto de transacciones
siguientes:
· ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE;
· ALTER SESSION SET ISOLATION_LEVEL READ COMMITTED;

ORACLE utiliza el nivel menos restrictivo guiándose por las siguientes reglas:
· Operaciones de lectura no esperan a las de escritura sobre los mismos datos.
· Operaciones de escritura no esperan a las de lectura sobre los mismos datos.
· Operaciones de escritura solamente esperan a otras operaciones de escritura
que intentan modificar la misma tupla.
Oracle posee dos tipos de bloqueos. El bloqueo Exclusivo se encarga de
bloquear un recurso y no permitir ningún tipo de acceso a él; esto es útil cuando se
realizan cambios DDL o DML que afecten la estructura o los valores de un
registro. El otro tipo de bloqueo es el Compartido, que permite un acceso de sólo
lectura al recurso en disputa. Estos bloqueos no son compatibles entre sí. Si un
grupo de consultas posee un bloqueo compartido sobre un recurso y una
transacción quiere modificar ese recurso, esta debe esperar a que terminen su
ejecución todas las consultas, en caso contrario, si una transacción posee un
bloqueo exclusivo sobre un recurso, todas las transacciones que deseen ese
recurso deben esperar a que termine la transacción inicial. Los bloqueos sobre un
recurso tienen la misma duración que la transacción que posee el bloqueo.
Además de los bloqueos Exclusivos y Compartidos, Oracle implementa bloqueos
DDL y DML que hacen uso de estos conceptos.

Al realizar un bloqueo DDL, se previene el acceso a los objetos que van a ser
modificados en su estructura. Oracle uiliza bloqueo Compartido si las
modificaciones no son destructivas y bloqueo Exclusivo en caso contrario.
Para realizar bloqueos DML se escoge siempre el tipo de bloqueo más bajo
posible. El bloqueo más bajo es el TX (bloqueo por filas), que garantiza un mayor
grado de concurrencia al permitir acceso a las demás filas de una misma tabla.
Cuando este bloqueo no es posible debido a la magnitud de los cambios de la
transacción, se procede a realizar un TM (bloqueo por tabla).Existen varios tipos
de TM, entre ellos:
 X (Exclusivo): Consiste en bloquear toda la tabla, impidiendo la ejecución de
sentencias DML sobre ella.
 S (Compartido): Se marca la tabla como “Sólo Lectura”. Varias transacciones
pueden adquirir este bloqueo sobre una misma tabla.
 RS (Filas Compartidas): Este bloqueo se utiliza para indicar que se va a
realizar en un futuro cercano alguna modificación a las filas de esta tabla.
 RX (Filas Exclusivas): Con este bloqueo se indica que ya se realizaron
modificaciones INSERT, UPDATE o DELETE a las filas de esta tabla.
 SRX (Filas Compartidas Exclusivas): Sólo una transacción puede obtener este
bloqueo, ya que permite prohibirle a todas las demás transacciones la
modificación de la fila, pero se permite la lectura.
Oracle también realiza bloqueos totales de sus objetos principales, tales como
Logs, Diccionario de Datos y Segmentos de los Tablespaces para asegurar que
ningún usuario manipule objetos vitales para el funcionamiento correcto de la BD.

3. read-committed: Nivel de aislamiento por defecto. Cada consulta de una


transacción solo ve los datos que fueron confirmados antes de que la consulta
comenzara. Se producen lecturas no reproducibles

B. Seguridad
C. Vistas

1.

 FORCE: Crea la vista sin importar que la tabla base exista o no.
 WITH CHECK OPTION: Especifica que solamente las filas accesibles a la
vista pueden ser insertadas o actualizadas.
 CONSTRAINT: Nombre asignado a la restricción CHECK OPTION.
 WITH READ ONLY: Asegura que ninguna operación DML pueda realizarse
sobre esta vista.

 Al borrar una vista no perderá los datos, porque la vista está basada en
tablas subyacentes de la B.D.
 Únicamente el creador o un usuario con el privilegio DROP ANY VIEW
puede eliminar una vista.

2.

♦ WITH CHECK OPTION. Hace que sólo las filas que se muestran en la vista
puedan ser añadidas (INSERT) o modificadas (UPDATE). La restricción que sigue
a esta sección es el nombre que se le da a esta restricción de tipo CHECK
OPTION.
♦ WITH READ ONLY. Hace que la vista sea de sólo lectura. Permite grabar un
nombre para esta restricción.
Lo bueno de las vistas es que tras su creación se utilizan como si fueran una tabla.

D. Modularidad Paquetes

1.

Un Paquete es un objeto PL/Sql que agrupa lógicamente otros objetos PL/Sql


relacionados entre sí, encapsulándolos y convirtiéndolos en una unidad dentro
de la base de datos.
2.

 Especificación o cabecera: contiene las declaraciones públicas (es decir,


accesibles desde cualquier parte de la aplicación) de sus programas, tipos,
constantes, variables, cursores, excepciones, etc.
 Cuerpo: contiene los detalles de implementación y declaraciones privadas, es
decir, accesibles solamente desde los objetos del paquete.
 La sintaxis de la cabecera es la siguiente:
create [or replace] package nombre_paquete as
<declaraciones públicas>
<especificaciones de subprogramas>
end nombre_paquete;
 La sintaxis del cuerpo sería la siguiente:

create [or replace] package body nombre_paquete as


<declaraciones privadas>
<código de subprogramas>
[begin
<instrucciones iniciales>]
end nombre_paquete;

E. Cursores

1. un cursor es un puntero a un área privada de SQL que almacena información


sobre el procesamiento de una sentencia SELECT o lenguaje de manipulación de
datos (DML) (INSERT, UPDATE, DELETE o MERGE).
De su lado, un REF CURSOR es una variable, definida como un tipo de cursor,
que apuntará o hará referencia a un resultado de un cursor.
Ventajas de los REF CURSOR.
• A diferencia de un cursor normal, un REF CURSOR puede ser pasado como
variable a un Procedimiento y/o una Función.
• El valor contenido en un REF CURSOR para ser asignado a otras variables REF
CURSOR.
• Una variable REF CURSOR puede ser el valor de retorno de una función.
2. Weak REF Cursor:
Clasificamos como Weak(débil) a una variable REF CURSOR en la cual no se
defina el tipo de dato que la misma retornara.
Eje:
TYPE typ_ref_cur IS REF CURSOR;
Strong REF Cursor:
En estos se define lo que el cursor va a devolver. Hay que tener en cuenta que si
se trata de devolver algo distinto que su tipo de retorno, se genera una
excepción "ROWTYPE_MISMATCH".
Eje:
TYPE typ_ref_cur IS REF CURSOR
RETURN hr.employees%ROWTYPE;

Vous aimerez peut-être aussi