Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Caracteristicas de Oracle
Caracteristicas de Oracle
• Los procedimientos o funciones son bloques PL/SQL con nombre, que pueden
recibir parámetros y pueden ser invocados desde distintos entornos: SQL*PLUS,
Oracle * Forms, desde otros procedimientos y funciones y desde otras herramientas
Oracle y aplicaciones.
Sintaxis Procedimientos
Sintaxis Funciones
• IN: especifica que el parámetro es de entrada y que, por tanto, dicho parámetro
tiene que tener un valor en el momento de llamar a la función o procedimiento. Si
no se especifica nada, los parámetros son por defecto de tipo entrada.
Concepto
Un disparador define una acción que la base de datos debe llevar a cabo cuando
se produce algún suceso relacionado con la misma. Los disparadores (triggers)
pueden utilizarse para completar la integridad referencial, también para imponer
reglas de negocio complejas o para auditar cambios en los datos. El código
contenido en un disparador, denominado cuerpo del disparador, está formado por
bloques PL/SQL. La ejecución de disparadores es transparente al usuario.
Para crear un disparador (trigger) en una tabla, el usuario con el que accedamos a
Oracle deberá ser propietario de la misma, teniendo así el privilegio ALTER para la
tabla ó ALTER ANY TABLE. Además, dicho usuario, debe disponer del privilegio
CREATE TRIGGER.
Tipos
1. Disparadores de nivel de fila: se ejecutan una vez para cada fila afectada por
una instrucción DML. Los disparadores de nivel de fila se crean utilizando la
cláusula for each row en el comando create trigger.
3. Disparadores Before y After: puesto que los disparadores son ejecutados por
sucesos, puede establecerse que se produzcan inmediatamente antes
(before) o después (after) de dichos sucesos.
Ejemplo de Triggers
Obviamente, para que este disparador funcione correctamente deberán existir las
tablas PRUEBA (origen del disparador) y "resultadodisparador" (donde se insertará
el registro si se cumple la condición CAMPO2 > 1000.
Vistas
Una vista es una consulta, que refleja el contenido de una o más tablas, desde la
que se puede acceder a los datos como si fuera una tabla.
Dos son las principales razones por las que podemos crear vistas.
Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la
información que hay en una tabla, pero no a toda la tabla.
Comodidad, como hemos dicho el modelo relacional no es el más comodo para
visualizar los datos, lo que nos puede llevar a tener que escribir complejas
sentencias SQL, tener una vista nos simplifica esta tarea.
Las vistas no tienen una copia física de los datos, son consultas a los datos que hay
en las tablas, por lo que, si actualizamos los datos de una vista, estamos
actualizando realmente la tabla, y si actualizamos la tabla estos cambios serán
visibles desde la vista.
Ejemplo
El ejemplo en este tema muestra cómo crear una vista simple en Oracle para
restringir el acceso del usuario a columnas específicas. El ejemplo se basa en una
tabla con la siguiente definición:
CREATE TABLE employees (emp_id number(38) unique not null, name varchar2
(32), department number not null, hire_date date not null);
Si el usuario que crea la vista no es el propietario de la tabla o las tablas en las que
se basa la vista, el propietario de la tabla debe otorgarle al creador de la vista como
mínimo el privilegio de selección en la tabla. Si el propietario de la vista necesita
otorgar privilegios en la vista a otros usuarios, el propietario de la tabla debe otorgar
al propietario de la vista la capacidad para otorgar privilegios en la tabla a otros
usuarios.
conn gdb/gdb.bdg
GRANT SELECT
ON gdb.employees
TO rocket WITH GRANT OPTION;
En este ejemplo, el usuario rocket crea una vista en la tabla de empleados para
restringir el acceso solo a aquellos registros en los que el departamento es 201:
Puede otorgar privilegios en la vista a usuarios específicos sin tener que otorgarle
a estos usuarios acceso a la tabla base (empleados). En este ejemplo, al usuario
mgr200 se le otorgan privilegios SELECT en la vista, view_dept_201:
conn rocket/nopeeking
GRANT SELECT
ON rocket.view_dept_201
TO mgr200;
Probar privilegios
conn mgr200/topsecret
SELECT * FROM rocket.view_dept_201;
Replicación.
La replicación permite tener una copia exacta de una base de datos alojada en un
servidor (maestro) que se guardará en otro servidor (esclavo). Todas las
modificaciones que se hagan en la base de datos del servidor maestro se
actualizarán inmediatamente en el servidor esclavo. Esto no es una copia de
seguridad, ya que, si borramos una fila en la base de datos maestra, también se
borrará en la base de datos esclava.
Ejemplo:
Este procedimiento presupone que los discos especificados están disponibles para
la creación de réplicas de la base de datos. Sustituya sus propios nombres de disco
en este procedimiento.
Cree las réplicas de la base de datos de estado en ambos nodos.
phys-X# metadb
flags first blk block count
a u 16 8192 /dev/dsk/c0t0d0s7
a u 8208 8192 /dev/dsk/c0t0d0s7
a u 16400 8192 /dev/dsk/c0t0d0s7
a u 16 8192 /dev/dsk/c0t1d0s7
a u 8208 8192 /dev/dsk/c0t1d0s7
a u 16400 8192 /dev/dsk/c0t1d0s7
Espejos
Consiste en la idea básica de tener dos discos duros conectados. Uno es el principal
y en el segundo se guarda la copia exacta del principal, almacenando cualquier
cambio que se haga en tiempo real en las particiones, directorios, etc, creando
imágenes exactas, etc.
De esta forma se consigue tener 2 discos duros idénticos y que permiten, si todo
está bien configurado, que ante el fallo del disco principal, el secundario tome el
relevo, impidiendo la caída del sistema y la pérdida de los datos almacenados.
Además de proporcionar una copia adicional de los datos con el fin de redundancia
en caso de fallo de hardware, la duplicación de disco puede permitir que cada disco
se acceda por separado para los propósitos de lectura. En determinadas
circunstancias esto puede mejorar significativamente el rendimiento ya que el
sistema puede elegir para cada lectura que disco puede buscar más rápidamente a
los datos requeridos. Esto es especialmente importante cuando hay varias tareas
que compiten por los datos en el mismo disco, y el "trashing" (donde el cambio entre
tareas ocupa más tiempo que la tarea en sí) se puede reducir. Esta es una
consideración importante en las configuraciones de hardware que frecuentemente
tienen acceso a los datos en el disco.
En algunas implementaciones, el disco reflejado se puede dividir fuera y se utiliza
para la copia de seguridad de datos, permitiendo que el primer disco para
permanecer activos. Sin embargo, la fusión de los dos discos se puede requerir un
período de sincronización en su caso escribir la actividad I/O ha ocurrido con el
disco duplicado.
Una vez preparados los discos, para crear el RAID, y si hemos seguido la misma
estructura de mi ejemplo, usaremos las siguientes órdenes, suponiendo que los
discos nos los ha identificado como sda, sdb, sdc y sdd:
La primera orden nos creará un RAID de tipo RAID1 con sólo 2 componentes
activos, empleando para ello la primera partición de cada disco. Como le indicamos
menos dispositivos de raid (2) que dispositivos físicos, lo que hace es poner los
otros dos como spares.
La segunda orden nos creará un RAID5 con la tercera partición de todos los discos
indicados. En este caso, el parámetro --raid-devices=4 es superfluo y se podría
omitir, ya que si no decimos nada sobreentiende que queremos usar todos los
discos.
Referencias
ArcMap (2017) Ejemplo: crear una vista de base de datos en Oracle con SQL (2012)
recuperado http://desktop.arcgis.com/es/arcmap/10.3/manage-data/using-sql-with-
gdbs/example-creating-a-view-in-oracle-with
sql.htm#ESRI_SECTION1_CD24F90D9BC547588892E531846AB5A7