Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf ·...

123
Facultad de Informática Universidad Politécnica de Madrid (U.P.M.) Implementación de Bases de Datos en Oracle Santiago Eibe García Doctor en Informática Facultad de Informática (U.P.M.) Ernestina Menasalvas Ruiz Doctora en Informática Facultad de Informática (U.P.M.)

Transcript of Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf ·...

Page 1: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

Implementación de Bases de Datos en Oracle

Santiago Eibe GarcíaDoctor en InformáticaFacultad de Informática (U.P.M.)

Ernestina Menasalvas RuizDoctora en InformáticaFacultad de Informática (U.P.M.)

Page 2: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

Arquitectura de ORACLE

Page 3: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.3

IntroducciónOracle es un Sistema de Gestión de Bases de Datos RelacionalesHoy en día Oracle se es mucho mas que un simple gestor de bases de datosVamos a analizar SQL*Plus como herramienta de Oracle para implementación y acceso a bases de datos

Page 4: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.4

El servidor OracleEs un SGBDR que proporciona un enfoque integrado, abierto y comprensible a la gestión de la informaciónUn gestor Oracle consiste de:

una base de datos Oracle y una instancia Oracle

Page 5: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.5

Base de Datos OracleUna base de datos Oracle tiene tanto una estructura lógica como una estructura físicaEllo permite que se pueda gestionar el almacenamiento físico de los datos sin que ello afecte al almacenamiento lógicoLa estructura física está determinada por los ficheros del SO que constituyen la base de datos

Page 6: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.6

Instancia OracleCada vez que se arranca una base de datos, se habilita una zona de memoria denominada SGA (System Global Area) y se arrancan unos procesos en backgroundLa combinación de estos procesos y de los búferes de memoria se denomina Instancia OracleInstancia (el puente) y database (la isla) son conceptos distintosUn shutdown de Oracle es un shutdown de la instancia, no de la base de datos. Las bases de datos se montan y desmontan como parte del proceso de arranque y parada respectivamenteLos ficheros de control asociados a una instancia son:

El fichero de inicialización init.oraEl fichero de configuración config.ora (es opcional)El fichero de passwords

Page 7: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.7

Instancia Oracle

Una instancia tiene dos tipos de procesos: los procesos de usuario y los procesos de Oracle

Los usuarios conectan con una instancia que provee un proceso de usuario encargado de gestionar el acceso a la base de datosLos procesos de usuario ejecutan el código de una aplicación o de una herramienta de OracleLos procesos de Oracle son procesos del servidor que realizan trabajo para los procesos de usuario y procesos de background para el mantenimiento del servidor Oracle

Más detalle en transparencias posteriores

Page 8: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

ORACLE: Estructura Lógica

Page 9: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.9

Estructura lógica La estructura lógica de una base de datos Oracleviene determinada por:

Uno o más espacios de tablasLos objetos de los esquemas de la base de datos. Por ej.: tablas, vistas, índices, clusters, secuencias, procedimientos almacenados, ....

Tales estructuras lógicas de almacenamiento incluyendo espacios de tablas, segmentos u extensiones dictaminan la manera en la que se utiliza el espacio físicoLos objetos de estos esquemas y las relaciones entre ellos completan el diseño de una base de datos de datos relacional

Page 10: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.10

Estructura lógica de la base de datos

Una base de datos se divide en unidades de almacenamiento lógico que se denominan espacios de tablas(Tablespaces)Un tablespace (TS) se usa para agrupar estructuras lógicas juntasLa relación entre Bases de Datos (BD) espacios de tablas y ficheros de datos se muestra en la figura siguiente

Page 11: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.11

Relación entre TS, BD y ficheros de datos

Base de datos

TablespaceSYSTEM

TablespaceUSERS

Data1.dbf Data2.dbf Data3.dbf

Page 12: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.12

Relación entre TS, BD y ficheros de datos

Cada BD se divide en uno o mas espacios de tablas (lógica).Para cada tablespace se crean explícitamente uno o más ficheros de datosEl tamaño combinado de los ficheros de datos del tablespace es el tamaño total de almacenamiento del tablespaceLa capacidad de almacenamiento total de la base de datos es la combinación de los almacenamientos de cada tablespace en que se haya dividido

Page 13: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

ORACLE: Esquema de la BD

Page 14: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.14

Esquema de base de datosUn esquema es una colección de objetos que definen precisamente la base de datos (DD)Los objetos del esquema son las estructuras lógicasque describen directamente a los datos de la base de datos (metadatos)Estos objetos incluyen las tablas, vistas, secuencias, procedimientos almacenados, sinónimos, índices, clusters y links de la base de datosNo hay una relación entre los esquemas y los tablespaces: objetos del mismo esquema pueden estar en distintos tablespaces y un tablespace puede agrupar objetos de diferentes esquemas

Page 15: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.15

Objetos de los esquemasUna tabla es un objeto de la base de datos que almacena los datos. La información sobre cada tabla se almacena en el diccionario de datosUna vista permite ver una selección personalizada de una o más tablas, y utiliza una consulta que se almacena en la base de datosUn índice es una estructura que permite el acceso rápido a los datosUn sinónimo es un nombre alternativo de un objeto de la base de datos.La concesiones son privilegios concedidos por los propietarios de los objetos

Page 16: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.16

