manual de base de datos avsnzado

Upload: manuel-rivas-padilla

Post on 20-Feb-2018

234 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Manual de Base de Datos Avsnzado

    1/143

    Base de DatosAvanzado II

  • 7/24/2019 Manual de Base de Datos Avsnzado

    2/143

    2

    CARRERAS PROFESIONALES CIBERTEC

  • 7/24/2019 Manual de Base de Datos Avsnzado

    3/143

    BASE DE DATOS AVANZADO I I 3

    CIBERTEC CARRERAS PROFESIONALES

    NDICEPg

    Presentacin 7

    Unidad de aprendizaje 1

    INTRODUCCIN A UNA BD ORACLE

    1.1 Tema 1 : INTRODUCCIN AL SGBD ORACLE 11

    1.1.1 : Introduccin a una DB relacional y a la arquitectura Oracle 11

    1.1.2 : Interactuando con la base de datos: Conexin y SQL*PLUS 14

    1.1.3 : Componentes de la Arquitectura de una BD Oracle 201.2 Tema 2 : GESTIN DE UNA INSTANCIA ORACLE 30

    1.2.1 : Inicio de la instancia 32

    1.2.2 : Apertura de la Base de Datos 33

    1.2.3 : Cierre de la Base de Datos 38

    1.2.4 : Configuracin de un cliente Oracle 41

    Unidad de aprendizaje 2

    CREACIN DE ESTRUCTURAS DE DATOS

    2.1 Tema 3 : CREACIN DE ESTRUCTURAS DE DATOS 51

    2.1.1 : Creacin y modificacin de tablas 51

    2.1.2 : Creacin de restricciones 54

    2.1.3 : Manejo de ndices 59

    2.1.4 : Manejo de secuencias 61

    2.1.5 : Manejo de sinnimos 63

    2.2 Tema 4 : DICCIONARIO DE DATOS 65

    2.2.1 : Introduccin al Diccionario de Datos 652.2.2 : Estructura del Diccionario de Datos 65

    2.2.3 : Uso del Diccionario de Datos 66

    2.2.4 : Otras tablas en el Diccionario 67

    2.2.5 : La vista DBA_OBJECTS 67

  • 7/24/2019 Manual de Base de Datos Avsnzado

    4/143

    4

    CARRERAS PROFESIONALES CIBERTEC

    Unidad de aprendizaje 3

    LENGUAJE DE MANIPULACIN DE DATOS

    3.1 Tema 5 : LENGUAJE DE MANIPULACIN DE DATOS 75

    3.1.1 : Lenguaje SQL 75

    3.1.2 : Instrucciones DML y operadores 76

    3.1.3 : Consultas multitabla 82

    3.1.3 : Funciones Predefinidas 84

    Unidad de aprendizaje 4

    PROGRAMACIN EN ORACLE

    4.1 Tema 6 : PROGRAMACIN PL/SQL 95

    4.1.1 : Introduccin a Oracle PL/SQL 95

    4.1.2 : Tipos de datos en PL/SQL 97

    4.1.3 : Estructuras de Bloques de PL/SQL 97

    4.1.4 : Sentencias SQL en PL/SQL 105

    4.2 Tema 7 : ESTRUCTURAS DE CONTROL EN PL/SQL 115

    4.2.1 : Estructuras Condicionales 115

    4.2.2 : Estructuras Cclicas 118

    4.3 Tema 8 : CURSORES 121

    4.3.1 : Tipo de cursores 122

    4.3.2 : Declaracin de cursores 122

    4.3.3 : Apertura de cursores 124

    4.3.4 : Almacenamiento de datos de cursores 124

    4.3.5 : Cierre de cursores 125

    4.3.6 : Atributos de los cursores 126

    4.3.7 : Uso avanzado de cursores 127

    4.4 Tema 9 : EXCEPCIONES EN PL/SQL 134

    4.4.1 : Qu es una Excepcin? 134

    4.4.2 : Declaracin de Excepciones 134

    4.4.3 : Generacin de Excepciones 137

    4.4.4 : Tratamiento de Excepciones 137

    4.4.5 : Propagacin de Excepciones 141

    Unidad de aprendizaje 5

    PROGRAMACIN AVANZADA EN ORACLE

    5.1 Tema 10 : PROGRAMACIN DENTRO DE UNA BD ORACLE 175

    5.1.1 : Construccin de procedimientos y funciones almacenados 175

  • 7/24/2019 Manual de Base de Datos Avsnzado

    5/143

    BASE DE DATOS AVANZADO I I 5

    CIBERTEC CARRERAS PROFESIONALES

    5.1.2 : Construccin de paquetes almacenados 176

    5.1.3 : Construccin de disparadores 177

    Unidad de aprendizaje 6

    SISTEMA DE ARCHIVOS ORACLE6.1 Tema 11 : SISTEMA DE ARCHIVOS ORACLE 175

    6.1.1 : Archivos de Control 175

    6.1.2 : Mantenimiento de los Archivos Redo logs 176

    6.1.3 : Gestin de tablespaces y datafiles 177

    Unidad de aprendizaje 7

    MECANISMOS PARA LA GESTIN DE LA INFORMACIN

    7.1 Tema 12 : Seguridad, auditora, respaldo y recuperacin 1757.1.1 : Seguridad y Auditora 175

    7.1.2 : Respaldo y Recuperacin 176

  • 7/24/2019 Manual de Base de Datos Avsnzado

    6/143

    6

    CARRERAS PROFESIONALES CIBERTEC

  • 7/24/2019 Manual de Base de Datos Avsnzado

    7/143

    BASE DE DATOS AVANZADO I I 7

    CIBERTEC CARRERAS PROFESIONALES

    PRESENTACIN

    Base de Datos Avanzado IIes un curso que pertenece a la lnea de base de datos y sedicta en las carreras Computacin e Informtica, y Administracin y Sistemas. Brinda unconjunto de herramientas que permite a los alumnos implementar soluciones en una BDOracle que satisfacen necesidades de negocio, y asegura un buen rendimiento y la altadisponibilidad de los datos.

    El manual para el curso ha sido diseado bajo la modalidad de unidades de aprendizaje,

    las que se desarrollan durante semanas determinadas. En cada una de ellas, hallar loslogros que debe alcanzar al final de la unidad; el tema tratado, el cual ser ampliamentedesarrollado; y los contenidos que debe desarrollar, es decir, los subtemas. Por ltimo,encontrar las actividades que deber desarrollar en cada sesin que le permitirnreforzar lo aprendido en la clase.

    El curso es eminentemente prctico consiste en un taller de programacin. En primerlugar, se inicia con una introduccin a una BD Oracle, se muestra como configurar unaconexin remota y se hace un recorrido por las herramientas bsicas de comunicacin.Luego, se hace un repaso de las principales sentencias del Lenguaje de Manipulacin

    de Datos as como de las principales funciones predefinidas. Contina con la creacinde estructuras de datos en una BD Oracle. Luego, se presentan y desarrollan losconceptos bsicos en programacin PL/SQL. Contina con la programacin dentro deuna BD Oracle. A continuacin se desarrollan conceptos de Administracin de una basede datos Oracle como la gestin del Sistema de Archivos Oracle. Se concluye con larevisin de conceptos de seguridad, auditora, mecanismos de respaldo y recuperacinen una base de datos Oracle.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    8/143

    8

    CARRERAS PROFESIONALES CIBERTEC

  • 7/24/2019 Manual de Base de Datos Avsnzado

    9/143

    BASE DE DATOS AVANZADO I I 9

    CIBERTEC CARRERAS PROFESIONALES

    INTRODUCCIN A UNA BD ORACLELOGRO DE LA UNIDAD DE APRENDIZAJE

    Al trmino de la unidad, el alumno detalla la arquitectura de la base de datos Oracle yconfigura la conexin de un cliente remoto a travs del archivo tnsnames.ora.Asimismo manipula la informacin mediante la herramienta SQL*PLUS y gestiona unainstancia de base de datos

    TEMARIO

    1.1 Tema 1 : INTRODUCCIN AL SGBD ORACLE1.1.1 : Introduccin a una DB relacional y a la arquitectura Oracle1.1.2 : Interactuando con la base de datos: Conexin y SQL*PLUS1.1.3 : Componentes de la Arquitectura de una BD Oracle

    1.2 Tema 2 : GESTIN DE UNA INSTANCIA ORACLE1.2.1 : Inicio de la instancia1.2.2 : Apertura de la Base de Datos1.2.3 : Cierre de la Base de Datos1.2.4 : Configuracin de un cliente Oracle

    ACTIVIDADES PROPUESTAS

    Recordar el concepto de Modelo Relacional Identificar los principales componente de una base de datos Oracle Interactuar con el SQL*Plus para acceder a una base de datos Oracle Revisar los componentes de la Arquitectura de una base de datos Oracle

    UNIDAD DE

    APRENDIZAJE

    1

  • 7/24/2019 Manual de Base de Datos Avsnzado

    10/143

    10

    CARRERAS PROFESIONALES CIBERTEC

  • 7/24/2019 Manual de Base de Datos Avsnzado

    11/143

    BASE DE DATOS AVANZADO I I 11

    CIBERTEC CARRERAS PROFESIONALES

    1.1 INTRODUCCIN AL SGBD ORACLE

    1.1.1 Introduccin a una DB relacional y a la arquitectura Oracle

    1.1.1.1 Modelo Relacional

    El modelo relacional para la gestin de una base de datos es un modelo de datosbasado en la lgica de predicado y en la teora de conjuntos. Es el modelo msutilizado en la actualidad para modelar problemas reales y administrar datosdinmicamente.

    En este modelo, todos los datos son almacenados en relaciones y como cada relacines un conjunto de datos, el orden en el que estos se almacenen no tiene mayorrelevancia (a diferencia de otros modelos como el jerrquico y el de red). Esto tiene laconsiderable ventaja de que es ms fcil de entender y de utilizar por un usuario noexperto. La informacin puede ser recuperada o almacenada por medio deconsultas que ofrecen una amplia flexibilidad y poder para administrar la

    informacin.

    Este modelo considera la base de datos como una coleccin de relaciones. De manerasimple, una relacin representa una tabla que no es ms que un conjunto de filas,cada fila es un conjunto de campos y cada campo representa un valor que interpretadodescribe el mundo real. Cada fila tambin se puede denominar tupla o registro y acada columna tambin se le puede llamar campo o atributo.

    Una tabla es una estructura lgica que sirve para almacenar los datos de un mismotipo (desde el punto de vista conceptual). Almacenar los datos de un mismo tipo nosignifica que se almacenen slo datos numricos, o slo datos alfanumricos. Desdeel punto de vista conceptual, esto significa que cada entidad se almacena en

    estructuras separadas.

    Por ejemplo, la entidad factura se almacena en estructuras diseadas para ese tipo deentidad: la tabla FACTURA, la tabla FACTURA_COMPRA, etc. As, cada entidad,tendr una estructura (tabla) pensada y diseada para ese tipo de entidad.Cada elemento almacenado dentro de la tabla recibe el nombre de registro o fila. As,si la tabla FACTURA almacena 1000 facturas, se dice que la tabla FACTURA contiene1000 registros o filas.

    Una tabla se compone de campos o columnas, que son conjuntos de datos del mismotipo (desde el punto de vista fsico). Ahora, cuando decimos delmismo tipo queremosdecir que los datos de una columna son todos del mismo tipo: numricos,alfanumricos, fechas, etc.

    A la vez, tambin, puede existir la relacin entre tablas que tienen un campo o atributocomn. Por ejemplo, la tabla DETALLE que contiene todos los itemscorrespondientea cada factura de la tabla FACTURA.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    12/143

    12

    CARRERAS PROFESIONALES CIBERTEC

    1.1.1.2 Base de Datos Relacional

    Es un programa residente en memoria que se encarga de gestionar el tratamiento deentrada, salida, proteccin y elaboracin de la informacin que almacena.

    Aunque, aparentemente, podamos pensar que una Base de datos es un conjunto desolo archivos donde se almacena la informacin, en realidad, eso no es as. El coraznde una base de datos es el motor que es el programa que debe estar ejecutndose enuna mquina para gestionar los datos. Adems de este programa y los archivos condatos, existen otras utilidades auxiliares, como programas para realizar copias deseguridad, administracin, etc.

    Oracle es una base de datos relacional para entornos cliente/servidor, es decir, queaplica las normas del lgebra relacional (conjuntos, uniones, intersecciones, etc.) yque utiliza la arquitectura cliente/servidor, donde en un lado de la red est el servidorcon los datos y en el otro lado estn los clientes que "interrogan" al servidor.

    1.1.1.3 Funciones de la Base de Datos

    Permitir la introduccin de datos por parte del usuario Salida de datos Almacenamiento de datos Proteccin de datos (seguridad e integridad) Elaboracin de datos

  • 7/24/2019 Manual de Base de Datos Avsnzado

    13/143

    BASE DE DATOS AVANZADO I I 13

    CIBERTEC CARRERAS PROFESIONALES

    1.1.1.4 Conocimientos Necesarios

    Bsicamente, la relacin del usuario-programador con la base de datos se hace atravs de un lenguaje denominado SQL: Structure Query Language (Lenguaje

    Estructurado de Consultas).Para un programador de base de datos, el conocimiento mnimo debe comprender losiguiente:

    Conocimiento bsico de las estructuras internas de Oracle Lenguaje SQL Utilidades bsicas (SQL*PLUS, Export, Import, etc.) Lenguaje de programacin PL/SQL Tareas simples de administracin Tunning (afinamiento) bsico de sentencias SQL

    Las tareas propias de un administrador de bases de datos pueden ser las siguientes: Los conocimientos propios de un programador de base de datos Conocimiento profundo de las estructuras internas de Oracle Conocimiento profundo de los catlogos Conocer utilitarios de Administracin (Ejemplo: Oracle Enterprise Manager) Afinamiento avanzado de SQL, red, memoria, discos, CPU, etc.

    1.1.1.5 Componentes bsicos de una base de datos Oracle

    Motor: Programa ejecutable que debe estar en memoria para manejar la base de

    Datos. Cuando este programa est ejecutndose se dice que la Base de datos estlevantada. Servicio de red: Programa que se encarga de establecer las conexiones y

    transmitir datos entre cliente y servidor o entre servidores. En Oracle es el protocoloNet8.

    Listener(Escuchador): Programa residente en memoria que se encarga de recibirlas llamadas que llegan a la base de datos desde la red y de pasrselas a sta. Unabase de datos que no tenga un listener cargado, no podr recibir llamadas remotas.El listener se comunica con el servicio de red.

    Utilitarios: Intrpretes de consultas, Programas de Administracin de base dedatos, Programas de copia de seguridad, monitores de rendimiento.

    A todo este conjunto se le llama RDBMS: Relational Database Manager System Sistema de Gestin de Base de Datos Relacionales.

    1.1.1.6 LENGUAJE SQL

    El lenguaje estructurado de consultas es un conjunto de sentencias u rdenes quetodos los programas y usuarios deben utilizar para acceder a bases de datos Oracle.No hay otra manera de comunicarse con Oracle si no a travs de SQL.

    Dado que SQL es un estndar, todas las bases de datos comerciales en la actualidad

    utilizan SQL como puente de comunicacin entre la base de datos y el usuario.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    14/143

    14

    CARRERAS PROFESIONALES CIBERTEC

    En realidad, SQL no es un lenguaje en s, como podra ser un lenguaje deprogramacin de 3ra generacin (C, Pascal, etc.), sino que es un sublenguajeorientado a acceso y manipulacin de bases de datos relacionales.

    Se dice que SQL es estructurado porque trabaja con conjuntos de resultados (resultset) abstractos como unidades completas.

    Un conjunto de resultados es un esquema bsico de una tabla: M Filas x N columnas.Este esquema se trata como un todo y es la idea principal de SQL.

    Lo anterior es aplicable tambin cuando existe ms de una tabla en un mismo SQL, elconjunto de resultados sigue siendo el resultado de una matriz de M Filas x Ncolumnas, el cual puede ser filtrado (reducido) usando la muy conocida clusulaWHERE.

    1.1.1.7 LENGUAJE PL/SQL

    Ya se mencion anteriormente que SQL es un lenguaje de comandos, no un lenguajede programacin con todas las estructuras de control tpicas. As, SQL, slo contemplainstrucciones, ms o menos simples, pero no tiene ningn tipo de instrucciones decontrol de flujo o de otro tipo ms propias de los lenguajes de programacin de tercerageneracin (3GL).

    Para subsanar esta carencia, Oracle defini un lenguaje de programacin de tercerageneracin, que admita sentencias SQL embebidas. Este es el PL/ SQL (ProceduralLanguage o Programming language).

    La idea bsica sobre la que se sustenta el PL/SQL es aplicar las estructuras tpicas de

    un lenguaje de programacin (bifurcaciones, bucles, funciones, etc) a las sentenciasSQL tpicas.

    1.1.2 Interactuando con la base de datos: Conexin y SQL *PLUS

    SQL *PLUS, es una herramienta indispensable para un administrador de base dedatos.Es un entorno en modo texto y no contiene un motor PL/SQL local, es decir, lasinstrucciones o comandos se envan directamente a la base de datos.

    SQL *PLUS quizs sea la ms sencilla de las herramientas de desarrollo de PL/SQL.Permite al usuario introducir instrucciones SQL y bloques PL/SQL de forma interactivamediante una lnea de comandos.

    Generalmente, SQL *PLUS se distribuye junto con el servidor de Oracle y seencuentra disponible como parte de la instalacin estndar de Oracle.

    Dado que SQL *PLUS es un tema tan amplio, que no se puede estudiar en una solasesin de clases, se van a estudiar principalmente las funciones que interesan a losDBA (database administrator).

  • 7/24/2019 Manual de Base de Datos Avsnzado

    15/143

    BASE DE DATOS AVANZADO I I 15

    CIBERTEC CARRERAS PROFESIONALES

    1.1.2.1 Entorno del SQL *PLUS

    El SQL *PLUS tiene un entorno orientado al carcter.

    1.1.2.2 Conexin con la Base de Datos

    Antes de realizar cualquier instruccin en la base de datos, es necesario estableceruna conexin con el servidor de datos. Esta operacin se puede realizar de una de lassiguientes formas:

    Mediante el paso de un identificador de usuario y una contrasea y/o una cadena deconexin en la lnea de comandos utilizada para iniciar SQL *PLUS para el entornoorientado al carcter.

    Una primera forma sera despus de ejecutar el SQL *PLUS desde el explorador deWindows:

    O tambin especificando la cadena de conexin:

    Una segunda forma sera iniciando el SQL *PLUS desde el men ejecutar del botn deinicio:

    SQL*Plus: Release 11.2.0.1.0 Production on Lun Ago 1 19:13:09 2011Copyright (c) 1982, 2010, Oracle. All rights reserved.

    Introduzca el nombre de usuario:SCOTTIntroduzca la contrasena:TIGERConectado a:

    Oracle11g Enterprise Edition Release 9.0.1.1.1 Production with the partitioning

    option Jserver Release 9.0.1.1.1 Production

    SQL*Plus: Release 11.2.0.1.0 Production on Lun Ago 1 19:13:09 2011Copyright (c) 1982, 2010, Oracle. All rights reserved.

    Introduzca el nombre de usuario:SCOTT/TIGER@CIBERTECConectado a:

    Oracle11g Enterprise Edition Release 9.0.1.1.1 Production with the

    partitioning option Jserver Release 9.0.1.1.1 Production

    SQL>

  • 7/24/2019 Manual de Base de Datos Avsnzado

    16/143

    16

    CARRERAS PROFESIONALES CIBERTEC

    Mediante el uso del comando CONNECT, una vez dentro de SQL*PLUS (en ambosentornos).

    1.1.2.3 Comandos de Configuracin de Sesin

    Existe un grupo de comandos que nos permiten configurar el SQL *PLUS mientrasestamos conectados a la base de datos. Algunos de los comandos se muestran en la

    siguiente tabla:

    Por ejemplo, el comando LINESIZE nos permite determinar cuntos caracteres semostrarn por cada lnea de texto que devuelven las consultas a la base de datos. Lacantidad por defecto es 80 caracteres. Para poner en prctica el efecto del comando,hagamos la siguiente consulta:

    SQL> CONNECTIntroduzca el nombre de usuario: SCOTT

    Introduzca la contrasena: *****

    Conectado.

    SQL>

  • 7/24/2019 Manual de Base de Datos Avsnzado

    17/143

    BASE DE DATOS AVANZADO I I 17

    CIBERTEC CARRERAS PROFESIONALES

    ...sta ser la salida por pantalla. Ahora, si aumentamos la cantidad de caracteres porlnea de texto, el resultado de la consulta se mostrara ms ordenado.

    1.1.2.4 Ejecutando archivos de comandos desde SQL *PLUS

    Para ejecutar archivos que contengan comandos vlidos, se utiliza el comando STARTo el carcter @. Ejemplo:

    SQL> START @unidad:\ruta\mi_archivo;

    o tambin:

    SQL> @unidad:\ruta\mi_archivo;

    La extensin del archivo por defecto es .sql. Podemos utilizar archivos con extensindiferente al por defecto (cualquier archivo que pueda ser ledo con un editor de texto)

    pero debemos especificar la extensin en el comando de ejecucin. Por ejemplo, paraejecutar un archivo con extensin .txt: este sera el comando:

    SQL> @unidad:\ruta\mi_archivo.txt;

    Hagamos el siguiente caso prctico. Vamos crear un archivo llamado comandos.txtutilizando el editor de Windows.SQL> EDIT

  • 7/24/2019 Manual de Base de Datos Avsnzado

    18/143

    18

    CARRERAS PROFESIONALES CIBERTEC

    Editamos el buffer (comandos.sql) ingresando los siguientes comandos SQL:

    SELECT * FROM emp WHERE rownum START C:/comandos.txt o tambin SQL> @ C:/comandos.txt

    Si ha creado carpetas cuyo nombre tengan espacio en blanco o el nombre del archivotambin tenga espacios en blanco, debe encerrar en apstrofes el archivo a ejecutar.

    Ejemplo:

    SQL> @c:\curso lp6\mis comandos.txt;

    1.1.2.5 Uso comando SPOOL en SQL *PLUS

    Este comando es de gran utilidad para un operador del SQL *PLUS. Pues estecomando permite registrar, en un archivo especificado, los resultados de nuestrasconsultas y operaciones realizadas a la base de datos. No solamente registra losresultados sino que tambin registra los comandos utilizados. La sintaxis es lasiguiente:

    SPOOL [nombre_archivo[.extension]]

  • 7/24/2019 Manual de Base de Datos Avsnzado

    19/143

    BASE DE DATOS AVANZADO I I 19

    CIBERTEC CARRERAS PROFESIONALES

    Ejemplo: los siguientes comandos sern registrados en el archivo sesion02.txt cuandose cierre el spool a travs del comando SPOOL OFF.

    Cuando se crea el archivo sesion02.txt, este archivo se mantendr abierto y vaco,hasta que no se especifique que se cierre el spool (SPOOL OFF). Si usted noespecifica la extensin al archivo a travs del comando SPOOL automticamente elarchivo se le asignar la extensin LST.

    Si editamos el archivo sesion02.txt creado con el comando spool encontraremos losiguiente:

    SQL> EDIT sesion02.txt

    Si usted vuelve a crear el archivo sesion02.txt con el comando SPOOL, para nuestrocaso el archivo ya existe, lgicamente el archivo se volver a crear perdindose elcontenido del mismo. Tenga cuidado al especificar el nombre del archivo. Asegrese

    de que el archivo a crear no exista.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    20/143

    20

    CARRERAS PROFESIONALES CIBERTEC

    Por ejemplo, este comando volver a crear el archivo sesion02.txt y se perdernuestro registro de comandos realizados anteriormente.

    SQL> SPOOL sesion02.txt

    1.1.3 Componentes de la Arquitectura de una Base de Datos

    La arquitectura de ORACLE tiene tres componentes bsicos: las estructuras dememoria para almacenar los datos y el codigo ejecutable, los procesos que corren elsistema de bases de datos y las tareas de cada usuario conectado a la base de datosy los archivos que sirven para el almacenamiento fsico, en disco, de la informacin dela base de datos.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    21/143

    BASE DE DATOS AVANZADO I I 21

    CIBERTEC CARRERAS PROFESIONALES

    1.1.3.1 Estructuras de memoria

    Hay dos clases de memoria, una de ellas compartida por todos los usuariosconectados y otra, dedicada al trabajo de cada uno de ellos.

    El rea global del sistema SGA (system global area), es el rea compartida por todoslos usuarios y se divide en tres partes:

    Fondo comn compartido (Shared pool), en ella mantiene el diccionario de datos ylas reas compartidas de las rdenes SQL que se solicitan para suprocesamiento.

    rea de memoria rpida (Database buffer cache), donde mantiene los datos

    trados por las rdenes SQL de los usuarios conectados a la base de datos. rea de registros de rehacer (Redo log buffer), aqu se registran los cambios

    hechos a la base de datos.

    Por cada sesin de usuario, se crea tambin, en memoria, un rea especfica llamadarea global de programa o PGA (program global area). Esta rea no se comparte conlas otras sesiones de usuario.

    1.1.3.2 Archivos de la base de datos

    Los archivos que maneja ORACLE se clasifican en cuatro grupos:

  • 7/24/2019 Manual de Base de Datos Avsnzado

    22/143

    22

    CARRERAS PROFESIONALES CIBERTEC

    A. Los Archivos de Datos (Datafiles)

    Estos archivos sirven para el almacenamiento fsico de las tablas, ndices yagrupamientos (clusters), y procedimientos. Estos archivos, son los nicos quecontienen los datos de los usuarios de la base de datos.

    Las unidades lgicas ms grandes manejadas por ORACLE, para el almacenamientode los datos, son llamadas espacios de tablas (tablespaces) que le permiten manejar ycontrolar el espacio en los discos.

    No es necesario que todos los espacios de tablas estn en un mismo disco. Cuandose crean en distintos discos se busca un mejor desempeo y mejor manejo delespacio de almacenamiento.

    Una base de datos puede tener un solo espacio de tablas, pero, por las razonesanteriores, se recomienda varios espacios de tablas. Como mnimo, se debe tener unespacio de tablas del sistema (SYSTEM), un espacio de tablas por cada aplicacin, un

    espacio de tablas para los usuarios y otro espacio de tablas para los ndices.EI espacio de tablas SYSTEM se crea automticamente cuando se crea una base dedatos. All se guardan los archivos de control y el diccionario de datos y toda lainformacin de los procedimientos almacenados.

    EI DBA (Administrador de Base de Datos) puede crear un espacio de tablas con unaorden, como la siguiente:

    CREATE T ABLESPACE indices datafile discod/bd/datosl.dbf size 300m;

    Los archivos de datos (datafiles) almacenan los datos del usuario. Se requiere comomnimo uno para una base de datos.

    Cuando se agote el espacio, un DBA tiene dos alternativas:

    Adicionar un nuevo archivo de datos con la orden ALTER

    ALTER TABLESPACE indices add datafile discod/bd/datos3.dbf size 150m

    Crear un nuevo espacio de tablas como se mostr previamente.

    En el momento de la creacin de una base de datos, el DBA debe planear o estimar

    los requerimientos de almacenamiento y, tambin, el nombre, tamao y localizacin de

  • 7/24/2019 Manual de Base de Datos Avsnzado

    23/143

    BASE DE DATOS AVANZADO I I 23

    CIBERTEC CARRERAS PROFESIONALES

    los archivos de datos, junto con el nmero mximo de archivos de datos permitidopara la base de datos.

    EI DBA puede crear varios espacios de tablas (tablespaces) en discos separados paraplanear el crecimiento de la base de datos y hacer una mejor administracin de labase de datos.

    Un objeto de datos, por su parte, es una estructura lgica que puede ser una tabla, unarchivo de ndice, un archivo temporal, un archivo de deshacer o un cluster. Estosobjetos se almacenan fsicamente en segmentos que se componen de extensiones(extents).

    A su vez, una extensin est hecha de bloques que, de acuerdo con el sistemaoperativo subyacente, puede tener un nmero determinado de bytes y que el DBAespecifica, en el momento de la creacin de la base de datos. EI tamao del bloque esdependiente del sistema operativo y nunca puede ser menor al que ste maneja.

    En una base de datos, pueden existir otros objetos que no contienen datos como las

    vistas, los sinnimos y las secuencias. Sin embargo, todo objeto, independientementede si contiene datos o no, debe pertenecer a un esquema.

    Por eso, una coleccin de objetos de un usuario se denomina esquema.

    Un objeto se puede crear en un esquema de tres formas:

    Si un usuario da una orden de creacin de un objeto, por defecto, el sistema locrea en su propio esquema.

    Copiando el objeto de otro usuario (al nombre de un objeto siempre se leantepone el nombre del esquema, por ejemplo juan.empleado) con una ordencomo:

  • 7/24/2019 Manual de Base de Datos Avsnzado

    24/143

    24

    CARRERAS PROFESIONALES CIBERTEC

    CREATE TABLE empleado as SELECT * from scott.emp;

    Otro usuario lo crea para uno, como en la orden:

    CREATE TABLE juan.proyecto (codigo number primay key, .....) tablespace

    planeacion storage (initial 1000 next 1000 minextents 1 maxextentents 6....)

    Reglas para el almacenamiento de objetos en la base de datos

    Un objeto puede almacenarse en uno o ms archivos de datos (datafiles), pero enun solo espacio de tablas (tablespace).

    Dos objetos diferentes de un esquema pueden estar en distintos tablespaces.

    Los objetos pueden almacenarse en mltiples discos. Por ejemplo, parte dejane.emp es almacenado en el archivo de datos 1 sobre el disco A y parte en elarchivo de datos 2 sobre el disco B.

    B. Archivos de control (Control Files)

    Tienen la descripcin fsica y direccin de los archivos de la base de datos y de losarchivos de rehacer para el arranque correcto de la base de datos. En estos archivosse especifican cules datafiles conforman la base de datos para poder tener acceso alos datos o para poder recuperar la base de datos, ante una falla.

    Los archivos de control se crean automticamente cuando se da una orden CREATEDATABASE y no son editables, pues tambin se actualizan automticamente.

    C. Archivos de rehacer (redo log files)

    Tienen los cambios hechos a la base de datos para la recuperacin ante fallas o parael manejo de las transacciones. Poseen los valores antes de una transaccin, la ordenejecutada y, opcionalmente, el valor despus de la transaccin. EI principal propsito

    de estos archivos es servir de respaldo de los datos en la memoria RAM. Esteconjunto de archivos debe estar conformado por dos grupos, como mnimo, y serecomienda que cada grupo est almacenado en discos separados. EI DBMS utiliza la

  • 7/24/2019 Manual de Base de Datos Avsnzado

    25/143

    BASE DE DATOS AVANZADO I I 25

    CIBERTEC CARRERAS PROFESIONALES

    tcnica de ir sobrescribiendo sobre la informacin ms vieja, cuando se agota elespacio en estos grupos de archivos. Se puede decir que guarda las instruccionesSQL que se van realizando en toda la base de datos.

    D. Archivos fuera de lnea (archived files)

    Son archivos opcionales donde se guarda informacin vieja de los archivos derehacer, muy convenientes para los respaldos de la base de datos.

    E. Procesos

    Los procesos son programas que se ejecutan para permitir el acceso a los datos. Losprocesos se cargan en memoria y son transparentes para los usuarios. Los procesosse clasifican en tres grupos: procesos de base, de usuario y procesos servidores.

    Procesos de Base o de Soporte

    Los procesos de base (background) son los que se encargan de traer datos desde yhacia la SGA, mejorando el desempeo al consolidar las tareas que son impartidas portodos los usuarios. Cada proceso de base tiene su propia rea de memoria. Losprocesos de base o soporte son los siguientes:

    DBWR: (Database writer) se encarga de manejar los buffers de memoria cache paraque los procesos del usuario siempre encuentren a algunos unos de ellos disponibles.Es un proceso obligatorio que, adems, escribe los bloques de datos modificados porlos usuarios en los archivos de datos que componen la B.D cuando el proceso LGWRle enva el mensaje de hacerlo.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    26/143

    26

    CARRERAS PROFESIONALES CIBERTEC

    LGWR: (Log writer) este proceso escribe datos desde la SGA a los archivos derehacer (redo log files) que sirven en caso de fallas en la instancia. Este proceso esobligatorio y es el nico encargado de escribir y leer en estos archivos. El proceso dellenado de estos archivos es circular, por lo tanto, antes de empezar a sobrescribir enuno de ellos, se marca un punto de verificacin y LGWR enva la orden de escritura enlos datafiles al proceso DBWR. Cuando se cambia de uso de grupo de redo log(archivo deshacer), se produce un SWITCH LOG

    LCKn, Lock: (lock processes) El bloqueo es un proceso opcional. Efecta losbloqueos entre instancias, en caso de ambientes con servidores paralelos (hasta con10 servidores).

    CKPT: (Check point) El punto de comprobacin es un proceso opcional que ocurrecuando los usuarios conectados a la base de datos, hacen solicitudes de exmenes dedatos. Uno de los eventos que dispara a este proceso es el SWITCH LOG.

    SNPn:(Snapshot process) se encarga de refrescar los snapshots o rplicas de tablas

    que se usan, principalmente, en ambientes distribuidos.SMON:(System monitor) recupera el sistema ante una falla de la instancia.

    RECO: (Recovery) recupera ante las fallas, en una transaccin en ambientesdistribuidos.

    ARCH: (Archive) copia los registros de rehacer de la RAM en archivos de datos(archive redo logs) que permiten la recuperacin cuando se presentan fallas de losmedios magnticos.

    PMON: (Process Monitor) recupera la instancia ante una falla de un proceso de

    usuario; libera los recursos del proceso que fall.

    Procesos del Usuario

    Cuando un usuario se conecta a la base de datos, se crea un proceso de usuario quese encarga de ejecutar el cdigo de aplicacin del usuario y manejar el perfil delusuario con sus variables de ambiente. Los procesos de usuario no se puedencomunicar directamente con la base de datos, nicamente, lo hacen a travs deprocesos servidores.

    Procesos Servidores

    Ejecutan las rdenes SQL de los usuarios y llevan los datos al database buffercachepara que los procesos del usuario puedan tener acceso a los datos. Se pueden tenerdistintas arquitecturas para trabajar en ORACLE, segn los tipos de servidores:dedicados o multihilos.

    Una configuracin dedicada significa que cada conexin de un usuario de Base deDatos ser atendida exclusivamente por un proceso servidor. Una configuracinmultihilo (multithread) o compartida es cuando existe un nmero limitado de procesosservidores que atienden a todas las conexiones de Bases de Datos existentes cuandohaya un requerimiento de por medio. En esta ltima configuracin, existen losdespachadores (dispatchers), que son los que ante algun requerimiento de sesinasignan dicho trabajo a un proceso servidor disponible.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    27/143

    BASE DE DATOS AVANZADO I I 27

    CIBERTEC CARRERAS PROFESIONALES

    F. Instancia de ORACLE

    Se denomina instancia al conjunto de estructuras de memoria y procesos de fondo queacceden los archivos de bases de datos. Es posible que una misma base de datos seaaccedida por mltiples instancias; cada una de ellas residiendo en una mquinadiferente (sta es la opcin de servidores paralelos de ORACLE).

    El sistema de bases de datos ORACLE, cuando inicia, sigue los pasos que se detallana continuacin:

    1. Iniciar la instancia. Para hacer este paso, ORACLE lee el archivo de parmetros yconfigura la instancia, con base en ellos. En ese momento, se crea la SGA y seactivan los procesos de base, pero an no se puede hacer nada.

    2. Montar la base de datos. Consiste en preparar el sistema para su uso trayendo a laRAM el diccionario de datos; es como poner el sistema en primera, listo para recibir

    algunas rdenes del DBA.

    3. Abrir la base de datos. En este momento se abren los archivos y los usuarios yapueden tener acceso a los datos.

    De acuerdo cmo se defina la instancia, ORACLE, a travs de sus parmetros, puededeterminarse que tan poderoso y grande es el motor. Los parmetros se definen en elarchivo INIT.ORA. Entre ellos se pueden mencionar los siguientes:

    db_block_buffers = nmero de bloques de bases de datos en la SGA. Existir unbuffer por cada bloque.

    db_block_size = tamano del bloque de la base de datos. shared_poo_size = tamanodel rea compartida shared pool, en bytes.

    Servidor de datos

    Base de datos

    Procesos

    Instancia

    Memoria

  • 7/24/2019 Manual de Base de Datos Avsnzado

    28/143

    28

    CARRERAS PROFESIONALES CIBERTEC

    Adems, all se especifica el nmero de usuarios concurrentes, el nmero detransacciones concurrentes y los nombres de los archivos de control para la base dedatos.

    Estos parmetros se pueden ajustar durante el proceso de afinamiento porque ellosinciden en el desempeo del sistema. Algunos de los parmetros son especficos auna base de datos y, por lo tanto, deben ser cambiados antes de crear una base dedatos. Se incluyen en estos:

    database_name = nombre de la base de datos.db_block_size = tamano del bloque.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    29/143

    BASE DE DATOS AVANZADO I I 29

    CIBERTEC CARRERAS PROFESIONALES

    Autoevaluacin

    1.- Indique cual es la diferencia entre base de datos e instancia de base de datos.

    2.- Mencione y describa los componentes que conforman una instancia de base dedatos Oracle.

    3.- Indique cuales son las principales diferencias entre el Lenguaje SQL y el LenguajePL/SQL.

    4.- Qu tipo de actividades de administracin de base de datos se podran realizarutilizando el SQL Plus?

  • 7/24/2019 Manual de Base de Datos Avsnzado

    30/143

    30

    CARRERAS PROFESIONALES CIBERTEC

    1.2 GESTIN DE UNA INSTANCIA ORACLE

    Para iniciar una instancia y abrir la base de datos, se debe conectar como SYSDBA eintroducir el comando STARTUP. A continuacin, Oracle Server leer el archivo deparmetros de inicializacin y preparar la instancia de acuerdo con los parmetros de

    inicializacin que contiene.Existen tres productos de Oracle que puede utilizar para crear una instancia e iniciaruna base de datos:

    1. SQL*PLUS.2. Recovery Manager (RMAN).3. Oracle Enterprise Manager (OEM).

    Cualquiera que fuese la herramienta que utilizaremos para crear la instancia de Oraclelos pasos y comandos son siempre los mismos. La diferencia que encontraremos entreuna y otra herramienta es que mientras en el SQL*PLUS tendra que crear la instancia

    y levantar la base de datos a travs del uso de comandos, en las otras dosherramientas, slo tiene que hacer unos cuantos clicks para hacer lo mismo.

    Ahora como el SQL*PLUS va a ser la herramienta que utilizaremos durante todo eldesarrollo del curso, entonces estos son los pasos para crear una instancia desdeSQL*PLUS e iniciar una base de datos:

    Primero: Conectarse con un usuario que tenga el privilegio SYSDBA para crear lainstancia y levantar la base de datos. SYS es el usuario que inicialmente goza de esteprivilegio cuando la base de datos ha sido creada recientemente ( los detalles y nivelesde accesos que tiene cada uno de estos usuarios son tema de administracin de

    usuarios). Utilizaremos al usuario SYS para poner en prctica la creacin de lainstancia. La clave del usuario SYS es CHANGE_ON_INSTALL

    La sintaxis para conectarse como SYSDBA es la siguiente:

    CONNECT usuario/clave[@cadena_conexin] AS SYSDBA

    Ejemplo:a) Conexin a la base de datos a travs de la solicitud de datos de conexin del

    SQL*PLUS:SYS AS SYSDBA

  • 7/24/2019 Manual de Base de Datos Avsnzado

    31/143

    BASE DE DATOS AVANZADO I I 31

    CIBERTEC CARRERAS PROFESIONALES

    b) Conexin a travs del uso de comandos:

    o tambin utilizando la cadena de conexin

    Segundo: Crear la instancia e iniciar la base de datos.

    El comando STARTUP va acompaado de los siguientes parmetros:

    STARTUP [ PFILE = init.ora ] [ NOMOUNT ] [ MOUNT ][ RESTRICT ] [ FORCE ][OPEN [RECOVER] [base_de_datos]]

    Nota: sta no es la sintaxis completa.

    Donde: OPEN: Permite a los usuarios acceder a la base de datos MOUNT: Monta la base de datos para ciertas actividades del DBA, aunque no

    permite que el usuario acceda a la base de datos NOMOUNT: Crea el SGA e inicia los procesos en segundo plano (background),

    pero no permite que el usuario tenga acceso a la base de datos PFILE=archivo_de_parmetros: Permite utilizar un archivo de parmetros de

    inicializacin que no es por defecto para configurar la instancia FORCE: Interrumpe la instancia en ejecucin antes de realizar un inicio normal. RESTRICT: Slo permite que los usuarios con el privilegio RESTRICTED

    SESSION accedan a la base de datos RECOVER: Comienza la recuperacin de los medios fsicos cuando se inicia la

    base de datos

    SQL*Plus: Release 11.2.0.1.0 Production on Lun Ago 1 19:13:09 2011Copyright (c) 1982, 2010, Oracle. All rights reserved.

    SQL> CONNECT sys/change_on_install AS SYSDBAConectado a una instancia inactiva.

    SQL*Plus: Release 11.2.0.1.0 Production on Lun Ago 1 19:13:09 2011Copyright (c) 1982, 2010, Oracle. All rights reserved.SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> STARTUPInstancia ORACLE iniciadaTotal System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 83886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytesBase de datos montada.Base de datos abierta.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    32/143

    32

    CARRERAS PROFESIONALES CIBERTEC

    1.2.1 Inicio de la instancia

    1.2.1.1 Inicio de la instancia (NOMOUNT)

    Una instancia slo se iniciara en la etapa NOMOUNT durante la creacin de la basede datos o la nueva creacin de los archivos de control.

    El inicio de una instancia incluye las siguientes tareas:

    Lectura del archivo de inicializacin desde ORACLE_HOME/database Asignacin de SGA Inicio de los procesos en segundo plano Apertura del archivo alertSID.log y los archivos de rastreo

    Estos son los comandos que necesitamos para iniciar la base de datos despus dehaber creado la instancia (montar y levantar la base de datos)

    -- montar la base de datos (mount)

    -- abrir la base de datos (open)

    1.2.1.2 Montaje de la base de datos (MOUNT)

    Para realizar operaciones de mantenimiento especficas, se inicia una instancia y semonta una base de datos, pero sin abrirla.Por ejemplo, la base de datos se debe montar, pero no abrir, durante las siguientestareas:

    Cambio del nombre de los archivos de datos Activacin y desactivacin de las opciones de archivado de archivos redo log

    online Recuperacin completa de la base de datos

    SQL> ALTER DATABASE MOUNT;Base de datos montada

    SQL> ALTER DATABASE OPEN;Base de datos abierta

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> STARTUP NOMOUNTInstancia ORACLE iniciadaTotal System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 83886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytes

  • 7/24/2019 Manual de Base de Datos Avsnzado

    33/143

    BASE DE DATOS AVANZADO I I 33

    CIBERTEC CARRERAS PROFESIONALES

    El montaje de una base de datos incluye las siguientes tareas:

    Asociacin de una base de datos a una instancia iniciada previamente Ubicacin y apertura de los archivos de control especificados en el archivo de

    parmetros

    Lectura de los archivos de control con el fin de obtener los nombres y el estado delos archivos de datos y los archivos redo log online. No obstante, no se realizancomprobaciones para verificar la existencia de los archivos de datos y los archivosredo log online en este momento.

    Este es el comando que necesitamos para iniciar la base de datos despus de habermontado la base de datos.

    -- abrir la base de datos (open)

    1.2.2 Apertura de la Base de Datos

    1.2.2.1 Apertura de la base de datos (OPEN)

    El funcionamiento normal de la base de datos significa que se inicia una instancia y labase de datos se monta y se abre. Durante el funcionamiento normal de la base dedatos, cualquier usuario vlido se puede conectar a la base de datos y realizaroperaciones tpicas de acceso a los datos.

    La apertura de la base de datos incluye las siguientes tareas:

    Apertura de los archivos de datos online Apertura de los archivos redo log online

    Si no aparece ninguno de los archivos de datos o archivos redo log online cuando seintenta abrir la base de datos, Oracle Server devuelve un error.

    Durante esta etapa final, Oracle Server comprueba que todos los archivos de datos yarchivos redo log online se puedan abrir y verifica la consistencia de la base de datos.

    Si fuera necesario, el proceso en segundo plano de SMON inicia la recuperacin de lainstancia.

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> STARTUP MOUNTInstancia ORACLE iniciadaTotal System Global Area 118255568 bytes

    Fixed Size 282576 bytesVariable Size 83886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytesBase de datos montada.

    SQL> ALTER DATABASE OPEN;Base de datos abierta

  • 7/24/2019 Manual de Base de Datos Avsnzado

    34/143

    34

    CARRERAS PROFESIONALES CIBERTEC

    A. Uso de Oracle Enterprise Manager para Iniciar una Base de Datos

    Ingresar al home page para administrar la base de datos.

    El Database Home Page indicar que la base de datos se encuentra detenida("Down)

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> STARTUP

    Instancia ORACLE iniciadaTotal System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 83886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytesBase de datos montada.Base de datos abierta.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    35/143

    BASE DE DATOS AVANZADO I I 35

    CIBERTEC CARRERAS PROFESIONALES

    Dar clic en la opcin Startup para instanciar la base de datos

    Aparecer la pgina que solicita el ingreso de credenciales. Se tiene dosopciones:o

    Ingresar las credenciales del usuario de S.O administrador del servidor queinstalo el Oracle Database.o Ingresar las credenciales del usuario SYS

    En la opcin Connect as, seleccionar SYSDBA

    Aparecer una pagina de confirmacin, dar clic en Yes. Se mostrar informacin indicando que la base de datos ha sido instanciada.

    1.2.2.2 Apertura de la base de datos en modo Restringido (RESTRICT)

    Una sesin restringida es til, por ejemplo, cuando se realiza el mantenimiento de laestructura o una importacin o exportacin de la base de datos. La base de datos sepuede iniciar en modo restringido para que slo est disponible para los usuarios conel privilegio RESTRICTED SESSION.

    La base de datos tambin se puede poner en modo restringido con el comandoALTER SYSTEM:

  • 7/24/2019 Manual de Base de Datos Avsnzado

    36/143

    36

    CARRERAS PROFESIONALES CIBERTEC

    ALTER SYSTEM [ {ENABLE|DISABLE} RESTRICTED SESSION ]

    Donde: ENABLE RESTRICTED SESSION: Permite conexiones futuras slo para los

    usuarios que tienen el privilegio RESTRICTED SESSION DISABLE RESTRICTED SESSION: Desactiva el privilegio RESTRICTED.

    Una vez colocada una instancia en modo restringido, puede que desee finalizar todaslas sesiones de usuario actuales antes de realizar las tareas administrativas. Esto esposible mediante la ejecucin de:

    ALTER SYSTEM KILL SESSION 'entero1, entero2'

    Donde: entero1: Valor de la columna SID en la vista V$SESSION entero2: Valor de la columna SERIAL# en la vista V$SESSION

    Nota: El identificador de sesin y el nmero de serie se utilizan para identificar unasesin como nica. Esto garantiza que el comando ALTER SYSTEM KILL SESSIONse aplique a la sesin correcta, aunque el usuario se desconecte y una nueva sesinutilice el mismo identificador de sesin.

    Efectos de la Terminacin de una Sesin: El comando ALTER SYSTEM KILLSESSION provoca que el proceso en segundo plano PMON haga lo siguiente cuandose ejecuta:

    Hace rollback de la transaccin actual del usuario

    Libera todos los bloqueos de tabla o de fila retenidos actualmente. Libera todos los recursos reservados en ese momento por el usuario.

    1.2.2.3 Apertura de una base de datos en modo de Slo Lectura (READ ONLY)

    Una base de datos se puede abrir en modo de slo lectura, si no se ha abierto ya enmodo de lectura y escritura. Esta caracterstica es especialmente til para que unabase de datos en espera descargue de la base de datos de produccin elprocesamiento de la consulta.

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.SQL> STARTUP RESTRICTInstancia ORACLE iniciadaTotal System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 83886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytesBase de datos montada.Base de datos abierta.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    37/143

    BASE DE DATOS AVANZADO I I 37

    CIBERTEC CARRERAS PROFESIONALES

    1.2.2.4 Apertura de una base de datos especificando archivo parmetros(PFILE)

    Para iniciar una instancia, Oracle Server lee el archivo de parmetros de inicializacin.

    Existen dos tipos de archivos de parmetros de inicializacin:

    El archivo de parmetros esttico, PFILE, que normalmente se denominainitSID.ora.

    El archivo de parmetros de servidor persistente, SPFILE, que normalmente sedenomina spfileSID.ora.

    A. Contenido del Archivo de Parmetros de Inicializacin

    Una lista de parmetros de instancia El nombre de la base de datos a la que se ha asociado la instancia Asignaciones para estructuras de memoria del SGA (rea Global del Sistema) Instrucciones sobre qu hacer con los archivos redo log online llenos Los nombres y las ubicaciones de los archivos de control Informacin sobre segmentos de deshacer

    Pueden existir varios archivos de parmetros de inicializacin para una instancia conel fin de optimizar el rendimiento en distintas situaciones.

    Cuando se ejecuta el comando STARTUP, el Orden de prioridad del uso del archivode parmetros es el siguiente:

    Cuando se utiliza el comando STARTUP, se usa el archivo spfileSID.ora delservidor para iniciar la instancia.

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> STARTUP PFILE=d:\oracle\admin\pfile\mi_init.ora;Instancia ORACLE iniciadaTotal System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 83886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytesBase de datos montada.Base de datos abierta.

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> STARTUP OPEN READ ONLYInstancia ORACLE iniciada

    Total System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 83886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytesBase de datos montada.Base de datos abierta.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    38/143

    38

    CARRERAS PROFESIONALES CIBERTEC

    Si no se encuentra el archivo spfileSID.ora, se utilizar el archivo SPFILE pordefecto del servidor para iniciar la instancia.

    Si no se encuentra el archivo SPFILE por defecto, se utilizar el archivoinitSID.ora del servidor para iniciar la instancia.

    Si se especifica el parmetro PFILE con STARTUP, se sustituye el comportamientopor defecto.

    1.2.3 Cierre de la Base de Datos

    Cierre la base de datos para realizar copias de seguridad offline de sistema operativode todas las estructuras fsicas y para que, al reiniciar, entren en vigor los parmetrosde inicializacin estticos modificados.Para cerrar una instancia, se debe conectar como SYSOPER o SYSDBA y utilizar elsiguiente comando:

    SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]

    1.2.3.1 SHUTDOWN Normal

    El modo normal es el modo de cierre por defecto. El cierre normal de la base de datosse lleva a cabo en las siguientes condiciones:

    No se pueden realizar conexiones nuevas. Oracle Server espera a que se desconecten todos los usuarios antes de finalizar

    el cierre. Los buffers de la base de datos y de redo se escriben en el disco.

    Los procesos en segundo plano han terminado y se ha eliminado el SGA de lamemoria. Oracle cierra y desmonta la base de datos antes de cerrar la instancia. El siguiente inicio no requiere una recuperacin de la instancia.

    1.2.3.2 SHUTDOWN TRANSACTIONAL

    Un cierre transaccional evita que los clientes pierdan su trabajo. Un cierretransaccional de la base de datos se lleva a cabo en las siguientes condiciones:

    Ningn cliente puede iniciar una nueva transaccin en esta instancia particular. Un cliente se desconecta cuando el cliente finaliza la transaccin en curso. Una vez finalizadas todas las transacciones, se produce un cierre inmediato. El siguiente inicio no requiere una recuperacin de la instancia.

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> SHUTDOWNBase de datos cerrada.Base de datos desmontada.Instancia ORACLE cerrada.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    39/143

    BASE DE DATOS AVANZADO I I 39

    CIBERTEC CARRERAS PROFESIONALES

    1.2.3.3 SHUTDOWN IMMEDIATE

    El cierre inmediato de la base de datos se lleva a cabo en las siguientes condiciones:

    No se finalizan las sentencias SQL actuales que est procesando Oracle. Oracle Server no espera a que se desconecten los usuarios conectados en ese

    momento a la base de datos.

    Oracle hace rollback de las transacciones activas y desconecta a todos losusuarios conectados. Oracle cierra y desmonta la base de datos antes de cerrar la instancia. El siguiente inicio no requiere una recuperacin de la instancia.

    1.2.3.4 SHUTDOWN ABORT

    Si las opciones de cierre NORMAL e IMMEDIATE no funcionan, se puede abortar lainstancia de base de datos actual. La interrupcin de una instancia se lleva a cabo enlas siguientes condiciones:

    Se terminan inmediatamente las sentencias SQL actuales que Oracle Server estprocesando.

    Oracle no espera a que se desconecten los usuarios conectados actualmente a labase de datos. Los buffers de la base de datos y de redo no se escriben en el disco. No se hace rollback de las transacciones no validadas La instancia se termina sin cerrar los archivos. La base de datos no se cierra ni se desmonta. El siguiente inicio requiere la recuperacin de la instancia, que se produce

    automticamente.

    Nota: No se recomienda realizar una copia de seguridad de una base de datos quetiene un estado inconsistente.

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> SHUTDOWN TRANSACTIONALBase de datos cerrada.

    Base de datos desmontada.Instancia ORACLE cerrada.

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> SHUTDOWN IMMEDIATEBase de datos cerrada.Base de datos desmontada.

    Instancia ORACLE cerrada.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    40/143

    40

    CARRERAS PROFESIONALES CIBERTEC

    A. Uso de Oracle Enterprise Manager para Cerrar una Base de Datos

    Ingresar al home page para administrar la base de datos.

    En la seccin General, dar clic en Shutdown

    Aparecer la pgina que solicita el ingreso de credenciales. Ingresar con elusuario SYS.

    Aparecer una pgina de confirmacin, dar clic en Yes.

    SQL> CONNECT sys/change_on_install@cibertec AS SYSDBAConectado a una instancia inactiva.

    SQL> SHUTDOWN ABORTInstancia ORACLE cerrada.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    41/143

    BASE DE DATOS AVANZADO I I 41

    CIBERTEC CARRERAS PROFESIONALES

    Se mostrar informacin indicando que la base de datos est siendo detenida.

    1.2.4 Configuracin de un cliente Oracle

    En Oracle, esto se llama creacin de un nombre de servicio de red o una cadena deconexin o un connect string o host string. Esto se hace despusde haber instaladoel software Oracle Cliente. Si se ha instalado el Oracle Server, implcitamente, se tieneinstalado tambin el Cliente Oracle.

    Existen dos formas para crear un nombre de servicio de red en Oracle: manual omediante el uso de un asistente. En este curso, slo nos centraremos en crear unnuevo nombre de servicio de red local mediante el uso del asistente (asistente deconfiguracin de red), para ver ms detalles respecto a la conexin y configuracin deredes consulte el manual del administradorNetworking.

    A. Asistente de Configuracin de Red (NET Configuration Assistant)

    Estos son los pasos que debe seguir para establecer una conexin a la base de datosa travs del asistente:

    Ejecutando el asistente: En el grfico, se muestra la ubicacin del acceso directo alasistente.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    42/143

    42

    CARRERAS PROFESIONALES CIBERTEC

    Pantalla principal o bienvenida: En esta pantalla, elegimos el tipo de configuracin dered que vamos a realizar. Para nuestro caso, elegimos la tercera opcin (configuracindel nombre del servicio de red local).En el grfico, se muestra la ubicacin del accesodirecto al asistente.

    Configuracin del Nombre del Servicio de Red: Cuando se instala el software deOracle, se crea el archivo TNSNAMES.ORA con algunos nombres de servicio de redde ejemplo que pueden ser utilizados como plantillas. El asistente realiza los cambiosen el archivo TNSNAMES.ORA como agregar un nuevo nombre de servicio de red,eliminar uno existente, renombrar un servicio de red o modificar los parmetros de undescriptivo. Los cambios hechos en el archivo TNSNAMES.ORA son realizados si eltest de conexin es satisfactorio. Para nuestro caso, elegimos agregar para insertar unnuevo nombre de servicio en el archivo TNSNAMES.ORA. Usted podr encontrar elarchivo TNSNAMES.ORA dentro del directorio del gestor de la base de datos:../11.2.0/dbhome_1/Network/admin.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    43/143

    BASE DE DATOS AVANZADO I I 43

    CIBERTEC CARRERAS PROFESIONALES

    Seleccionar versin de la base de datos a acceder:Ingreso de nombre de la base de datos a acceder: Aqu se ingresa el nombre de labase de datos remota a la cual se desea acceder.

    Seleccionar el protocolo de red

  • 7/24/2019 Manual de Base de Datos Avsnzado

    44/143

    44

    CARRERAS PROFESIONALES CIBERTEC

    Parmetro de conexin a travs del Protocolo TCP: Cada protocolo de red necesita deciertos parmetros de conexin. En la pantalla anterior, seleccionamos el protocoloTCP como el protocolo de comunicacin. Este protocolo necesita del nombre de Hosty de un puerto de comunicacin que, por estndar, es el 1521.

    Test de conexin: Antes de registrar los datos al archivo TNSNAMESORA a travs delasistente, debemos realizar una prueba de conexin para as probar si los parmetrosingresados son los correctos o si hay algn otro problema de conexin.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    45/143

    BASE DE DATOS AVANZADO I I 45

    CIBERTEC CARRERAS PROFESIONALES

    El asistente siempre utiliza al usuario SYSTEM para realizar las pruebas de conexin.Si SYSTEM no existiese, elija a otro usuario para realizar las pruebas de conexin,haga un clic en el botn Cambiar conexin para cambiar de usuario.

    sta sera la vista del archivo TNSNAMES.ORA, despus de agregar el nuevo nombrede servicio CIBERTEC:

  • 7/24/2019 Manual de Base de Datos Avsnzado

    46/143

    46

    CARRERAS PROFESIONALES CIBERTEC

    Muchas veces, si se desea crear otro Servicio de Red, se acostumbra ir directamenteal archivo TNSNAMES.ORA, copiar una de las entradas, renombrarla y cambiar losdatos necesarios.

    Por ejemplo, si se desea agregar un nuevo servicio de red, para que se puedaconectar a una base de datos llamada cibertecx (en el campo SERVICE_NAME), quereside en el servidor server_cibertec (en el campo HOST), se configurara de lasiguiente manera:

  • 7/24/2019 Manual de Base de Datos Avsnzado

    47/143

    BASE DE DATOS AVANZADO I I 47

    CIBERTEC CARRERAS PROFESIONALES

    Autoevaluacin

    1.- Si se ha perdido los control-files, y se trata de levantar la Base de Datos, stasedetiene (o se queda) en el estado:

    a) Openb) Open restrictc) Mountd) Nomounte) N.A.

    2.- Si se ha perdido uno de los datafiles, y se trata de levaentar la Base de Datos,sta se detiene (o se queda) en el estado:

    a) Openb) Open restrictc) Mountd) Nomounte) N.A.

    3.- Explique en qu caso usted abrir la Base de Datos en modo RESTRICT.

    4.- En qu estado un usuario de Base de Datos NORMAL, se puede conectar a lamisma?

    a) Openb) Open restrictc) Mountd) Nomounte) N.A.

    5.- Usted acaba de ingresar a un forum de DBAs, y por ah observa un comentario deun DBA junior que dice que el SHUTDOWN ABORT es mucho ms rpido que losdems tipos de SHUTDOWN. Qu opinara usted al respecto ?.

    6.- Cul es la secuencia lgica de estados cuando se levanta una Base de Datos?

    a) open, shutdown,mount, nomount.b) shutdown, nomount, mount, open.c) shutdown, mount, nomount, open.d) shutdown, mount, open, nomount.e) shutdown, open, mount, nomount.

    7.- Explique la diferencia entre los diferentes tipos de SHUTDOWN.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    48/143

    48

    CARRERAS PROFESIONALES CIBERTEC

  • 7/24/2019 Manual de Base de Datos Avsnzado

    49/143

    BASE DE DATOS AVANZADO I I 49

    CIBERTEC CARRERAS PROFESIONALES

    CREACIN DE ESTRUCTURAS DE DATOS

    LOGRO DE LA UNIDAD DE APRENDIZAJE

    Al trmino de la unidad, el alumno disea e implementa modelos de datos queincorporen reglas o restricciones mediante la definicin de objetos tales como tablas,secuencias y sinnimos.

    TEMARIO

    2.1 Tema 3 : CREACIN DE ESTRUCTURAS DE DATOS2.1.1 : Creacin y modificacin de tablas2.1.2 : Creacin de restricciones2.1.3 : Manejo de ndices2.1.4 : Manejo de secuencias2.1.5 : Manejo de sinnimos

    2.2 Tema 4 : DICCIONARIO DE DATOS2.2.1 : Introduccin al Diccionario de Datos2.2.2 : Estructura del Diccionario de Datos2.2.3 : Uso del Diccionario de Datos2.2.4 : Otras tablas en el Diccionario2.2.5 : La vista DBA_OBJECTS

    ACTIVIDADES PROPUESTAS

    Los alumnos crearn y modificarn tablas en una BD Oracle. Los alumnos crearn restricciones en una BD Oracle. Los alumnos crearn secuencias en una BD Oracle. Los alumnos crearn sinnimos en una BD Oracle.

    UNIDAD DE

    APRENDIZAJE

    2

  • 7/24/2019 Manual de Base de Datos Avsnzado

    50/143

    50

    CARRERAS PROFESIONALES CIBERTEC

  • 7/24/2019 Manual de Base de Datos Avsnzado

    51/143

    BASE DE DATOS AVANZADO I I 51

    CIBERTEC CARRERAS PROFESIONALES

    2.1 Creacin de estructuras de datos

    2.1.1 Creacin y modificacin de tablas

    Para que un usuario de Base de Datos pueda crear una tabla debe tener los siguientes

    privilegios:

    Para crear una nueva tabla en el esquema del usuario, se debe contar con elprivilegio de sistema CREATE TABLE.

    Para crear una nueva tabla en otro esquema de usuario, se debe contar con elprivilegio de sistema CREATE ANY TABLE.

    2.1.1.1 Creacin de Tablas

    Antes de crear una tabla debemos de determinar a que esquema de la base de datospertenecer. Para poner esto en prctica, vamos a crear en la base de datos unespacio para las tablas (Tablespace) llamado TS_DATA y, tambin, vamos a crear unusuario llamado DESARROLLO que utilizaremos para crear todos los objetos a ver enesta sesin.

    -- Conctese con una cuenta que tenga los privilegios suficientes para creartablespaces y nuevos usuarios.

    SQL>CONN system/cibertec@cibertec

    -- Cree el espacio de tablas ts_data, para almacenar en esta parte o porcin de la

    base de datos la data de las tablas a crear.

    SQL> CREATE TABLESPACE TS_DATADatafile C:\oracle\oradata\df_data01.dbf SIZE 50M reuseDefault Storage ( initial 8k

    Next 8kMinextents 1Maxextents unlimitedPctincrease 0)

    -- Cree el usuario o esquema Desarrollo, especificando qu tablespace va a utilizar ycunta informacin podr almacenar. (Consultar la vista user_tablespaces para ver la

    informacin de los tablespaces creados en la base de datos).

    SQL> CREATE USER DESARROLLOIDENTIFIED BY DESARROLLODEFAULT TABLESPACE TS_DATATEMPORARY TABLESPACE TEMPQUOTA UNLIMITED ON TS_DATAQUOTA UNLIMITED ON TEMP;

  • 7/24/2019 Manual de Base de Datos Avsnzado

    52/143

    52

    CARRERAS PROFESIONALES CIBERTEC

    -- Otorgue los privilegios necesarios para que el usuario Desarrollo pueda conectarse ypueda crear tablas en su esquema o en el esquema de otros usuarios de la base dedatos.

    SQL> GRANT CONNECT TO DESARROLLO;

    SQL> GRANT CREATE ANY TABLE TO DESARROLLO;

    Luego de crear el tablespace TS_DATA y el esquema DESARROLLO, crearemos lastablas EMP y DEPT en el esquema DESARROLLO dentro del tablespace TS_DATA.

    -- Conctese con el usuario Desarrollo.

    SQL>CONN desarrollo/desarrollo@cibertec

    -- Cree las tablas Emp y Dep. para el esquema Desarrollo.

    SQL> CREATE TABLE Emp (Empno NUMBER(4) not null,Ename VARCHAR2(20) not null,Job VARCHAR2(15),Mgr NUMBER(4),Hiredate DATE default sysdate not Null,Sal NUMBER(7,2) check(sal>=0),Comm NUMBER(7,2) check(comm>=0),Deptno NUMBER(2) not null)

    Tablespace TS_DATA;

    SQL> CREATE TABLE Dept (

    Deptno NUMBER(2) not null)Dname VARCHAR2(14) not null,Local VARCHAR2(13))

    Tablespace TS_DATA;

    Para consultar la informacin de las tablas que hemos creado se puede acceder a lavista del diccionario de datos USER_TABLES.

    2.1.1.2 Comentando Tablas y Columnas

    Usted puede agregar comentarios a las tablas y a sus columnas utilizando el comandoCOMMENT ON.

    Por ejemplo, el siguiente comando comenta la tabla EMP:

    SQL> COMMENT ON TABLE Emp IS Tabla de Empleados;

    Por ejemplo, los siguientes comandos comentan algunas columnas de la tabla EMP:

    SQL> COMMENT ON COLUMN Emp.Empno IS Cdigo de Empleado;

    SQL> COMMENT ON COLUMN Emp.Ename IS Nombre de Empleado;

    SQL> COMMENT ON COLUMN Emp.Hiredate IS Fecha de Ingreso;

  • 7/24/2019 Manual de Base de Datos Avsnzado

    53/143

    BASE DE DATOS AVANZADO I I 53

    CIBERTEC CARRERAS PROFESIONALES

    2.1.1.3 Alterando Tablas

    El comando utilizado para alterar una tabla es ALTER TABLE. Para alterar una tabla,sta debe estar contenida en el esquema del usuario o debe tener el privilegio desistema ALTER ANY TABLE.

    Las siguientes son las principales razones para alterar o modificar una tabla:

    Para adicionar, eliminar o renombrar columnas, o modificar la definicin de unacolumna existente (tipo de dato, longitud, valores por defecto y constraints).

    Para modificar los atributos lgicos o fsicos de una tabla. Para adicionar, modificar o eliminar constraints asociados con la tabla. Habilitar o deshabilitar los constraints de integridad o disparadores asociados con

    la tabla. Para renombrar la tabla. Para renombrar las columnas de la tabla.

    A. Adicionando Columnas

    Para adicionar una columna a una tabla, utilice el comando ALTER TABLE .. ADD.

    Por ejemplo, el siguiente comando adiciona una nueva columna llamada Bonus a latabla EMP:

    SQL> ALTER TABLE Emp ADD Bonus NUMBER(12,2) CHECK (Bonus>=0);

    El siguiente ejemplo adiciona ms de una columna:

    SQL> ALTER TABLE Emp ADD (Direccin Date, Telefono Char(9));

    B. Modificando ColumnasPara modificar la definicin de una columna existente, utilice el comando ALTERTABLE .. MODIFY. Usted puede modificar un tipo de dato de la columna, un valorpor defecto, o un constraints. Tambin puede aumentar o disminuir la longitud de lacolumna.

    Por ejemplo, el siguiente comando disminuye la longitud de la columna Bonus de latabla EMP:

    SQL> ALTER TABLE Emp MODIFY Bonus NUMBER(9,2);

    C. Renombrando ColumnasPara renombrar una columna existente, utilice el comando ALTER TABLE ..RENAME COLUMN. El nuevo nombre no debe tener conflicto con el nombre de unacolumna existente.

    Por ejemplo, el siguiente comando renombra la columna Bonus de la tabla EMP:

    SQL> ALTER TABLE Emp RENAME COLUMN Bonus TO Bono_Emp;

    El comando puede ser cancelado si la columna tiene objetos dependientes.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    54/143

    54

    CARRERAS PROFESIONALES CIBERTEC

    D. Eliminando Columnas

    Para eliminar una columna de una tabla, utilice el comando ALTER TABLE .. DROPCOLUMN.

    Por ejemplo, el siguiente comando elimina la columna Telfono de la tabla EMP:

    SQL> ALTER TABLE Emp DROP COLUMN Telefono;

    2.1.1.4 Eliminando Tablas

    El comando utilizado para eliminar una tabla es DROP TABLE. Para eliminar una tablade cualquier esquema se debe tener el privilegio de sistema DROP ANY TABLE.

    Por ejemplo, el siguiente comando elimina la tabla Emp del esquema de desarrollo:

    SQL> DROP TABLE Emp;

    Si la tabla a eliminar est referenciada por otra tabla a travs de una llave fornea,usted no podr eliminarla con el comando anterior, usted tiene que adicionar laclusula CASCADE CONSTRAINT al comando DROP TABLE para forzar laeliminacin de la tabla.

    Por ejemplo, el siguiente comando elimina la tabla EMP del esquema SCOTT juntocon la llave primaria y las forneas que hacen referencia (constraints).

    SQL> DROP TABLE scott.Emp CASCADE CONSTRAINTS;

    2.1.2 Creacin de restricciones

    Los constraints de integridad son reglas que restringen los valores de uno o mscolumnas en una tabla. La clusula CONSTRAINTS puede utilizarse en los comandosCREATE TABLE o ALTER TABLE.

    2.1.2.1 Creando llaves primarias

    Usted puede crear la llave primaria de una tabla durante la creacin con el comandoCREATE TABLE o adicionarla despus de haber creado la tabla con el comando

    ALTER TABLE.

    Los siguientes ejemplos crean una llave primaria a travs del comando CREATETABLE:

    -- Ejemplo 1: Compuesta de una columna y sin indicar el nombre explcitamente.

    SQL> CREATE TABLE Ord (Ordid NUMBER(4) primary key,Orderdate DATE,Commplan CHAR(1),Custid NUMBER(6) not null,

    Shipdate DATE,Total NUMBER(8,2))

  • 7/24/2019 Manual de Base de Datos Avsnzado

    55/143

    BASE DE DATOS AVANZADO I I 55

    CIBERTEC CARRERAS PROFESIONALES

    Tablespace TS_DATA;

    -- Ejemplo 2: Compuesta de una columna e indicando el nombre explcitamente.

    SQL> CREATE TABLE Ord (Ordid NUMBER(4) constraints pk_ord primary key,

    Orderdate DATE,Commplan CHAR(1),Custid NUMBER(6) not null,

    Shipdate DATE,Total NUMBER(8,2))Tablespace TS_DATA;

    Los siguientes ejemplos crean una llave primaria a travs del comando ALTERTABLE:

    -- Ejemplo 1: Compuesta de una columna sin nombre explcito.

    SQL> ALTER TABLE ORD ADD PRIMARY KEY (ordid);

    -- Ejemplo 2: Compuesta de una columna con nombre explcito.

    SQL> ALTER TABLE ORD ADD constraint pk_ord PRIMARY KEY (ordid);

    -- Ejemplo 3: Compuesta por ms de una columna con nombre explicito.

    SQL> ALTER TABLE ITEM ADD constraint pk_item PRIMARY KEY (ordid, itemid);

    2.1.2.2 Creando llaves forneas

    Puede crear llaves forneas haciendo referencia a las tablas de su esquema. Parapoder referenciar tablas de otros esquemas de usuarios, debe contar con el privilegioREFERENCES sobre la tabla a referenciar.Usted puede crear la llave fornea de una tabla durante la creacin con el comandoCREATE TABLE o adicionarla despus de haber creado la tabla con el comandoALTER TABLE.

    Los siguientes ejemplos crean una llave fornea a travs del comando CREATETABLE:

    -- Ejemplo 1: Sin nombre explicito.

    SQL> CREATE TABLE Item (Ordid NUMBER(4) REFERENCES Ord,Itemid NUMBER(4) not null,Prodid NUMBER(6),Actualprice NUMBER(8,2),Cantidad NUMBER(8),Itemtot NUMBER(8,2),

    CONSTRAINTS pk_item primary key (ordid, itemid))Tablespace TS_DATA;

  • 7/24/2019 Manual de Base de Datos Avsnzado

    56/143

    56

    CARRERAS PROFESIONALES CIBERTEC

    -- Ejemplo 2: Con nombre explicito.

    SQL> CREATE TABLE Item (Ordid NUMBER(4),Itemid NUMBER(4) not null,Prodid NUMBER(6),

    Actualprice NUMBER(8,2),Cantidad NUMBER(8),Itemtot NUMBER(8,2),

    CONSTRAINTS pk_item primary key (ordid, itemid),CONSTRAINTS fk_item foreign key (ordid) references ord(ordid))Tablespace TS_DATA;

    Los siguientes ejemplos crean una llave fornea a travs del comando ALTER TABLE:

    -- Ejemplo 1: Sin nombre explicito.

    SQL> ALTER TABLE ITEM ADD FOREIGN KEY (ordid) REFERENCES Ord(ordid);

    -- Ejemplo 2: Con nombre explicito.

    SQL> ALTER TABLE ITEMADD CONSTRAINTS fk_itemFOREIGN KEY (ordid) REFERENCES Ord(ordid);

    2.1.2.3 Creando Check

    Las restricciones CHECK son reglas de validacin a nivel de columna. Esta restriccinpuede crearse durante la creacin de la tabla con el comando CREATE TABLE oadicionarla despus de haber creado la tabla con el comando ALTER TABLE.

    Los siguientes ejemplos crean una restriccin CHECK a travs del comando CREATETABLE:

    -- Ejemplo 1:SQL> CREATE TABLE Item (

    Ordid NUMBER(4),Itemid NUMBER(4) not null,Prodid NUMBER(6),Actualprice NUMBER(8,2) CONSTRAINTS ck_item_01

    CHECK (actualprice >= 0),Cantidad NUMBER(8) CONSTRAINTS ck_item_02

    CHECK (cantidad >= 0),Itemtot NUMBER(8,2) CONSTRAINTS ck_item_02

    CHECK (itemtot >= 0),CONSTRAINTS pk_item primary key (ordid, itemid),CONSTRAINTS fk_item foreign key (ordid) references ord(ordid))Tablespace TS_DATA;

  • 7/24/2019 Manual de Base de Datos Avsnzado

    57/143

    BASE DE DATOS AVANZADO I I 57

    CIBERTEC CARRERAS PROFESIONALES

    Los siguientes ejemplos crean una restriccin CHECK a travs del comando ALTERTABLE:

    -- Ejemplo 1:

    SQL> ALTER TABLE ITEMADD CONSTRAINTS ck_item_01 CHECK (actualprice >=0);

    -- Ejemplo 2:

    SQL> ALTER TABLE ITEMADD (CONSTRAINTS ck_item_02 CHECK (cantidad >=0),

    CONSTRAINTS ck_item_03 CHECK (itemtot >=0));

    2.1.2.4 Estableciendo valores por defecto

    Utilice el comando DEFAULT con el comando CREATE TABLE o con el comandoALTER TABLE para especificar un valor por defecto.

    Los siguientes ejemplos crean esta restriccin a travs del comando CREATE TABLE:

    -- Ejemplo 1:

    SQL> CREATE TABLE Errores (Id_error NUMBER(4),Descrip VARCHAR2(50),Usuario CHAR(10) DEFAULT user,Fecha DATE DEFAULT sysdate,Hora CHAR(8) DEFAULT to_char(sysdate,hh24:mi:ss),Estacion VARCHAR2(20) DEFAULT USERENV(terminal))

    Tablespace TS_DATA;

    Los siguientes ejemplos crean esta restriccin a travs del comando ALTER TABLE:

    -- Ejemplo 1:

    SQL> ALTER TABLE errores MODIFY (Usuario DEFAULT user);

    -- Ejemplo 2:

    SQL> ALTER TABLE errores MODIFY (Fecha DEFAULT sysdate,Hora DEFAULT to_char(sysdate,hh24:mi:ss),estacion DEFAULT USERENV(terminal));

  • 7/24/2019 Manual de Base de Datos Avsnzado

    58/143

    58

    CARRERAS PROFESIONALES CIBERTEC

    2.1.2.5 Habilitando y Deshabilitando Constraints

    Usted puede habilitar o deshabilitar cualquier constraint de su esquema. Paramodificar un constraint de otro esquema de usuario debe tener el privilegio ALTERsobre el objeto tabla.

    Por ejemplo, el siguiente comando deshabilita la llave primaria de la tabla ORD:

    -- Ejemplo 1:

    SQL> ALTER TABLE Scott.Ord DISABLE PRIMARY KEY;

    -- Ejemplo 2:

    SQL> ALTER TABLE Scott.Ord ENABLE CONSTRAINTS pk_ord;

    Por ejemplo, el siguiente comando deshabilita la llave fornea de la tabla ITEM:-- Ejemplo 1:

    SQL> ALTER TABLE Desarrollo.Item DISABLE FOREIGN KEY;

    -- Ejemplo 2:

    SQL> ALTER TABLE Desarrollo.Item DISABLE CONSTRAINTS fk_item;

    2.1.2.6 Eliminando Constraints

    Usted puede un constraint utilizando el comando ALTER TABLE con una de lassiguientes clusulas:

    DROP PRIMARY KEY DROP UNIQUE DROP CONSTRAINT

    Por ejemplo, los siguientes dos comandos eliminan un constraint de integridad:

    -- Ejemplo 1:

    SQL> ALTER TABLE Dept DROP PRIMARY KEY;

    -- Ejemplo 2:

    SQL> ALTER TABLE Item DROP CONSTRAINTS fk_item;

  • 7/24/2019 Manual de Base de Datos Avsnzado

    59/143

    BASE DE DATOS AVANZADO I I 59

    CIBERTEC CARRERAS PROFESIONALES

    2.1.3 Manejando Indices

    Un ndice es una estructura diseada para obtener un acceso ms rpido a los datoscontenidos dentro de una tabla.

    Un ndice es independiente de los datos almacenados en la tabla y cuando seencuentra bien definido, es decir, cuando se forma atendiendo a la gran mayora delas consultas que se harn sobre una tabla, reduce significativamente la bsqueda,aumentando el rendimiento.

    Inmediatamente luego de creado el ndice, la base de datos Oracle comienza amantenerlo de acuerdo a las inserciones, actualizaciones y eliminaciones de registrosde la tabla en la cual se ha implementado.

    2.1.3.1 Tipos de ndices

    Existen tres tipos de ndices cuya naturaleza depende de la forma en que haya sidocreado. Estos tipos son:

    Un ndice nico es aqul que tiene la restriccin adicional de que el grupo de columnasindexadas define una nica fila. Sin embargo, si no van a existir ms grupos decolumnas con estas caractersticas, dentro de una misma tabla, se recomienda crearel conjunto como una clave primaria ya que de todas formas Oracle asociar un ndicenico a esta restriccin (la clave primaria).

    Un ndice no nico, que es aqul que no impone la restriccin de que las filas nodeban repetirse.

    Un ndice compuesto es aqul que agrupa varias columnas de la tabla. Este tipo esmuy til cuando las sentencias de seleccin (SELECT) efectan bsquedas por varioscriterios (columnas) en una misma tabla. Es importante el orden en que se ponen lascolumnas al crear el ndice; la columna ms referenciada debera ser puesta en primerlugar y as sucesivamente.

    2.1.3.2 Consideraciones en el diseo de ndices

    Un ndice slo es efectivo cuando es utilizado. Es por eso que debe asegurarse que lafrecuencia de uso sea muy alta y que su implementacin redunde en mejoras derendimiento de las consultas efectuadas a la tabla donde reside el ndice. Sin

    embargo, no debe explotarse el uso de los ndices dentro de una misma tabla porquecon cada operacin de insercin, actualizacin o eliminacin que se lleva a cabo sobreuna tabla, sus ndices se deben recrear, con el consiguiente uso de recursos que seproduce. A menudo, es conveniente eliminar o desactivar temporalmente un ndicecuando sabemos que se va a efectuar una operacin decarga/actualizacin/eliminacin masiva en la tabla y ms tarde volver a crearlo, cuandola operacin haya finalizado.

    Considere las siguientes reglas de indexacin para cuando se enfrente a la tarea dedecidir qu tablas indexar:

  • 7/24/2019 Manual de Base de Datos Avsnzado

    60/143

    60

    CARRERAS PROFESIONALES CIBERTEC

    Indexe solamente las tablas cuando las consultas (queries) no accedan a una grancantidad de filas de la tabla. Use ndices cuando una consulta acceda a unporcentaje menor al 5% de las filas de una tabla.

    No indexe tablas que son actualizadas con mucha frecuencia. Indexe aquellas tablas que no tengan muchos valores repetidos en las columnas

    escogidas. Recuerde que, finalmente, el ndice hace una bsqueda secuencialdentro de un conjunto de filas objetivo. Las consultas muy complejas (en la clusula WHERE), por lo general, no toman

    mucha ventaja de los ndices. Cuando posea ms experiencia podr corroboraresta afirmacin y estar preparado para arreglar estas situaciones.

    Tambin es importante decidir qu columnas indexar. Siga las siguientes reglascuando tenga que tomar esta decisin:

    Escoja las columnas que se utilizan con mayor frecuencia en las clusulas WHEREde las consultas.

    No indexe aquellas columnas que tengan demasiados valores repetidos en ellas. Las columnas que toman valores nicos son excelentes candidatas para indexar.

    Oracle, automticamente, indexa las claves primarias de las tablas. Indexe las columnas que sirven para unir una tabla con otras (join en consultas). Si hay columnas que no tienen valores nicos por s solas, pero que en conjunto

    con otra columna forman una dupla nica o con pocas repeticiones (menos que lascolumnas individualmente), entonces conviene indexarlas (siempre y cuandoexistan consultas que las utilicen en conjunto). Estos ndices reciben el nombre dendices compuestos.

    Otra consideracin importante a tomar en cuenta es que los ndices deben residir enun tablespace diferente de donde residen las tablas.

    Por ejemplo, los siguientes dos comandos crean un ndice:

    -- Ejemplo 1:

    SQL> CREATE INDEX emp_ename ON Emp(ename) TABLESPACE indx;

    Los ndices tambin pueden ser nicos o no nicos. Un ndice nico garantiza que dosfilas de una tabla no tengan valores duplicados en la columna o columnas queconforman el ndice.

    -- Ejemplo 2:

    SQL> CREATE UNIQUE INDEX dept_unique_index ON Dept(dname)TABLESPACE indx;

    2.1.3.3 Creando ndices basados en funciones

    Los ndices basados en funciones facilitan las consultas que evalan un valorretornado por una funcin o expresin. El valor de la funcin o expresin esrecalculado y guardado por el ndice.Para la creacin de un ndice basado en funciones en su esquema debe tener elprivilegio de sistema QUERY REWRITE. Para crearlos en otros esquemas debe tener

    los privilegios CREATE ANY INDEX y GLOBAL QUERY REWRITE.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    61/143

    BASE DE DATOS AVANZADO I I 61

    CIBERTEC CARRERAS PROFESIONALES

    -- Otorgando Privilegios.

    SQL> GRANT query rewrite TO Scott;

    SQL> GRANT global query rewrite TO Scott;

    Por ejemplo, considere la expresin en la clusula WHERE de abajo:

    SQL> CREATE INDEX idx ON desarrollo.emp (comm + sal);

    SQL> SELECT * FROM emp WHERE (comm + sal) < 5000;

    Por ejemplo, considere la funcin en la clusula WHERE de abajo:

    SQL> CREATE INDEX idx_emp_name ON desarrollo.emp (Upper(ename));

    SQL> SELECT * FROM emp WHERE Upper(ename) = `JONES`;

    2.1.3.4 Eliminando ndices

    Para eliminar un ndice, debe estar contenido en su esquema o debe tener el privilegiode sistema DROP ANY INDEX.

    El siguiente comando elimina un ndice:

    SQL> DROP INDEX idx_emp_name;

    2.1.4 Manejo de secuencias

    A menudo, es preciso generar nmeros en forma ordenada para implementar, porejemplo, valores para una llave primaria en una tabla o garantizar que esos nmerosno se repiten y van siempre en un orden predefinido por el desarrollador (nonecesariamente secuenciales).

    La forma tradicional de efectuar lo anterior sera almacenar el ltimo nmero utilizadoen un registro especial, bloquearlo, obtener el prximo valor, actualizar el registro,desbloquearlo y utilizar el nmero. Sin embargo, para eso, Oracle implementa losobjetos denominadas secuencias que permiten hacer lo anterior de maneratransparente para el usuario.

    Las secuencias son objetos de la base de datos en los que, mltiples usuarios, puedengenerar series de nmeros enteros diferentes.

    2.1.4.1 Creando Secuencias

    Para crear una secuencia en su esquema, debe tener el privilegio de sistema CREATESEQUENCE. Para crear una secuencia en otro esquema de usuario, debe tener elprivilegio CREATE ANY SEQUENCE.

    Por ejemplo, la siguiente sentencia crea una secuencia para generar nmeros queservirn para dar valores a la columna empno de la tabla Emp:

  • 7/24/2019 Manual de Base de Datos Avsnzado

    62/143

    62

    CARRERAS PROFESIONALES CIBERTEC

    SQL> CREATE SEQUENCE seq_empleadoINCREMENT BY 1START WITH 1NOMAXVALUENOCYCLE;

    Por ejemplo, la siguiente sentencia crea una secuencia para generar nmeros queservirn para dar valores a la columna empno de la tabla Emp:

    Los parmetros significan lo siguiente:

    Increment by: Indica la cantidad de incremento de la secuencia. Start with: Es el valor de partida de la secuencia. Minvalue: Indica cul ser el valor mnimo de la secuencia. Maxvalue: Corresponde al valor mximo que puede tomar la secuencia. Nocycle: Es el valor por defecto para establecer si la secuencia deber

    comenzar nuevamente a generar valores una vez que ha alcanzado el mximo.

    Para acceder a la secuencia creada, utilice las pseudocolumnas CURRVAL yNEXTVAL.

    La pseudocolumna NEXTVAL genera un nuevo nmero diferente a los anteriormentegenerados. La pseudocolumna CURRVAL devuelve el ltimo nmero generado.

    SQL> SELECT seq_empleado.NEXTVAL FROM DUAL;NEXTVAL

    1

    SQL> SELECT seq_empleado.CURRVAL FROM DUAL;

    CURRVAL1

    2.1.4.2 Modificando Secuencias

    Puede alterar una secuencia para cambiar cualquiera de los parmetros que defini,excepto el nmero de secuencia inicial. Para cambiar este parmetro es necesarioeliminar la secuencia y volverla a crear.

    Por ejemplo, la siguiente sentencia modifica una secuencia:

    SQL> ALTER SEQUENCE seq_empleadoINCREMENT BY 10MAXVALUE 10000CYCLE;

    2.1.4.3 Eliminando Secuencias

    Usted puede eliminar cualquier secuencia de su esquema. Para eliminar unasecuencia de otro esquema, debe tener el privilegoi DROP ANY SEQUENCE.Por ejemplo, la siguiente sentencia elimina una secuencia:

    SQL> DROP SEQUENCE seq_empleado;

  • 7/24/2019 Manual de Base de Datos Avsnzado

    63/143

    BASE DE DATOS AVANZADO I I 63

    CIBERTEC CARRERAS PROFESIONALES

    2.1.5 Manejo de sinnimos

    Los sinnimos son objetos del sistema que apuntan a otros objetos. Implementan aliasde tablas, vistas, secuencias o unidades de programas. Por lo general se utilizan paraesconder ciertos detalles del objeto que representan al usuario final.

    Los sinnimos pueden ser pblicos o privados. Los primeros son aqullos que caendentro del esquema PUBLIC y son vistos por todos los usuarios de la misma base dedatos. Los sinnimos privados se crean dentro del esquema de un usuario enparticular y slo estar visible para quienes l estime conveniente.

    Los sinnimos proporcionan un nivel de seguridad ocultando el nombre y el propietariode un objeto y permitiendo su localizacin transparente para objetos remotos de unabase de datos distribuida. Tambin, reduce la complejidad de los comandos SQL paralos usuarios de la base de datos.

    2.1.5.1 Creando SinnimosPara crear un sinnimo privado en su esquema, debe tener el privilegio CREATESYNONYM. Para crear un sinnimo pblico, debe tener el privilegio de SistemaCREATE PUBLIC SYNONYM.

    Por ejemplo, las siguientes sentencias crean sinnimos:

    -- Ejemplo 1: Sinnimo privadoSQL> CREATE SYNONYM priv_dept FOR Desarrollo.Dept;

    -- Ejemplo 1: Sinnimo pblico

    SQL> CREATE PUBLIC SYNONYM public_emp FOR Desarrollo.Emp;

    2.1.5.2 Eliminando Sinnimos

    Para eliminar un sinnimo privado en cualquier esquema, debe tener el privilegioDROP ANY SYNONYM. Para eliminar un sinnimo pblico, debe tener el privilegio deSistema DROP PUBLIC SYNONYM.

    Por ejemplo, las siguientes sentencias eliminan sinnimos:

    -- Ejemplo 1: Sinnimo privado

    SQL> DROP SYNONYM priv_dept;

    -- Ejemplo 1: Sinnimo pblicoSQL> DROP PUBLIC SYNONYM public_emp;

  • 7/24/2019 Manual de Base de Datos Avsnzado

    64/143

    64

    CARRERAS PROFESIONALES CIBERTEC

    Autoevaluacin

    El siguiente grfico nos muestra un modelo de una base de datos que almacenainformacin de los horarios de atencin de una clnica.

    Realice usted las modificaciones que crea conveniente para cumplir los siguientesrequerimientos.

    1.- Se han presentado solicitudes de los pacientes para saber los sntomas de lasenfermedades, por tal motivo se requiere almacenar informacin de los sntomas quepueda presentar una determinada enfermedad. Una enfermedad puede tener variossntomas y un sntoma siempre pertenece a una nica enfermedad.

    2.- Todo sntoma debe tener un id numrico y una descripcin. Asegurarse que lageneracin de valores para los id de los sntomas sea eficiente.

    3.- Asimismo, se han registrado muchos problemas al momento de registrar el sexo deun doctor, por tal motivo se solicita que en ese campo solo se puedan registrar losiguientes valores: M o F.

    4.- No deben existir dos enfermedades con el mismo nombre.

    5.- Se debe poder almacenar por especialidad la informacin de la universidad y el aoen que el docente culmin sus estudios.

  • 7/24/2019 Manual de Base de Datos Avsnzado

    65/143

    BASE DE DATOS AVANZADO I I 65

    CIBERTEC CARRERAS PROFESIONALES

    2.2 Creacin de estructuras de datos

    2.2.1 Introduccin al Diccionario de Datos

    El diccionario de datos de Oracle es una estructura de tablas y vistas, de slo lectura,que contiene informacin de la base de datos, tal como:

    las definiciones de todos los esquemas en la BD (tablas, ndices, vistas, clusters,sinnimos, secuencias, procedimientos, funciones, paquetes, triggers, etc)

    el espacio asignado y actualmente ocupado por un esquema

    los usuarios de la base de datos

    los privilegios y roles que cada usuario tiene

    informacin sobre quienes han accesado y actualizado esquemas

    informacin general de la base de datos

    El diccionario de datos es creado cuando la base de datos es creada. Para reflejar conexactitud el estado de la BD en todo momento, el diccionario de datos esautomticamente actualizado por Oracle en respuesta a acciones especficas (talescomo cuando la estructura de la BD es modificada). La importancia del diccionario dedatos radica en que Oracle cuenta con ste para operar la base de datos.

    2.2.2 Estructura del Diccionario de Datos

    2.2.2.1 Tablas base

    Estas tablas que almacenan informacin acerca de la base de datos. Slo Oracle debeescribir y leer esas tablas. Los usuarios rara vez accesan a ellas directamente porqueno estn normalizadas y la mayora de los datos estn encriptados.

    2.2.2.2 Vistas acces