Objetos de los esquemasUna secuencia genera una lista de números en serie para columnas numéricas de la base de datos.Unidades de programa: se refieren a las funciones, procedimientos y paquetesUn rol es un conjunto de privilegios que se agrupan y conceden a los usuarios. Una vez que los privilegios se han concedido a un rol, un usuario hereda los privilegios del rol, si es un miembro de ese rol.

Page 17: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.17

Objetos de los esquemasClusters: Es un método opcional de almacenar los datos de las tablas. Los clusters son grupos de una o más tablas que físicamente se almacenan juntas porque comparten columnas y frecuentemente se utilizan juntas. De esta manera mejora el rendimiento. Las columnas relacionadas se denominan clave del cluster.Los clusters como los índices no afectan al diseño de la base de datos. Son transparentes al usuario final Link: es un nombre que describe un camino de una base de datos a otra

Page 18: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

ORACLE: Estructura Física

Page 19: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.19

Estructura físicaToda base de datos Oracle se compone de estos tipos de ficheros:

Uno o más ficheros de datosDos o más ficheros de rehacer2 o más ficheros de logUno o más ficheros de controlOtros ficheros de configuración, seguridad, etc.

Los ficheros de una base de datos Oracleproporcionan un medio de almacenamiento físico de la información de la base de datos

Page 20: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.20

Estructuras físicasCada base de datos tiene un o más ficheros físicos de datos. Los ficheros de datos de la base de datos contienen todos los datos de la base de datos. Los datos de las estructuras lógicas como tablas e índices se almacenan físicamente en los ficheros de datos.Las características de los ficheros de datos son:

Un fichero de datos se asocia solo con una base de datosA los ficheros de datos tienen se les pueden asociar características que les permiten extenderse de manera automática cuando es necesarioUno o más ficheros de datos forman una unidad lógica que se denomina espacio de tablas

Page 21: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.21

Estructuras físicasLa función principal de los ficheros de rehacer es almacenar todos los cambios que se realicen en los datosSi ocurriera un fallo los cambios se pueden obtener y el trabajo no se perderíaCada base de datos tienen 2 o más ficheros de rehacer (redo)Los ficheros de rehacer son fundamentales para proteger a la base de datos ante fallos. Por ello, conviene mantener 2 o más copias y en dispositivos diferentes

Page 22: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.22

Estructuras físicasToda base de datos Oracle tiene un fichero de controlEste fichero define e identifica el conjunto de ficheros que componen la base de datos, tanto datos como metadatosAsí, registra la estructura física de la base de datos. Por ejemplo, un fichero de control básico contiene:

Nombre de la base de datosFecha de creación de la base de datosNombres y localizaciones de los ficheros de datos de la base de datos y de los ficheros de rehacerEl estado actual de los diferentes ficheros de datos (read-only, pendientes de recovery, etc.)El modo en que fue cerrada la base de datos durante el shutdownQue copias de seguridad se han efectuadoEl intervalo de tiempo que cubre cada archivo de redo

Page 23: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.23

Estructuras físicasOracle permite almacenar copias de este fichero en discos diferentes (CONTROL_FILES en init.ora)El fichero de control en Oracle 8x tiene un tamaño máximo de 10 Mb. Por ejemplo, el tamaño habitual en Windows NT es de uno 3 MbCada vez que se arranca la instancia de la base de datos se utiliza el fichero de control para identificar la base de datos y los ficheros de rehacer. Si se modifica la estructura física de la base de datos (se añade por ej. un nuevo fichero de datos), el fichero de control se actualiza inmediatamente para reflejar los cambios

Page 24: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.24

Control del almacenamiento

Oracle permite un control muy fino del espacio en disco a través del almacenamiento de estructuras lógicas:

Bloques de datosExtensiones Segmentos

Page 25: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.25

Control del almacenamientoBloques de datos: En el nivel más fino de granularidad los datos de una base de datos Oracle se almacenan en bloques de datos. Un bloque de datos se corresponde con un número específico de bytes del espacio físico de la base de datos. El tamaño del bloque de datos se específica para cada base de datos Oracle cuando se crea la base de datos. La base de datos usa y localiza el espacio libre de almacenamiento en bloques de datos.

Page 26: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.26

Control del almacenamiento

Extensiones: El siguiente nivel de espacio lógico se llama extensiónUna extensión es un número específico de bloques de datos contiguos, que se obtienen al mismo tiempo al reservar espacio de almacenamientoSe utilizan para almacenar el mismo tipo de información

Page 27: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.27

Control del almacenamientoSegmentos: El nivel de almacenamiento lógico por encima de las extensiones son los segmentos.Un segmento es un conjunto de extensiones que se reservan y utilizan para una determinada estructura lógica. Por ej.:

Segmentos de datos: cada tabla (que no esté en un cluster) tiene un segmento de datos. Cada cluster tiene un segmento de datosSegmentos de índices. Cada índice tiene un segmento que almacena sus datosSegmento de rollback

Segmento temporal

Page 28: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.28

Estructuras de memoria y de procesos

Buffer del REDO LOG

Búferes de la cache de la BD

System Global Area

RECO PMON SMONLCK0

Procesos de usuario

SharedServer processes

DedicatedServer processes

ARCHCKPT

LGWRDBWR

Userprocesses

OfflineStoragedevice

Control Files

Redo Files

DatabaseFiles

D000

Page 29: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.29

Estructuras de memoriaOracle crea y utiliza estructuras de memoria para completar sus trabajos (almacenar código de programas que se estén ejecutando y los datos compartidos por los usuarios).Las zonas de memoria son:

System Global Area (SGA) Program Global Areas (PGA)

Page 30: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.30

SGAEs una región de memoria compartida que contiene datos e información de control para la instancia OracleOracle aloja el SGA cuando se arranca la instancia y la desaloja cuando la instancia se paraLa información en el SGA se divide en:

Búferes de la base de datosBúferes de los ficheros de rehacerShared pool

Estas áreas tienen unos tamaños preestablecidos y se crean al arrancar la instancia

Page 31: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.31

SGACaché de búferes de la base de datos:

Almacenan los bloques de datos mas recientemente usadosPueden contener datos que han sido modificados y que todavía no han sido volcados a discoEsto hace que mejore el rendimiento

Búferes de los ficheros de rehacer:Almacena entradas de rehacer (log de cambios que se han hecho en la base de datos)Estas entradas se escriben en un fichero de rehacer on-lineque se utiliza si es necesario realizar una recuperación de la base de datosSu tamaño es estático

Page 32: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.32

SGAShared Pool:

Es una porción del SGA de memoria compartida como, por ejemplo, áreas de SQL compartidas (árboles de ejecución, plan de ejecución para una determinada sentencia SQL)Una única zona compartida de SQL se usa por múltiples aplicaciones dejando mas memoria compartida para otros usos

Cursores:Es un manejador para la memoria asociada con una determinada sentencia

Page 33: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.33

Program Global AreaLa PGA es un búfer de memoria que contiene datos e información de control para un proceso del servidorCada vez que se arranca un proceso del servidor, se crea su PGALa información del PGA depende de la configuración de Oracle

Page 34: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.34

ProcesosUn proceso es un hilo de control o un mecanismo de sistema operativo que puede ejecutar una serie de pasos. El servidor de Oracle tiene 2 tipos de procesos en general:

Proceso de usuario: se crean y se mantienen para ejecutar el código de un programa de aplicación o de una herramienta de Oracle. Los procesos de usuario se comunican con los procesos del servidor a través de la interfaz de programaProcesos de Oracle: son llamados por otros procesos para realizar las funciones del proceso invocador

Page 35: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.35

Procesos de OracleProcesos del servidor: Los crea Oracle para manejar peticiones de los procesos de usuario que estén conectados. De esta manera tienen que comunicarse con los procesos de usuario e interactuar con Oracle para llevar a cabo las peticiones del proceso de usuario asociadoProcesos de background: Los crea Oracle con cada instancia. Consolidan funciones que de otro modo se tendrían que realizar por los programas de los procesos de usuario. Estos procesos de manera asíncrona realizan E/S y monitorizan a otros procesos Oracle para proporcionar un mayor paralelismo y un mayor rendimiento

Page 36: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.36

Procesos de background

Escritor de la Base de datos (DBWR):escribe los bloques de datos modificados de los búferes de la caché a los ficheros de datosno es necesario que los escriba cuando se realiza un commitsino que sólo se realiza cuando quedan pocos bloques libres en la caché con lo que se mejora el rendimiento

Log Writer (LGWR):escribe las entradas de rehacer a disco

Page 37: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.37

Procesos de backgroundCheckpoint (CKPT):

en momentos específicos, todos los búferes de la base de datos del SGA se llevan a disco por el DBWR; este suceso se denomina chekpointel CKPT es responsable de señalizar cuando el DBWR tiene que actuareste proceso es opcional y sino está presente el LGWR asume sus tareas

Archiver (ARCH):copia los ficheros online de rehacer a almacenamiento estable cuando los ficheros online se llenansólo está activo cuando la base de datos está en modo ARCHIVELOG

Page 38: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.38

Procesos de backgroundSystem Monitor (SMON): Realiza la recuperación de la instancia en el arranqueProcess Monitor (PMON): realiza la recuperación de un proceso cuando un proceso de usuario falla. Es responsable de limpiar la caché y de liberar los recursos que el proceso estuviera usandoRecoverer (RECO): se usa para la recuperación automática en procesos de limpiado y de transacciones distribuidasDispatcher (Dnnn): Son procesos opcionales que sólo están presentes en la configuración multi-hilo. Se crea al menos un dispatcher por cada protocolo de comunicación en usoLock (LCKn): hasta 10 se utilizan para bloqueos inter-instancia cuando está en uso el Servidor paralelo

Page 39: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.39

La Interfaz de ProgramaEs el mecanismo mediante el cual un proceso de usuario se comunica con los procesos del servidor. Sirve como método de comunicación estándar entre cualquier herramienta cliente o aplicación y el software de Oracle. Sus funciones son:

Actuar como mecanismo de comunicación formateando las peticiones de datos, pasando los datos, y capturando y devolviendo errores.Realizar conversiones y traducciones de datos, especialmente entre distintos tipos de ordenadores o a tipos de datos de programas de usuario externos

Page 40: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

ORACLE: Transacciones

Page 41: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.41

TransaccionesUna transacción es una unidad lógica de trabajo que está compuesta por una o más sentencias SQL insert, update o delete y que se ejecutan por un único usuarioUna transacción comienza con la primera sentencia y termina con un commit explícito o un roll back.El hacer el commit significa que los cambios debidos a las sentencias de la transacción se hacen permanentesHacer roll back significa que queremos que se deshagan todos lo cambios y que la base de datos se quede como estuviera antes de que la primera sentencia de la transacción tuviera lugar

Page 42: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.42

TransaccionesLa base de datos utiliza un sistema de bloqueos para prevenir la interferencia entre transaccionesLos bloqueos son de dos tipos: de escritura o exclusivo y de lectura o compartidoEn cualquier caso, para preservar la integridad de los datos Oracle debe conocer el orden en el que se ejecutan las transaccionesPara ello se utiliza el SCN (System Change Number) que es un timestamp lógico

Page 43: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.43

Transacciones: Write simple

El usuario modifica (update) una línea de una tabla en la base de datosEl servidor obtiene un SCN y lee el datoEl servidor bloquea el registro que contiene la información y a continuación copia el valor, antes de cambiarlo, al segmento de rollbackLos cambios al segmento de rollback y de la base de datos se registran en el buffer de redo en la SGACuando se invoque el commit el LGWR registra la transacción completa incluyendo el SCN que marca el commit de la transacción y cuando el DBWR confirma la escritura la transacción se cierra completamente

Page 44: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.44

Transacciones: Read simple (1)

El usuario A consulta (select) una línea de una tablaEl servidor obtiene un SCN y lee el datoPara cada bloque leído compara sus SCNs de las transacciones que pudieran involucrarleSi detecta cambios pendientes utiliza los datos en los segmentos de rollback para crear una versión consistente del dato que permita la lectura

Page 45: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.45

Transacciones: Read simple (2)

Otro usuario B modifica una línea de la misma tabla pero que aún no ha sido leída en la consulta de ACuando alcance a leer ese dato el servidor ve que tiene un SCN posterior al del principio de la lectura y detectará el cambio haya sido aceptado o noEn el caso de que el cambio haya sido confirmado el servidor lee el dato sin más pues es consistenteEn caso contrario, es decir, está pendiente (en proceso o a la espera), el servidor recupera del segmento de rollback la versión previa del dato, antes de la actualización, y la devuelve al usuario A

Page 46: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

Administración de bases de datos Oracle

Page 47: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.47

AdministradorEl administrador de la base de datos es responsable de las siguientes tareas:

Ajuste de la base de datos para su óptima utilizaciónGarantizar la integridad y consistencia de los datosFacilitar la compartición de los datosReducir el almacenamiento innecesario

Page 48: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.48

SeguridadCrear nuevos usuarios con diferentes privilegiosAsignar privilegios del sistemaCrear roles Alterar rolesPermitir a los usuarios dar privilegios a otros usuariosCrear perfiles de usuarios para limitar el consumo de recursos del sistema

Page 49: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.49

Creación de un usuarioCreate user usuario identified by claveDefault tablespace tablespaceTemporary tablespace tablespaceQuota n (unlimited) on tablespaceProfile perfil

Page 50: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.50

Eliminación/ Modificación de un usuario

Drop user usuario cascade;

Alter user usuario identified by claveDefault tablespace tablespaceTemporary tablespace tablespaceQuota n (unlimited) on tablespaceProfile perfil

Page 51: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.51

Información de usuariosTablas:

User_usersAll_usersDBA_usersUser_TS_quotasDBA_ts_quotas

Columnas:UsernameUser_idPasswordDefault_tablespaceTemporary_tablespaceCreatedProfileTablespace_name....

Page 52: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.52

Acceso a los datosPrivilegios:

Permiso para realizar una operación determinadaRoles:

Grupos de privilegios para poder realizar una administración más cómoda cuando existen un gran número de usuarios

Perfiles:Límites que permiten compartir recursos en la base de datos de manera equitativa entre todos los usuarios que realicen una llamada a la base de datos o durante una sesión

Page 53: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.53

PrivilegiosHay dos tipos:

Objetos: cambios en los datos ( alter, execute, delete, index, insert, references, select, update, all)El propietario de un objeto adquiere automaticamente privilegios all sobre dicho objeto

Grant select, update on tabla to usuarioSistema: cambios en las estructuras de la base de datos

Page 54: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.54

Privilegios del sistemaDerecho a ejecutar un tipo de comandoSobre objetos de un esquema (create view)Sobre objetos de un tipo especificado(selectany table) Sobre el sistema o sobre el usuario (createuser)Un administrador (DBA) puede tener cualquier variedad de privilegios del sistema

Page 55: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.55

Privilegios del sistemaGrant create session, create table, create view, create synonym to usuario

Grant create user, alter user, drop user, create role to usuario with admin option

Page 56: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.56

RolesGrupo de privilegios que se concede a los usuarios o a otro rolePueden consistir en privilegios del sistema y a nivel de objetoNo son propiedad de nadie ni están en un esquemaSe puede dar acceso a cualquier usuario a un role excepto a uno mismoLas definiciones se almacenan en el diccionario de datos

Page 57: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.57

RolesCreate role rolIdentified by contraseñaGrant rol connect

Alter role rol not identified

Alter role rol identified by contraseña

Page 58: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.58

Concesión de privilegiosGrant privilegio on esquema to usuarioWith grant option

Grant select, update on cuentas to ernes

Grant privilegio to usuario with admin optionGrant create session to ernes

Page 59: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.59

Supresión de privilegiosRevoke privilegio on objeto fromusuarioRevoke update on cuentas from usuario

Page 60: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.60

PerfilesCreate profile manager LimitSessions_per_user unlimitedCpu_per_session unlimitedCpu_per_call defaultLogical_reads_per_session defaultLogical_reads_per_call 100000(lo mismo con alter profile)

Page 61: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.61

SinónimosSon nombres alternativos para tablas, vistas, u otros sinónimos de la base de datosSe utilizan porque es una manera de que los usuarios no hagan referencia a la tabla real sino a un sinónimo en su lugar

Page 62: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.62

SinónimosCreate synonym nombre del sinónimo for

[propietario].nombre_objeto

Create synonym nombre del sinónimo for[propietario].nombre_objeto

Drop synonym nombre del sinónimo

Page 63: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

SQL*PLUS

Page 64: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.64

TablasEn Oracle las tablas se crean con CREATE TABLE:

Create table cliente (nombre varchar(30) not null,código_postal varchar (4),ventas number);

Page 65: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.65

VistasPermiten la creación de una selección personalizada de una tabla o de una colección de tablas. Una vista NO contiene datos es una tabla virtual: solo se almacena su definición. Los datos ser recuperan cada vez que se invoque a la vista.Al igual que en las tablas se pueden insertar, actualizar, borrar y seleccionar datos de una vista aunque habrá que analizar qué vistas son actualizables y cuales no lo son

Page 66: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.66

VistasLas vistas pueden proporcionar un nivel adicional de seguridad puesto que sólo se permite visualizar los datos que cumplan la condición de selección de la consultaLas vistas permiten ocultar la complejidad de los datosAyudan a mantener la claridad de la nomenclaturaPermiten cambiar la estructura de las tablas subyacentes in necesidad de cambiar el código de la aplicación

Page 67: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.67

Vistas: creaciónEn Oracle una vista se crea con el comando CREATE VIEW:CREATE OR REPLACE VIEW clientes_norte ASSelect nombre, codigo_postalFROM clientes WHERE codigo_postal=“norte”;

Page 68: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.68

ÍndicesLos índices permiten recuperar datos más rápidamente de la base de datosLos datos no se guardarán ordenados pero el índice si se mantendrá ordenadoLas entradas del índice contienen información sobre las columnas que forman parte del índice no sobre todas las columnas de la tablaNo se pueden crear índices sobre todos los atributos porque consumen recursos

Page 69: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.69

ÍndicesLos índices se crean con el comando CREATE INDEXCREATE INDEX ind_nombre on clientes(nombre);

CREATE UNIQUE INDEX ind_nombre onclientes(nombre);

No permitirá los repetidosCREATE INDEX ind_nombre_cod on

clientes(nombre, codigo_postal);Crea un índice sobre las dos columnas especificadas

Page 70: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.70

SinónimosUn sinónimo es un objeto de la base de datos que permite crear nombres alternativos para las vistas y tablas ORACLE.Cuando los usuarios que no son los creadores de una tabla desean referenciarla en una orden SQL deben siempre emplear un sinónimoSe puede establecer sinónimos para una tabla Oraclepor múltiples razones:

Ocultar el verdadero creador o nombre de una tablaOcultar la localización de una tabla Proporcionar a loas usuarios nombres de tablas menos complicados que los nombres reales

Page 71: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.71

SinónimosEl uso de sinónimos simplifica enormemente la sintaxis de las órdenes SQL. Los sinónimos pueden ser públicos y privados.Con un sinónimo público cualquier usuario Oracle podrá referenciar al objeto create synonym tonic for ops$corej.sample3create public synonym tonic for ops$corej.sample3

Page 72: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.72

ConcesionesOracle proporciona un control amplio sobre lo que un usuario puede ver modificar borrar o cambiarCombinando esta función con las vistas, se puede incluso controlar qué datos puede un usuario consultarLas concesiones se usan para dar a un usuario privilegios para trabajar con los datos de otro usuario.Cuando se conceden privilegios a usuarios sobre las tablas de otros usuarios antes de poder referenciar dichas tablas en las órdenes SQL, deben tener un sinónimo público o privado por medio del cual Oraclepueda identificar la tabla.

Page 73: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.73

ConcesionesLa orden para la concesión de privilegios es GRANTLa orden grant tiene se partes:

La parte a continuación del grant especifica el o los privilegios concedidos separados pro comasNombre de la tabla sobre la que se ponen los privilegios que va precedida de ONReceptor o receptores de los permisosGrant select on cliente to public

Page 74: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.74

RolesSe puede crear un objeto de la base de datos denominado rol, luego conceder los privilegios a dicho rol y luego conceder dicho rol a los usuarios individualesCreate rol mirolGrant insert on tablaA to mirol;Grant insert on tableB to mirolGrant mirol to ops$ernesGrant mirol to ops$gracia

Page 75: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.75

SQL-PlusEs la versión de SQL de OracleEl “plus” hace referencia a las extensiones al lenguaje hechas por oracleEs un lenguaje amigableTodo el trabajo con las bases de datos relacionales se realiza mediante un lenguaje de programación basado en el SQLSe trabaja con conjuntos de datosResulta sencillo escribir informes

Page 76: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.76

Tipos de datoschar(tamaño). Carácter de longitud fija con un tamaño máximo de 2000varchar(tamaño). Datos de tipo carácter de longitud variable con un tamaño máximo de 4000number(l,d) datos numéricos siendo “l2 la longitud y “d” el número de dígitos decimalesblob es un objeto binario de gran tamaño siendo el tamaño máximo de 4GBraw(tamaño) datos binarios puros con una longitud máxima de 2000 bytesdate fechas desde el 1 de enero del 4712 a. C hasta el 31 de diciembre del 4712 d. C.long datos de tipo carácter de longitud variable hasta 2 GB

Page 77: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.77

SQL básicoLa primera fase de implementación de una base de datos siempre comienza con órdenes CREATE

Create table cliente (nombre varchar(30) not null,código_postal varchar (4),ventas number);

Page 78: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.78

SQL-plus (básico)Una de las mejoras más útiles que ha añadido Oracle es la orden describe. Esta orden proporciona un rápido resumen de la tabla y sus columnas.Describe cliente;

Cuando se han creado las tablas se pueden insertar objetos con la orden insertInsert into cliente values (“Juan”, “CA”,

33456);

Page 79: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.79

SQL-plus (básico)La orden select es la forma de recuperar los datos de una base de datos Oracle. Tiene cuatro partes fundamentales:

La palabra select seguida de lo que se desee ver (obligatoria)La palabra from seguida del lugar de donde hay que obtener los datos (nombres de tablas donde residen los datos) (obligatoria)La palabra where seguida de cualquier criterio de selección; por ejemplo las condiciones de restricción para los datos que se van a recuperar (opcional)La palabras order by seguidas por el criterio de ordenación por ejemplo una lista de nombres de atributo (opcional)

Page 80: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.80

SQL-plus (básico)Select * from user_tables;

Select table_name from user_tables;

Select nombre, codigo_postalFrom cliente Where ventas >34 and codigo_postal=“CA”;

Page 81: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.81

Where: operadores comunes=, !=, ^=, <>, <, >, <=, >=in (,,) igual a cualquier elemento especificado en los paréntesisnot in( ) . Distinto a todos los elementos especificados en los paréntesisbetween A and B mayor o igual que A y menor o igual que Bnot between A and B menor que A o mayor que Blike “%tin” contiene un texto determinado (por ejemplo ‘tin’)

Page 82: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.82

Funciones para datos numéricos+, -, *, /Select ventas *100 from cliente;ceil(n) aproxima el entero mayor o igual al número n floor(n) devuelve el mayor entero igual o menor que nmod(m, n) resto de dividir m entre npower(m, n) m elevado a la potencia nround(n,m) redondea el número n con m dígitos a la derecha a partir del pto decimalsign(n) 0 si n=0; 1 si n>0; -1 si n<0sqrt(n) raíz cuadrada de n

Page 83: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.83

Funciones para datos de tipo carácterinitcap (char) pone en mayúsculas el primer carácter de cada cadena de caractereslower(char) pasa a minúsculas la cadena de caracteres completa.replace(char, srt1, str2) en la cadena de caracteres char, cada ocurrencia de str1 se reemplaza por srt2soundex(char). Representación fonética de char. Normalmente se usa para búsquedas difusas de nombres. Puede comparar palabras que se escriben de diferente forma pero se pronuncian de forma parecidasubstr(char, m, n) Extrae n caracteres de la cadena de caracteres char a partir de la posición m.length(char) longitud de char

Page 84: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.84

Funciones para el tipo dateSysdate fecha y hora actualLast_day último día del mesAdd_months (d, n) suma o resta n meses a partir de la fecha dMonths_between(f,s) diferencia en meses entre la fecha f y la sNext_day(d, day) La fecha del día especificado de la semana después de d

Page 85: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.85

Funciones para el tipo dateY, YY ó YYY. El o los dos o tres dígitos finales del año Select to_char(sysdate, “YYY”) from dual

SYEAR o YEAR. El año utilizando S para incluir un signo menos para las fechas a.CQ Trimestre del año (de enero a marzo=1)MM mes (0, 12)RM mes en números romanosMonth nombre del mes con 9 caracteresWW semana del añoW semana del mes

Page 86: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.86

Funciones para el tipo dateDDD día del añoDD día del mesD día de la semana (1-7)DY abreviatura del nombre del díaHH o HH12 la hora del día (1-12)HH24 la hora del día utilizando un reloj de 24 horasMI minutos (0-59)SS (segundos (0-59)Select to_char(sysdate,’D’) from dual;Select next_day(sysdate, ‘Monday’) from dual;Selecto to char_(sysdate, ‘MI’) from dual

Page 87: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.87

Conversión de tiposto_char Convierte cualquier tipo de dato al tipo carácter.to_number. Convierte un conjunto válido de caracteres numéricos en un dato numéricoTo_date Convierte datos de tipo carácter con el correcto formato en datos de tipo fecha. Es la conversión que proporciona más problemas

Page 88: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.88

UpdateAlgunas veces es necesario actualizar los datos almacenados en una tabla. Esto se hace con la orden update que tiene las siguientes partes:La palabra update seguida de la tabla que se quiere modificar (obligatoria)La palabra set seguida de una o más columnas que se deseen modificar (obligatoria)La palabra where seguida de los criterios de selección (opcional)Update clientes Set ventas=0Where codigo_postal=‘CA’

Page 89: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.89

DeleteLa orden delete se usa cuando se desean eliminar una o más filas de datos de una tabla. Tiene dos partes:Las palabras delete from seguidas por el nombre de la tabla que desee borrar (obligatoria)La palabra where seguida por los criterios de borrado (opcional)Delete from cliente Where ventas > 90;

Page 90: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.90

AlterDespués de crear una tabla, algunas veces surge la necesidad de añadir una columna adicional. Esto se puede hacer con la orden alter tableAlter table clienteAdd (fecha_entrada date);

Alter table cliente Modify (nombre char(35));

Page 91: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.91

Formateo de la salidaHasta el momento sabemos crear, modificar, insertar, actualizar y borrar datos de las tablas. Ahora vamos a juntarlo todo y vamos a escribir un informe. En SQL*Plus se pueden establecer muchos parámetros para controlar como se visualiza el resultado. Se pueden ver todos los calores actuales de todos los parámetros mediante la orden SQL*Plus:

show all

Page 92: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.92

Formateo de la salidaTamaño de página y de línea:

set linesize dice a Oracle cual es la anchura de la páginaset pagesize dice la longitud de la página. Valores comunes entre 55 y 60

Títulos de páginasLa orden ttitle incluye muchas opciones

Ttitle ‘informe de | clientes’

Pies de páginasLa orden btitle se usa para colocar algún elemento en la parte inferior de cada página

‘btitle ‘---ejemplo.sql----’

Page 93: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.93

Formateo de la salidaRepheader sirven para colocar y reformatear la cabecera de un informe. Tienen los siguientes parámetros:

col n indenta en la posición n la línea actualSkip n salta al principio de una nueva línea. Si se especifica 0 pasa al principio de la líneaLeft, right, centerBold presenta los datos en negritasSql.lno: número de la línea actualSql.pno: número de la página actualSql.user: nombre del usuario registrado en SQL*Plus

Repfooter lo mismo para los pies del informe

Page 94: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.94

Escritura en archivoLa orden spool indica a Oracle que guarde la salida de SQL*Plus en un archivo de datos.Spool c:/informes/salida.lst

Debe incluirse el nombre del archivo de salidaPara detener el envío de datos a un archivo, se usan las órdenes spool off o spool out. Esta última cierra el archivo de salida y lo imprime

Page 95: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.95

Formateo de las columnas de salida

En muchos casos hay que formatear los datos contenidos en las columnas. Se hace con la orden columnColumn last_name format a8 wrap heading

’last|name’Dice que solo se presenten 8 caracteres de la

columna last_name.La a indica que solo pueden ser caracteres La parte wrap indica que cuando hay un valor de mas de 8 caracteres se pasen a la siguiente línea. El heading indica que debe escribir en el informe la cabecera Last name en dos líneas

Page 96: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.96

Formateo de las columnas de salida

Wrap: presenta el número especificado de caracteres y salta a la línea siguienteWord_wrap: presenta el número especificado de caracteres pero desplazando a la línea siguientes una palabra en lugar de partirla en dosTruncate: presenta el número especificado de caracteres e ignora el resto

Page 97: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.97

Ruptura de secuenciaBreak on nombre de columnaSi varias tuplas tienen el mismo valor para el nombre del atributo especificado sólo se mostrará la primera vezSe debe ordenar la consulta por la misma columna en la que se especifica la ruptura de secuenciaSi se añade la orden skip n además deja n líneas hasta el siguiente valor del atributoBreak on codigo_postal skip 1

Page 98: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.98

Funciones que agrupan resultados

Group by nombre(s) de atributo(s). Agrupa las tuplas atendiendo al valor del atributo mencionado.Las funciones de grupo son:

Avg(nombre_at) valor medio de los valores del atributoCount(*) número de filas de la tablaMax(nombre_at) máximo almacenado en atributoMin(nombre_at) mínimo almacenado en el atributo

Page 99: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.99

DecodeEs igual a la estructura lógica if-thenDecode (nombre_at, comparación, acción,

comparación, acción, .... else acción)Select decode(codigo_postal, ‘MA’ ‘este’,

‘NY’ ‘este’,‘CA’ ‘oeste’,‘medio’), ventas

from cliente;

Page 100: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.100

Definición de variablesUna variable tiene asignado un tipo de datos (numérico o de caracteres) y contiene datos.Se declaran con la orden define (def)

Define rpt_cd=“MA”Select ventas from clientesWhere codigo_postal= ‘&rpt_cd’;

Define sola indica las variables que se encuentran definidasUndefine (undef) sirve para borrar el valor de una variable

Page 101: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.101

Variables de sustituciónMuchas veces cuando se ejecuta una consulta no se conoce de antemano qué valor quiere utilizar el usuario sino que se desea introducir un valor cuando se inicia la realización del informe. Para conseguir esto basta con poner el signo & al lado de la sección de código que quiere reemplazarse.Si se quiere evitar que pida múltiples veces el valor de la variable se ponen dos signos &que hace que Oracle pida una vez el valor y ejecute la orden define con dicho valor

Page 102: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.102

Variables de sustituciónCuando se define una variable con el convenio &&, tiene que eliminar (undefine) la variable si desea darle un valor diferente

Select codigo_postal, avg(&&rptcol), max(&&rptcol)From clientes Group by codigo_postal

El indicativo predeterminado de Oracle no es aceptable para un usuario final. Se usan las órdenes prompt y accept para facilitar un mensaje mas descriptivoAccept tname prompt “Introduzca el nombre de la tabla”

Page 103: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.103

Edición en la línea de órdenesa: añade texto al final de la línea actualdel: borra la línea actuali: añade una línea después de la línea actuall: muestra todas las líneas almacenadas en el bufferl n: muestra la línea número n del buffer

Page 104: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Facultad de InformáticaUniversidad Politécnica de Madrid (U.P.M.)

PL/SQL

Page 105: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.105

Pl/SQLDECLAREDeclaración de variables;BEGINSENTENCIAS SQL;...SENTENCIAS SQL;END;

Page 106: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.106

Tipos de datosNumberCharDate Boolean%TYPE declara una variable basada en el tipo de datos de otra variable o el tipo de dato de una columna de una tabla.La declaración de variables y constantes deben ser declaradas después de la palabra DECLARE

Page 107: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.107

SelectSe ha de utilizar SELECT .. INTOLa sentencia SELECT solo puede devolver una filaLa cláusula INTO debe tener tantas variables como columnas o expresiones se seleccionen en la SELECT

Page 108: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.108

Operaciones DMLINSERT, UPDATE y DELETE pueden ser incluidos en un bloque de PL/SQLLas variables pueden ser referenciadasNO se generan errores si un Update o un delete no afectan a ninguna fila.

Page 109: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.109

Control condicionalIf contador <50 thenV:=0;ELSEIF contador >30 thenV:=1;ElseV:=2;End if;

Page 110: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.110

Control iterativoRepetitiva básica;LOOP<secuencia de sentencias>EXIT WHEN <condición de salida><secuencia de sentencias>END LOOP;

Page 111: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.111

Control iterativoWHILE:WHILE <condición de permanencia> LOOP<secuencia de sentencias>END LOOP;

FOR:FOR <variable> IN <rangomin>..<rango max>LOOP <secuencia de sentencias>END LOOP;

Page 112: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.112

Ejemplo de iteracionesDECLARE I number (3):=2;BEGINWHILE I < 10 LOOPINSERT into temp values (I, 2);I:=I+1;end LOOP;end;

Page 113: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.113

Ejemplo de iteraciones

DECLARE I number (3):=2;BEGIN

LOOP INSERT into temp values (I, 2);I:=I+1;exit when I>9;

END LOOP;END;

Page 114: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.114

Ejemplo de iteracionesDECLARE I number (3):=2;BEGINfor I IN 1.. 9 LOOPINSERT into temp values (I, 2);end loop;end;

Page 115: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.115

CursoresUn cursor debe ser declarado antes de ser usadoSe asigna un nombre a una consulta determinadaSiempre en la zona de DECLARELa consulta no debe tener la cláusula INTODebe abrirse antes de que puede devolver filas con OPENAl hacer el OPEN se inicializa el cursor, y se ejecuta la consulta asociada al cursorEl open se hace en la zona de sentencias

Page 116: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.116

CursoresFETCH:

Devuelve la siguiente fila en el conjunto activoEl cursor debe estar abiertoEl cursor avanza al siguiente regsitroLos datos devueltos se almacenan en variables de control o en un registro FETCH INTOSe pueden declarar registros basados en el cursor:Nombre del cursor %ROWTYPE

Page 117: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.117

CursoresClose:

Desactiva el cursorDespués de abrirlo se puede abrir otra vezDevuelve los recursos al sistema

Atributos: nombre del cursor atributo%FOUND, %NOTFOUND%ROWCOUNT (se incrementa cada vez que se hace un FETCH)%ISOPEN

Page 118: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.118

TriggersSon procedimientos que se ejecutan de manera implicita cuand se realiza una operación de INSERT, UPDATE o DELETEPueden incluir sentencias en SQL o en PL/SQLSolo se pueden definir sobre tablas no sobre vistas

Page 119: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.119

TriggersSe utilizan para:

Generar columnas derivadas automaticamenteEvitar transacciones erroneasForzar que se cumplan reglas de negocioProporcionar seguimiento de sucesos tranparentementeReunir estadísticas en una determinada tabla

Page 120: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.120

TriggersUn trigger tienen 3 partes:

Una sentencia o suceso que lo dispara: Es una sentencia que provoca que el trigger se dispare puede ser un DELETE un INSERT o un UPDATE de una tablaUna restricción del trigger: especifica una condición lógica que debe ser cierta para que el trigger se dispare. La acción del trigger no se realiza si la acción es falsaUna acción del trigger: es un bloque de sentencias en PL/SQL

Page 121: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.121

TriggersPuede ser que se ejecuten una vez por cada fila afectada (for each row) o una vez pro la sentencia que lo disparó.Se pueden ejecutar antes (BEFORE) de que se realice la sentencia que lo disparó o después (AFTER) de la sentencia que lo disparó

Page 122: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.122

Triggerscreate trigger crea_historiaafter insert on enfermofor each rowbeginInsert into historia values (sec.nextval,

:new.n_historia);end;/

Page 123: Implementación de Bases de Datos en Oracle - UPMpegaso.ls.fi.upm.es/BDOO/oracle.pdf · 2004-04-19 · Las bases de datos se montan y desmontan ... realizan trabajo para los procesos

Copyright © 2001 Ernestina Menasalvas RuizFacultad de Informática, U.P.M.123

BibliografíaOracle8: Guía de aprendizaje. M. Abbey, M. CoreyOracle 8: SQL Language. ReferenceManual. Oracle