You are on page 1of 131

UN NIVERSIDA ADREGION NALAUTNOMADE LOSANDE ESUNIAND DES

MANUAL ORAC CLE9i

DESA OLLO ARRO O CLIE E SE ENTE ERVID DOR

TUTOR Ing. Os Lleren T R: scar na

Sistem mas Autor r:Diego Sn nchez

Pg gina 1

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

INDICE
INTRODUCCION ORACLE

SISTEMA GESTOR DE BASE DE DATOS (SGBD) ORACLE ADMINISTRADOR DE BASES DE DATOS (DBA) ANALISIS INICIAL DE UN SGBD ORACLE TELEPROCESO SERVIDOR DE ARCHIVOS CLIENTE-SERVIDOR CARACTERISTICAS DEL MODELO CLIENTE/SERVIDOR TIPOS DE CLIENTES TIPOS DE SERVIDOR INSTALACIN DE ORACLE 9I CMO INSTALAR ORACLE CLIENT EN WINDOWS (CLIENTE DE ORACLE) CONEXIN NATIVE- CONEXIN OBDC HERRAMIENTA SQL PLUS ESTRUCTURA DEL LENGUAJE SQL ARQUITECTURA ORACLE CREAR UN TABLESPACE ALTERAR UN TABLESPACE BORRAR UN TABLESPACE FICHEROS

Sistemas Autor:Diego Snchez

Pgina 2

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

INSTANCIAS ESTRUCTURAS INTERNAS DE LA BD TABLAS Y COLUMNAS RESTRICCIONES DE TABLAS USUARIOS PROCEDIMIENTOS Y FUNCIONES DISPARADORES, TRIGGERS PRIVILEGIOS Y ROLES SEGMENTOS, EXTENSIONES Y BLOQUES FICHEROS DE LA BD TIPOS DE SENTENCIAS CREACIN TABLAS TIPOS DE COLUMNAS RESTRICCIONES INSERCIN, ACTUALIZACIN Y BORRADO BORRADO SELECCIN PRIVILEGIOS DEL SISTEMA AUDITORA DE SEGURIDAD PL/SQL BLOQUE PL/SQL TIPOS DE BLOQUES FUNCIONES EN PL/SQL TRIGGERS EJECICIOS ORACLE 9i GENERAL

Sistemas Autor:Diego Snchez

Pgina 3

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

INTRODUCCION ORACLE

SISTEMA GESTOR DE BASE DE DATOS (SGBD) ORACLE

Est concebido con el fin de manejar grandes cantidades de informacin, adems de admitir conexiones concurrentes de multitud de usuarios (entornos multi-usuario) hacia los mismos datos. Oracle aporta un SGBD que estar ubicado en un hardware especfico y bajo un sistema operativo determinado. La eleccin del entorno de trabajo (hardware, S.O. y tipologa de la estructura cliente/servidor) ser una decisin que estar acorde con las necesidades del propio sistema de informacin. Las principales funcionalidades aportadas por todo el SGBD Oracle son: Soporte y tratamiento de una gran cantidad de datos (Gbytes). Soporte de una gran cantidad de usuarios accediendo concurrentemente a los datos. Seguridad de acceso a los datos, restringiendo dicho acceso segn las necesidades de cada usuario. Integridad referencial en su estructura de base de datos. Conectividad entre las aplicaciones de los clientes en sus puestos de trabajo y el servidor de datos Oracle (estructura cliente/servidor. Conectividad entre bases de datos remotas (estructura de bases de datos distribuidas) Portabilidad. Compatibilidad.

ADMINISTRADOR DE BASES DE DATOS (DBA):

Es el responsable para el buen funcionamiento de toda una estructura de datos y todo su entorno de trabajo. Esta persona deber tener un alto conocimiento de todo el sistema que envuelve al SGBD.

Sistemas Autor:Diego Snchez

Pgina 4

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Sobre este recae una alta responsabilidad, debido a las graves repercusiones que puede traer una mala gestin de la informacin. Las funciones que se le asignan a un DBA Oracle son las siguientes: Instalacin y actualizacin del software del SGBD. Analizar e instalar en la base de datos las aplicaciones con las que van a interactuar los usuarios. Esto, bsicamente lleva consigo: __ Asignacin de espacios (tablespaces) en la base de datos y ubicacin de los mismos en los discos de la mquina. __ Creacin de todos los objetos (tablas, ndices, vistas, etc.) requeridos por cualquiera de las aplicaciones, as como su dimensionamiento dentro de la base de datos. __ Actualizacin de los parmetros del sistema para el correcto funcionamiento de las aplicaciones. Creacin de los usuarios y asignacin de privilegios, con el fin de controlar la seguridad de acceso de estos a la informacin de la base de datos. Controlar y monitorizar los accesos de los usuarios a la base de datos. Excesivas conexiones pueden provocar cuellos de botella en la red y bloqueos en algunos de los recursos de la mquina. Gestionar y optimizar el rendimiento de los procesos contra la base de datos. Esta ser una de las funciones ms importantes del administrador, porque de nada sirve tener una buena infraestructura montada si los colapsos son continuos y la lentitud en los accesos es constante. Planificacin de los sistemas de backup y recuperacin de los datos en caso de que sea necesario. Control del crecimiento de los archivos y procesos generados en el sistema por parte del mismo SGBD.

ANALISIS INICIAL DE UN SGBD ORACLE:

Para establecer un entorno de trabajo en Oracle vamos a necesitar: Software Oracle para servidor (Oracle Server Software): Obviamente, una versin determinada especficamente diseada para un sistema operativo concreto (UNIX, Windows NT, etc.).

Sistemas Autor:Diego Snchez

Pgina 5

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Este software incluye los ejecutables para el funcionamiento del propio gestor de la base de datos, un conjunto de herramientas para el tratamiento de la informacin y un software especfico (Net8) para que sean posibles las conexiones de los usuarios al servidor en arquitecturas cliente/servidor.

Software Oracle para cliente (Oracle Cliente Software): Este software se ubicar en los puestos de trabajo de los usuarios (tambin bajo un determinado sistema operativoWindows 95, NT, etc.), el cual estar formado por un conjunto de herramientas especficas para cliente/servidor (Designar/2000, Developper/2000, etc.) y de su correspondiente software (Net8) para el establecimiento de las conexiones al servidor.

Archivos de base de datos: La base de datos en s, los cuales sern creados a travs de herramientas o comandos especficos de Oracle. La ubicacin de la base de datos se realizar sobre los discos del propio servidor donde se ha establecido el Oracle Server Software.

Recursos suficientes en nuestro servidor: Previamente, habr que realizar un estudio de nuestro sistema de informacin para conocer el alcance del mismo. Posteriormente, habr que estimar la cantidad de memoria, discos y unidades centrales de proceso que van a ser necesarias para un correcto funcionamiento.

TELEPROCESO

Las telecomunicaciones comenzaron en 1830 con la utilizacin del Telgrafo, que permiti diversos tipos de comunicaciones digitales utilizando cdigos como el Morse inventado por Samuel F. B. Morse en 1820. Morse comenz a estudiar las comunicaciones en 1830 teniendo preparada una mquina en 1835 compuesta en el emisor por un conjunto de piezas con dientes correspondientes a las letras y las cifras que ensambladas para formar un mensaje y pasadas a travs del correspondiente dispositivo, provocaban las sucesivas aperturas y cierres de un interruptor que produca la seal enviada por la lnea. En el receptor, un electroimn reciba dicha seal y produca el desplazamiento de un lpiz que escriba en el papel la forma de la seal con la que se poda descifrar el mensaje recibido.

Sistemas Autor:Diego Snchez

Pgina 6

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Actualmente, en Telecomunicaciones se tiende al abaratamiento de la utilizacin de las redes, as como a nuevas posibilidades de transmisin proporcionadas por las Redes Digitales de Servicios Integrados de Banda Ancha que operan a gran velocidad.

Funcin de comunicaciones Un sistema teleinformtica bsico consta de un Procesador Central (Host en la acepcin inglesa) auxiliado en las tareas de gestin de las comunicaciones por otro procesador de menor capacidad denominado Unidad de Control de Comunicaciones o Procesador de Comunicaciones (Front-en en la acepcin inglesa). En el otro extremo se encuentra el dispositivo que desea comunicar con el procesador central denominndose Terminal Remoto y entre ambos se encuentra la Red de Telecomunicacin en cuyo principio y fin encontramos los convertidores-adaptadores para la comunicacin denominados Mdems aunque pueden ser otro tipo de dispositivos segn se transmita de una forma o de otra.

Amplitud: La amplitud es la caracterstica de las ondas sonoras que percibimos como volumen. La amplitud es la mxima distancia que un punto del medio en que se propaga la onda se desplaza de la posicin de equilibrio; esta distancia corresponde al grado de movimiento de las molculas de aire en una onda sonora. Al aumentar su movimiento, golpean el tmpano con una fuerza mayor, por lo que el odo percibe un sonido ms fuerte. Un tono con amplitudes baja, media y alta demuestra el cambio del sonido resultante.

Sistemas Autor:Diego Snchez

Pgina 7

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Frecuencia: Sistema de transmisin de radio en el que la onda portadora se modula de forma que su frecuencia vare segn la seal de audio transmitida. El primer sistema operativo de comunicacin radiofnica fue descrito por el inventor norteamericano Edwin H. Armstrong en 1936.

Control de lnea Tipos de ruido: Considerando que el ruido puede provocar errores en la comunicacin de datos, se puede definir al ruido como "seales elctricas indeseables que introducen el equipo o las perturbaciones naturales y degradan el rendimiento de una lnea de comunicaciones".

Conceptos

Ancho de banda: en comunicaciones, la diferencia entre la frecuencia ms alta y la ms baja de un canal de transmisin, por ejemplo un radiotransmisor, una antena parablica o el cableado que conecta las computadoras en una red local; se mide en ciclos por segundo (hercios, Hz). Tambin se denomina ancho de banda a la cantidad de datos que se pueden transmitir en determinado periodo de tiempo por un canal de transmisin; as considerado, el ancho de banda se expresa en bits por segundo (bps). Por ejemplo, un mdem de 56 Kbps es capaz, en teora, de enviar alrededor de 56.000 bits de datos por segundo, mientras que una conexin de red Ethernet con un ancho de banda de 100 Mbps (cien millones de bips por segundo), puede enviar casi 1.800 veces ms datos en el mismo periodo de tiempo.

Baudio: Velocidad de sealizacin de una lnea. Es la velocidad de conmutacin, o el nmero de transiciones (cambios de voltaje o de frecuencia) que se realiza por segundo. Slo a velocidades bajas, los baudios son iguales a los bits por segundo; por ejemplo, 300 baudios equivalen a 300 bps. Sin embargo, puede hacerse que un baudio represente ms de un bit por segundo. Por ejemplo, el modem V.22bis genera 1,200 bps a 600 baudios.

Sistemas Autor:Diego Snchez

Pgina 8

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

SERVIDOR DE ARCHIVOS

Un servidor en informtica o computacin es:

Una aplicacin informtica que realiza algunas tareas por parte de los usuarios. Esto se divide normalmente en servicios de archivos, que permite a los usuarios almacenar y acceder a los archivos de un ordenador comn; y servicios de aplicaciones, en el que los programas llevan a cabo instrucciones para realizar algunas tareas para los usuarios. Este es el significado original del trmino.

El trmino se utiliza ahora para denominar al ordenador en el que se ejecutan los programas. Al principio los programas del servidor se colocaban en un ordenador central o miniordenador. Estos han sido remplazados por ordenadores construidos utilizando una versin ms robusta de la tecnologa del microprocesador que la utilizada en los ordenadores personales, y el trmino servidor fue adoptado para describir a los ordenadores basados en esos microprocesadores.

Componentes del servidor

Un servidor comparte sus recursos (perifricos y almacenamiento de archivos) con los ordenadores de los clientes en una red. Es posible que un ordenador sea cliente y servidor simultneamente, conectando a s mismo otro ordenador por el mismo procedimiento. Muchos de los nuevos dispositivos vienen con funciones de servidor. El X-Internet, Web Cervices y la iniciativa Microsoft NET pueden hacer que hasta el sistema ms pequeo funcione como servidor. Muchas grandes empresas emplean numerosos servidores para cubrir sus necesidades. Un conjunto de servidores en un sitio es conocido como torre de servidores.

Sistemas operativos de servidores

El aumento de los servidores basados en microprocesador fue facilitado por el desarrollo de varias versiones de Unix para ser ejecutadas en la arquitectura del

Sistemas Autor:Diego Snchez

Pgina 9

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

microprocesador Intel, como Solares, Linux y FreeBSD. Los sistemas operativos de la familia Microsoft Windows incluyen versiones de servidores que soportan multitareas y otras caractersticas necesarias para los servidores, comenzando por Windows NT.

Los ordenadores centrales y los miniordenadores se usaban en un principio a travs de falsos terminales que no podan realizan las tareas de procesamiento ms importantes. Esto tuvo como consecuencia el uso cada vez mayor de los ordenadores personales por parte de los usuarios.

Que es un servidor de archivos

Tipo de servidor de red de ordenadores cuya funcin es permitir el acceso remoto a archivos almacenados o directamente accesibles por este. En principio, cualquier ordenador conectado a una red con un software apropiado, puede funcionar como servidor de archivos. Desde el punto de vista del cliente de un servidor de archivos, la localizacin de los archivos compartidos es transparente. O sea, normalmente no hay diferencias perceptibles si un archivo esta almacenado en un servidor de archivos remoto o en el disco de la propia mquina. Algunos protocolos comnmente utilizados en servidores de archivos:

SMB/CIFS (Windows, Samba en Unix) NFS (Unix)

Sistemas Autor:Diego Snchez

Pgina 10

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

CLIENTE-SERVIDOR

QUE ES UN CLIENTE Es el que inicia un requerimiento de servicio. El requerimiento inicial puede convertirse en mltiples requerimientos de trabajo a travs de redes LAN o WAN. La ubicacin de los datos o de las aplicaciones es totalmente transparente para el cliente.

QUE ES UN SERVIDOR

Es cualquier recurso de cmputo dedicado a responder a los requerimientos del cliente. Los servidores pueden estar conectados a los clientes a travs de redes LANs o WANs, para proveer de mltiples servicios a los clientes y ciudadanos tales como impresin, acceso a bases de datos, fax, procesamiento de imgenes, etc.

ELEMENTOS DE LA ARQUITECTURA CLIENTE/SERVIDOR

En esta aproximacin, y con el objetivo de definir y delimitar el modelo de referencia de una arquitectura Cliente/Servidor, debemos identificar los componentes que permitan articular dicha arquitectura, considerando que toda aplicacin de un sistema de informacin est caracterizada por tres componentes bsicos: Presentacin/Captacin de Informacin Procesos Almacenamiento de la Informacin

Aplicaciones Cliente/Servidor

Y se integran en una arquitectura Cliente/Servidor en base a los elementos que caracterizan dicha arquitectura, es decir:

Puestos de Trabajo Comunicaciones Servidores

Sistemas Autor:Diego Snchez

Pgina 11

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Arquitectura Cliente/Servidor

El Puesto de Trabajo o Cliente Una Estacin de trabajo o microcomputador (PC: Computador Personal) conectado a una red, que le permite acceder y gestionar una serie de recursos el cual se perfila como un puesto de trabajo universal. Nos referimos a un microcomputador conectado al sistema de informacin y en el que se realiza una parte mayoritaria de los procesos. Se trata de un fenmeno en el sector informtico. Aquellos responsables informticos que se oponen a la utilizacin de los terminales no programables, acaban siendo marginados por la presin de los usuarios. Debemos destacar que el puesto de trabajo basado en un microcomputador conectado a una red, favorece la flexibilidad y el dinamismo en las organizaciones. Entre otras razones, porque permite modificar la ubicacin de los puestos de trabajo, dadas las ventajas de la red.

Los Servidores o Back-end

Una mquina que suministra una serie de servicios como Bases de Datos, Archivos, Comunicaciones,...). Los Servidores, segn la especializacin y los requerimientos de los servicios que debe suministrar pueden ser: Mainframes Miniordenadores Especializados (Dispositivos de Red, Imagen, etc.) Una caracterstica a considerar es que los diferentes servicios, segn el caso, pueden ser suministrados por un nico Servidor o por varios Servidores especializados.

Las Comunicaciones En sus dos vertientes: Infraestructura de redes Infraestructura de comunicaciones

Sistemas Autor:Diego Snchez

Pgina 12

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Infraestructura de redes Componentes Hardware y Software que garantizan la conexin fsica y la transferencia de datos entre los distintos equipos de la red.

Infraestructura de comunicaciones Componentes Hardware y Software que permiten la comunicacin y su gestin, entre los clientes y los servidores. La arquitectura Cliente/Servidor es el resultado de la integracin de dos culturas. Por un lado, la del Mainframe que aporta capacidad de almacenamiento, integridad y acceso a la informacin y, por el otro, la del computador que aporta facilidad de uso (cultura de PC), bajo costo, presentacin atractiva (aspecto ldico) y una amplia oferta en productos y aplicaciones.

CARACTERISTICAS DEL MODELO CLIENTE/SERVIDOR

En el modelo CLIENTE/SERVIDOR podemos encontrar las siguientes caractersticas: 1. El Cliente y el Servidor pueden actuar como una sola entidad y tambin pueden actuar como entidades separadas, realizando actividades o tareas independientes. 2. Las funciones de Cliente y Servidor pueden estar en plataformas separadas, o en la misma plataforma. 3. Un servidor da servicio a mltiples clientes en forma concurrente. 4. Cada plataforma puede ser escalable independientemente. Los cambios realizados en las plataformas de los Clientes o de los Servidores, ya sean por actualizacin o por reemplazo tecnolgico, se realizan de una manera transparente para el usuario final. 5. La interrelacin entre el hardware y el software estn basados en una infraestructura poderosa, de tal forma que el acceso a los recursos de la red no muestra la complejidad de los diferentes tipos de formatos de datos y de los protocolos. 6. Un sistema de servidores realiza mltiples funciones al mismo tiempo que presenta una imagen de un solo sistema a las estaciones Clientes. Esto se logra combinando los recursos de cmputo que se encuentran fsicamente separados en un solo sistema lgico, proporcionando de esta manera el servicio ms efectivo para el usuario final.

Sistemas Autor:Diego Snchez

Pgina 13

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Tambin es importante hacer notar que las funciones Cliente/Servidor pueden ser dinmicas. Ejemplo, un servidor puede convertirse en cliente cuando realiza la solicitud de servicios a otras plataformas dentro de la red. Su capacidad para permitir integrar los equipos ya existentes en una organizacin, dentro de una arquitectura informtica descentralizada y heterognea. 7. Adems se constituye como el nexo de unin mas adecuado para reconciliar los sistemas de informacin basados en mainframes o minicomputadores, con aquellos otros sustentados en entornos informticos pequeos y estaciones de trabajo. 8. Designa un modelo de construccin de sistemas informticos de carcter distribuido. Su representacin tpica es un centro de trabajo (PC), en donde el usuario dispone de sus propias aplicaciones de oficina y sus propias bases de datos, sin dependencia directa del sistema central de informacin de la organizacin, al tiempo que puede acceder a los Recursos de este host central y otros sistemas de la organizacin ponen a su servicio. En conclusin, Cliente/Servidor puede incluir mltiples plataformas, bases de datos, redes y sistemas operativos. Estos pueden ser de distintos proveedores, en arquitecturas propietarias y no propietarias y funcionando todos al mismo tiempo. Por lo tanto, su implantacin involucra diferentes tipos de estndares: APPC, TCP/IP, OSI, NFS, DRDA corriendo sobre DOS, OS/2, Windows o PC UNIX, en TokenRing, Ethernet, FDDI o medio coaxial, slo por mencionar algunas de las posibilidades.

TIPOS DE CLIENTES

"cliente flaco": Servidor rpidamente saturado. Gran circulacin de datos de interface en la red. "cliente gordo": Casi todo el trabajo en el cliente. No hay centralizacin de la gestin de la BD. Gran circulacin de datos intiles en la red.

Sistemas Autor:Diego Snchez

Pgina 14

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

TIPOS DE SERVIDOR

Servidores de archivos Servidor donde se almacena archivos y aplicaciones de productividad como por ejemplo procesadores de texto, hojas de clculo, etc.

Servidores de bases de datos Servidor donde se almacenan las bases de datos, tablas, ndices. Es uno de los servidores que ms carga tiene.

Servidores de transacciones Servidor que cumple o procesa todas las transacciones. Valida primero y recin genera un pedido al servidor de bases de datos.

Servidores de Groupware Servidor utilizado para el seguimiento de operaciones dentro de la red.

Servidores de objetos Contienen objetos que deben estar fuera del servidor de base de datos. Estos objetos pueden ser videos, imgenes, objetos multimedia en general.

Servidores Web Se usan como una forma inteligente para comunicacin entre empresas a travs de Internet.

Sistemas Autor:Diego Snchez

Pgina 15

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Este servidor permite transacciones con el acondicionamiento de un browser especfico. Estilos del modelo cliente servidor Funciones de un programa servidor Espera las solicitudes de los clientes. Ejecuta muchas solicitudes al mismo tiempo. Atiende primero a los clientes VIP. Emprende y opera actividades de tareas en segundo plano. Se mantiene activa en forma permanente.

INSTALACIN DE ORACLE 9I CMO INSTALAR ORACLE CLIENT EN WINDOWS (CLIENTE DE ORACLE)

Este artculo muestra paso a paso cmo instalar Oracle Cliente (utilidad de Oracle que se ha de instalar en los PCs que queramos que tengan acceso al Servidor de Oracle):

En primer lugar necesitaremos disponer de los CDs de instalacin que estn disponibles gratuitamente en la web: Oracle.

Sistemas Autor:Diego Snchez

Pgina 16

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Pulsaremos en "Siguiente" y seleccionamos el destino (carpeta) de instalacin:

Seleccionaremos "Oracle9i Cliente:

Sistemas Autor:Diego Snchez

Pgina 17

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Dependiendo de las utilidades que queramos instalar seleccionaremos "Administrador" (instala todas las herramientas para administrar Oracle desde un PC Cliente), "Runtime" (instala las herramientas bsicas para acceso a Oracle, es la recomendada) "Personalizada" (permite seleccionar las herramientas a instalar):

Dejaremos el puerto por defecto 2030 para "Oracle Services para Microsoft Transaction Server". Este puerto no es relevante si no tenemos un Cluster de servidores:

Sistemas Autor:Diego Snchez

Pgina 18

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Una vez comprobadas las herramientas que se van a instalar pulsaremos en "Instalar":

Tras la instalacin realizaremos la configuracin de red de Oracle:

Sistemas Autor:Diego Snchez

Pgina 19

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Desmarcaremos la opcin "Realizar una configuracin tpica" y pulsaremos en "Siguiente".

Marcamos "No, deseo diferir la configuracin" y pulsamos en "Siguiente".

Sistemas Autor:Diego Snchez

Pgina 20

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Pulsamos en "Siguiente".

Marcamos "Base de datos o servicio Oracle8i o posterior" y pulsamos en "Siguiente".

Introducimos el nombre del servicio que, normalmente, coincidir con el nombre de la base de datos a la que nos conectaremos:

Sistemas Autor:Diego Snchez

Pgina 21

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Seleccionamos el protocolo TCP y pulsamos en "Siguiente".

Introducimos el nombre o IP del PC que tiene la base de datos de Oracle (servidor de Oracle) y pulsamos en "Siguiente".

Sistemas Autor:Diego Snchez

Pgina 22

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Si aparece algn error en la primera prueba de conexin es habitual pues utiliza el usuario y contrasea que Oracle configura por defecto. Para probar la conexin correctamente pulsaremos en "Cambiar Conexin" e introduciremos un usuario y contrasea existentes en la Base de Datos. Si no hay problemas mostrar "Conectado... Prueba realizada correctamente".

Introduciremos el nombre de red, que por defecto ser el mismo que el nombre de la base de datos y pulsamos en "Siguiente".

Pulsamos en "Siguiente".

Sistemas Autor:Diego Snchez

Pgina 23

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Pulsamos en "Siguiente".

Pulsamos en "Terminar".

Sistemas Autor:Diego Snchez

Pgina 24

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Pulsamos en "Salir".

Con esto habremos concluido la instalacin de Oracle Cliente, ahora nos aparecer un nuevo Driver ODBC:

CONEXIN NATIVE- CONEXIN OBDC

TNSNAMES.ORA Network Configuration File: E:\oracle\ora81\network\admin\tnsnames.ora # Generated by Oracle configuration tools.

INST1_HTTP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = colossus)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = SHARED) (SERVICE_NAME = harolpiz) (PRESENTATION = http://admin) ) )

Sistemas Autor:Diego Snchez

Pgina 25

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )

HAROLPIZ = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = colossus)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = harolpiz) ) )

seta as la clase que tengo para la conexion:

import java.sql.*; import java.sql.Connection; public class OracleConecta { public static void main(String args[]) { String usuario = "system"; String password = "harolpiz"; String host = "localhost"; String puerto = "1521"; String sid = "XE";

Sistemas Autor:Diego Snchez

Pgina 26

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

String driver = "oracle.jdbc.driver.OracleDriver"; String ulrjdbc = "jdbc:oracle:thin:@" + host + ":"+ puerto + ":" + sid +","+usuario + "," + password ; Connection connection = null; try { Class.forName(driver).newInstance(); connection = DriverManager.getConnection(ulrjdbc); // objeto connection creado ResultSet result = connection.createStatement().executeQuery("SELECT 'carlos' FROM USUARIOS"); result.next(); System.out.println(result.getString(1)); } catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { try { connection.close(); } catch (SQLException e) {

1.- Damos click en Inicio>Panel de Control >Herramientas administrativas (Administrative Tools)> Data Sources (ODBC).

Sistemas Autor:Diego Snchez

Pgina 27

UN NIVERSIDA ADREGION NALAUTNOMADE LOSANDE ESUNIAND DES

MANUAL ORAC CLE9i

2.- N vamos a la pesta System D Nos a DSN, para que todos los usuarios de la maquina dond se proces la aplicac de sa cin puedan ocupar el ODBC, y da n O amos click en el botn Add. (Si p ejemplo solo quer por o remos que el usuario que se log ggea en esa mquina tenga a acces al ODBC es en la pe so C estaa User DSN). r

3.- Buscamo el cliente de Oracle q se tiene instalado y damos clic en el bot os que ck n Finish.

Sistem mas Autor r:Diego Sn nchez

Pgin 28 na

UN NIVERSIDA ADREGION NALAUTNOMADE LOSANDE ESUNIAND DES

MANUAL ORAC CLE9i

4.- P Posteriorme ente, debem tener configurado el usuari de la a mos o io aplicacin en el e TNSNAME.ora que se encu a uentra en la carpeta de instalacin de Oracle. a n

5.- P Ponemos lo datos de Data So os el ource Name que es e SID de conexion en el e el TNSNAME, y elegimos el TNS Serv vice Name y el usuari con el cu nos vam a io ual mos Test ction. conectar. Damos click en T Connec

Sistem mas Autor r:Diego Sn nchez

Pgin 29 na

UN NIVERSIDA ADREGION NALAUTNOMADE LOSANDE ESUNIAND DES

MANUAL ORAC CLE9i

6.- E Especificamo el Passw os word y damo click en Ok os O

Sistem mas Autor r:Diego Sn nchez

Pgin 30 na

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

HERRAMIENTA SQL PLUS

Historia del lenguaje SQL

El nacimiento del lenguaje SQL data de 1970 cuando E. F. Codd publica su libro: "Un modelo de datos relacional para grandes bancos de datos compartidos". Ese libro dictara las direcrices de las bases de datos relacionales. Apenas dos aos despus IBM (para quien trabajaba Codd) utiliza las directrices de Codd para crear el Standard English Query Language (Lenguaje Estndar Ingls para Consultas) al que se llam SEQUEL. Ms adelante se le asignaron las siglas SQL (aunque en ingls se siguen pronunciando SEQUEL, en espaol se le llama esecuele). Poco despus se converta en un estndar en el mundo de las bases de datos avalando por los organismos ISO y ANSI. An hoy sigue siendo uno de los estndares ms importantes de la industria informtica. Actualmente el ltimo estndar es el SQL del ao 1999 que ampli el anterior estndar conocido como SQL 92. El SQL de Oracle es compatible con el SQL del ao 1999 e incluye casi todo lo dictado por dicho estndar. SQL*Plus Para poder escribir sentencias SQL al servidor Oracle, ste incorpora la herramienta SQL*Plus. Toda instruccin SQL que el usuario escribe, es verificada por este programa. Si la instruccin es vlida es enviada a Oracle, el cual enviar de regreso la respuesta a la instruccin; respuesta que puede ser transformada por el programa SQL*Plus para modificar su salida. Para que el programa SQL*Plus funcione en el cliente, el ordenador cliente debe haber sido configurado para poder acceder al servidor Oracle. En cualquier caso al acceder a Oracle con este programa siempre preguntar por el nombre de usuario y contrasea. Estos son datos que tienen que nos tiene que proporcionar el administrador (DBA) de la base de datos Oracle. Para conectar mediante SQL*Plus podemos ir a la lnea de comandos y escribir el texto sqlplus. A continuacin aparecer la pantalla:

Sistemas Autor:Diego Snchez

Pgina 31

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

En esa pantalla se nos pregunta el nombre de usuario y contrasea para acceder a la base de datos (informacin que deber indicarnos el administrador o DBA). Tras indicar esa informacin conectaremos con Oracle mediante SQL*Plus, y veremos aparecer el smbolo:

SQL> Tras el cual podremos comenzar a escribir nuestros comandos SQL. Ese smbolo puede cambiar por un smbolo con nmeros 1, 2, 3, etc.; en ese caso se nos indica que la instruccin no ha terminado y la lnea en la que estamos. Otra posibilidad de conexin consiste en llamar al programa SQL*Plus indicando contrasea y base de datos a conectar. El formato es: slplus usuario/contrasea@nombreServicioBaseDeDatos Ejemplo: slplus usr1/miContra@inicial.forempa.net En este caso conectamos con SQL*Plus indicando que somos el usuario usr1 con contrasea miContra y que conectamos a la base de datos inicial de la red forempa.net. El nombre de la base de datos no tiene porque tener ese formato, habr que conocer como es el nombre que representa a la base de datos como servicio de red en la red en la que estamos.

Versin grfica de SQL*Plus

Oracle incorpora un programa grfico para Windows para utilizar SQL*Plus. Se puede llamar a dicho programa desde las herramientas instaladas en el men de programas de
Sistemas Autor:Diego Snchez Pgina 32

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Windows, o desde la lnea de programas escribiendo sqlplusw. Al llamarle aparece esta pantalla:

. Como en el caso anterior, se nos solicita el nombre de usuario y contrasea. La cadena de Host es el nombre completo de red que recibe la instancia de la base de datos a la que queremos acceder en la red en la que nos encontramos. Tambin podremos llamar a este entorno desde la lnea de comandos utilizando la sintaxis comentada anteriormente. En este caso: slplusw usuario/contrasea@nombreServicioBaseDeDatos

Esta forma de llamar al programa permite entrar directamente sin que se nos pregunte por el nombre de usuario y contrasea.

iSQL*Plus

Es un producto ideado desde la versin 9i de Oracle. Permite acceder a las bases de datos Oracle desde un navegador. Para ello necesitamos tener configurado un servidor web. Oracle que permita la conexin con la base de datos. Utilizar iSQL*Plus es indicar una direccin web en un navegador, esa direccin es la de la pgina iSQL*Plus de acceso a la base de datos. Desde la pgina de acceso se nos pedir nombre de usuario, contrasea y nombre de la base de datos con la que conectamos (el nombre de la base de datos es el nombre con el que se la conoce en la red). Si la conexin es vlida aparece esta pantalla:

Sistemas Autor:Diego Snchez

Pgina 33

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

En esa pantalla en el apartado Introducir Sentencias, se escribe la sentencia que deseamos enviar. El botn Ejecutar hace que se valide y se enve a Oracle. Se pueden almacenar sentencias SQL usando el botn Examinar y cargar sentencias previamente guardadas mediante Cargar archivos de comandos.

ESTRUCTURA DEL LENGUAJE SQL

SELECT. Se trata del comando que permite realizar consultas sobre los datos de la base de datos. Obtiene datos de la base de datos. DML, Data Manipulation Language (Lenguaje de manipulacin de datos). Modifica filas (registros) de la base de datos. Lo forman las instrucciones INSERT, UPDATE, MERGE y DELETE. DDL, Data Definition Language (Lenguaje de definicin de datos).

Sistemas Autor:Diego Snchez

Pgina 34

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Permiten modificar la estructura de las tablas de la base de datos. Lo forman las instrucciones CREATE, ALTER, DROP, RENAME y TRUNCATE. Instrucciones de transferencia. Administran las modificaciones creadas por las instrucciones DML. Lo forman las instrucciones ROLLBACK, COMMIT y SAVEPOINT DCL, Data Control Language (Lenguaje de control de datos). Administran los derechos y restricciones de los usuarios. Lo forman las instrucciones GRANT y REVOKE.

Normas de escritura

En SQL no se distingue entre maysculas y minsculas. Da lo mismo como se escriba. El final de una instruccin lo calibra el signo del punto y coma Los comandos SQL (SELECT, INSERT,...) no pueden ser partidos por espacios o saltos de lnea antes de finalizar la instruccin. El intrprete SQL plus indicas Se pueden tabular lneas para facilitar la lectura si fuera necesario Los comentarios en el cdigo SQL comienzan por /* y terminan por */

Terminologa

SQL Structured Query Language o Lenguaje de Consultas Estructurado. Es el lenguaje que permite la comunicacin con el Sistema Gestor de Bases de Datos (Oracle en nuestro caso). El SQL es un lenguaje unificado Lo utilizan todo tipo de usuarios, desde el administrador de la base de datos, DBA, hasta el usuario final. El SQL es un lenguaje no procedimental. El usuario especifica Qu quiere, no Cmo ni Dnde conseguirlo. El SQL es relacionalmente completo. Permite la realizacin de cualquier consulta de datos. SQL= DDL + DML Las sentencias del SQL se clasifican como parte del DDL o del DML.

Sistemas Autor:Diego Snchez

Pgina 35

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Lenguaje de Definicin de Datos, DDL sentencias del SQL que permiten definir los objetos de la Base de Datos (create, revoke, grant, alter, etc.). Cuando se definen dichos objetos se almacenan en el diccionario de datos. Lenguaje de Manipulacin de Datos, DML sentencias del SQL que se utilizan para manejar los datos de la base de datos (select, insert, update, delete, etc). commit/rollback cada vez que se realiza alguna operacin en la base de datos se realiza no sobre la tabla en s, sino sobre una copia local de la misma. As, si queremos que los resultados de la modificacin se trasladen a la base de datos y perduren en el tiempo hay que confirmar dicha operacin con el comando commit. Tambin se puede impedir que los ltimos cambios lleguen a efectuarse con rollback, aunque existen algunas sentencias SQL que se 'autoconfirman' y no se pueden volver atrs. Diccionario de la Base de Datos Guarda la definicin de todos los objetos almacenados en la base de datos; sus caractersticas, restricciones, privilegios, relaciones entre ellos, etc.

ARQUITECTURA ORACLE

Todo el mundo puede conducir un automvil sin necesidad de conocer cmo funciona un motor de combustin interna y todos los subsistemas asociados a l. Pero entonces ciertos conceptos como aprovechamiento de la potencia, compresin, endurecimiento de la suspensin, motricidad, etc., le sern ajenos y nunca podr sacar lo mejor del automvil. Y si tiene algn problema se quedar tirado en la carretera. De la misma manera, no podremos aspirar a que nuestras aplicaciones de BD funcionen bien si no conocemos la arquitectura del motor de la BD, el servidor. Es indispensable conocer los factores y parmetros que influyen en el funcionamiento de nuestro SGBD para poder solucionar los problemas que se pueden plantear en cuanto nos salgamos de las aplicaciones estndares y bsicas de BD, o en cuanto tengamos algn problema. El siguiente curso aborda la arquitectura del SGBD Oracle y da una visin lo suficientemente profunda del mismo como para que podamos entender cmo funciona. Si tienes cualquier sugerencia o encuentras una errata escondida dmelo.

Sistemas Autor:Diego Snchez

Pgina 36

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Bases de Datos e Instancias

Estos son dos conceptos fundamentales para entender la arquitectura de Oracle. En trminos sencillos, una instancia de BD es un conjunto de procesos del servidor Oracle que tiene su propia rea global de memoria y una base de datos asociada a ellos.

Base de Datos

Una Base de Datos Oracle es un conjunto de datos almacenado y accesible segn el formato de tablas relacionales. Una tabla relacional tiene un nombre y unas columnas, su definicin. Los datos estn almacenados en las filas. Las tablas pueden estar relacionadas con otras. Una Base de Datos Oracle est almacenada fsicamente en ficheros, y la correspondencia entre los ficheros y las tablas es posible gracias a las estructuras internas de la BD, que permiten que diferentes tipos de datos estn almacenados fsicamente separados. Est divisin lgica se hace gracias a los espacios de tablas, tablespaces.

CREAR UN TABLESPACE

Un tablespace es el archivo donde se almacenarn las tablas y datos de usuario. No es ms que un archivo fsico donde oracle almacenar esos datos Ejemplo CREATE TABLESPACE MD_DATA DATAFILE 'mddata01.dbf' SIZE 1000M, 'mddata02.dbf' SIZE 1000M AUTOEXTEND ON NEXT 5M MAXSIZE 200000M; Sintaxis CREATE TABLESPACE [DATAFILE clause] [MINIMUM EXTENT integer[K|M]] [BLOCKSIZE integer [K]] [LOGGING|NOLOGGING] [DEFAULT storage_clause ] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY] where:tablespace is the name of the tablespace to be created

Sistemas Autor:Diego Snchez

Pgina 37

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

DATAFILE specifies the data file or data files that make up the tablespace MINIMUM EXTENT ensures that every used extent size in the tablespace is a multiple of the integer. Use Kor M to specify this size in kilobytes or megabytes. specifies that, by default, all tables, indexes, and partitions LOGGING within the tablespace have all changes written to redo. LOGGING is the default. specifies that, by default, all tables, indexes, and partitions NOLOGGING within the tablespace do not have all changes written to redo. NOLOGGING affects only some DML and DDL commands, for example, direct loads. specifies the default storage parameters for all objects created DEFAULT in the tablespace creation makes the tablespace unavailable immediately after creation OFFLINE specifies that the tablespace can be used to hold permanent PERMANENT objects specifies that the tablespace be used only to hold temporary TEMPORARY objects; for example, segments used by implicit sorts caused by an ORDER BY clause extent_management_clause specifies how the extents of the tablespace are managed. This clause is discussed in a subsequent section of this lesson. datafile_clause :== filename [SIZE integer[K|M] [REUSE] | REUSE ] [ autoextend_clause ] where: is the name of a data file in the tablespace filename specifies the size of the file. Use K or M to

Sistemas Autor:Diego Snchez

Pgina 38

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

SIZE specify the size in kilobytes or megabytes. allows the Oracle server to reuse an existing file REUSE enables or disables the automatic extension of autoextend_clause the data file. This clause is discussed in a subsequent section of this lesson.

ALTERAR UN TABLESPACE

Alterar el tamao de un tablespace

ALTER DATABASE DATAFILE '/mi/tablespace/datafile.dbf' RESIZE 300M; Alterar el tamao mximo alter database datafile 'mi/tablespace.dbf' autoextend on maxsize 1000M Aadir un datafile a un tablespace alter tablespace MI_TABLESPACE add datafile '/path/del/datafile.dbf' size 2048M AUTOEXTEND ON NEXT 50M MAXSIZE 4096M;

BORRAR UN TABLESPACE

DROP

TABLESPACE

tablespace_name

[INCLUDING

CONTENTS

[AND

DATAFILES] [CASCADE CONSTRAINTS]];

Los Espacios de Tablas, Tablespaces

Un espacio de tablas es una divisin lgica de la BD. Cada BD tiene al menos uno (SYSTEM). Un espacio de tablas puede pertenecer slo a una BD. Los espacios de tablas se utilizan para mantener juntos los datos de usuarios o de aplicaciones para facilitar su mantenimiento o mejorar las prestaciones del sistema.

Sistemas Autor:Diego Snchez

Pgina 39

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

De esta manera, cuando se crea una tabla se debe indicar el espacio de tablas al que se destina. Por defecto se depositan en el espacio de tablas SYSTEM, que se crea por defecto. Este espacio de tablas es el que contiene el diccionario de datos, por lo que conviene reservarlo para el uso del servidor, y asignar las tablas de usuario a otro. Lo razonable y aconsejable es que cada aplicacin tenga su propio espacio de tablas. Hay varias razones que justifican este modo de organizacin de las tablas en espacios de tablas: Un espacio de tablas puede quedarse offline debido a un fallo de disco, permitiendo que el SGBD contine funcionando con el resto. Los espacios de tablas pueden estar montados sobre dispositivos pticos si son de slo lectura. Permiten distribuir a nivel lgico/fsico los distintos objetos de las aplicaciones. Son una unidad lgica de almacenamiento, pueden usarse para aislar completamente los datos de diferentes aplicaciones. Oracle permite realizar operaciones de backup/recovery a nivel de espacio de tabla mientras la BD sigue funcionando. Cuando se crean se les asigna un espacio en disco que Oracle reserva inmediatamente, e utilice o no. Si este espacin inicial se ha quedado pequeo Oracle puede gestionar el crecimiento dinmico de los ficheros sobre los que se asientan los espacios de tablas. Esto elimina la posibilidad de error en las aplicaciones por fallos de dimensionamiento inicial. Los parmetros de crecimiento del tamao de los espacios de tablas se especifican en la creacin de los mismos. Se pueden ver los espacios de tablas definidos en nuestra BD con el comando SQL siguiente:

SQL> select * from user_tablespaces;

Dentro de cada espacio de tabla se pueden almacenar objetos de distinta naturaleza: tablas, ndices, etc. Pero no se pueden mezclar si ms. Necesitamos una manera de separarlos, y eso son los segmentos. Se pueden almacenar ms de un segmento por espacio de tabla. Un segmento est contenido en su totalidad en un espacio de tabla. Un segmento est constituido por un

Sistemas Autor:Diego Snchez

Pgina 40

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

conjunto de extensiones, que no son ms que grupos de bloques de disco ORACLE contiguos. Cuando se borra un segmento, el espacio es devuelto al espacio de tabla. Todos los datos de la BD estn almacenados en segmentos. Y existen 5 tipos de segmentos: De datos: almacenan las tablas. De ndices: permiten un acceso rpido a los datos dependiendo de la cantidad de los mismos (rboles B). Las consultas que slo referencian a columnas indexadas se resuelven en el ndice. Establecen un control de unicidad (los ndices son automticos cuando se definen claves primarias). Cada ndice ocupa un segmento independiente del segmento de datos y deberan estar en un espacio de tablas distinto al de los datos, para mejorar el rendimiento. De rollback: son objetos internos de la BD que permiten efectuar la restauracin de las transacciones no validadas asegurando la consistencia en lectura. La estructura de los registros de rollback es : Identificador de la transaccin. Direccin del bloque donde est la tabla. Nmero de fila. Nmero de columna. Valor del dato antiguo (antes de ser modificado). Son tan importantes que una BD no puede arrancar si no puede acceder al menos a un segmento de rollback. Si la BD tiene mltiples espacios de tablas, deben existir al menos dos segmentos de rollback y cada segmento de rollback debe tener al menos dos extensiones, reutilizables de manera cclica. Esto segmentos son un objeto compartido de la BD, aunque se puede asinar un segmento de rollback particular a una transaccin dada. Temporales: son creados por Oracle para un uso temporal cuando debe realizar una ordenacin que no le cabe en memoria, y en las operaciones: create index, order by, group by, distinct, union, intersect, minus. Son eliminados cuando la sentencia finaliza. De bootstrap: Se crea en SYSTEM y contiene definiciones del diccionario para sus tablas, que se cargan al abrir la BD. No requiere ninguna accin por parte del DBA. No cambia de tamao. La tabla que guarda la informacin de los segmentos de usuario es user_segments, y se puede visualizar la informacin sobre los segmentos con la sentencia SQL siguiente:

Sistemas Autor:Diego Snchez

Pgina 41

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

SQL> select * from user_segments;

FICHEROS

Cada espacio de tablas se compone de uno o ms ficheros en disco. Un fichero puede pertenecer slo a un espacio de tablas. Los ficheros reciben un tamao fijo en el momento de su creacin, y cuando se necesita ms espacio se deben aadir ms ficheros a espacio de tablas. Dividir los objetos de la BD entre mltiples espacios de tablas permiten que los objetos sean almacenados fsicamente en discos separados, dependiendo de donde estn los ficheros sobre los que se asientan.

INSTANCIAS

Para permitir el acceso a los datos, Oracle utiliza un conjunto de procesos que son compartidos por todos los usuarios. Adems, existen estructuras de memoria que son utilizadas para almacenar los datos ms recientemente solicitados a la BD. Una instancia de BD es el conjunto de estructuras de memoria y de procesos que acceden a los ficheros de datos. Los parmetros que determinan el tamao y composicin de una instancia estn almacenados en un fichero llamado init.ora. Este fichero es leido durante el arranque de la BD y puede ser modificado por el DBA. Cualquier modificacin de este fichero no tiene efecto hasta la siguiente vez que se arranque la BD. Las estructuras de la BD Oracle pueden ser divididas en tres clases: Aquellas que son internas a la BD, Aquellas que son internas a las reas de memoria (incluidas la memoria compartida y procesos), Aquellas que son externas a la BD.

Sistemas Autor:Diego Snchez

Pgina 42

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

ESTRUCTURAS INTERNAS DE LA BD

TABLAS Y COLUMNAS

Los datos son almacenados en la BD utilizando tablas. Cada tabla est compuesta por un nmero determinado de columnas. Las tablas propiedad del usuario SYS son llamadas tablas del diccionario de datos. Proveen el catlogo del sistema que permite que la BD se gestione a s misma. Las tablas se pueden relacionar entre ellas a travs de las columnas que las componen. La BD se puede utilizar para asegurar el cumplimiento de esas relaciones a travs de la integridad referencial, que se concreta en las restricciones de tablas.

RESTRICCIONES DE TABLAS

Una tabla puede tener asociadas restricciones que deben cumplir todas las filas. Entre las restricciones que se pueden fijar algunas reciben nombres especiales.: clave primaria, clave ajena. La clave primaria de una tabla est compuesta por las columnas que hacen a cada fila de la tabla una fila distinta. La clave ajena se utiliza para especificar las relaciones entre tablas. De modo que un conjunto de columnas declaradas como clave ajena de una tabla deben tener valores tomados de la clave primaria de otra tabla.

USUARIOS

Una cuenta de usuario no es una estructura fsica de la BD, pero est relacionada con los objetos de la BD: los usuarios poseen los objetos de la BD. Existen dos usuarios especiales: SYS y SYSTEM. El usuarios SYS posee las tablas del diccionario de datos; que almacenan informacin sobre el resto de las estructuras de la BD. El usuario SYSTEM posee las vistas que permiten acceder a las tablas del diccionario, para el uso del resto de los usuarios de la BD. Todo objeto creado en la BD se crea por un usuario, en un espacio de tablas y en un fichero de datos determinado. Toda cuenta de la BD puede estr unida a una cuenta del

Sistemas Autor:Diego Snchez

Pgina 43

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

S.O., lo que permite a los usuarios acceder a la cuenta de la BD sin dar la clave de acceso. Cada usuario puede acceder a los objetos que posea o a aquellos sobre los que tenga derecho de acceso.

ESQUEMAS

El conjunto de objetos de un usuario es conocido como esquema.

NDICES Un ndice es una estructura de la BD utilizada para agilizar el acceso a una fila de una tabla. Cada fila tiene un identificador de fila, ROWID, que determina el fichero, bloque y fila dentro del bloque donde est almacenada la fila. Cada entrada del ndice consite en un valor clave y una ROWID. Cada una de estas entradas se almacena en un rbol B+. Los ndices se crean automticamente cuando se define una restriccin UNIQUE o PRIMARY KEY.

Clusters Las tablas que son accedidas juntas frecuentemente pueden ser almacenadas juntas. Para ello se crea un cluster. De este modo se minimiza el nmero de E/S. Las columnas que relacionan las tablas de un cluster se llaman clave del cluster.

Vistas Conceptualmente, una vista puede considerarse como una mscara que se extiende sobre una o ms tablas, de modo que cada columna de la vista se corresponde con una o ms columnas de las tablas subyacentes. Cuando se consulta una vista, esta traspasa la consulta a las tablas sobre las que se asienta. Las vistas no se pueden indexar. Las vistas no generan almacenamiento de datos, y sus definiciones se almacenan en el diccionario de datos.

Sistemas Autor:Diego Snchez

Pgina 44

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Secuencias Las definiciones de secuencias se almacenan en el diccionario de datos. Son mecanismos para obtener listas de nmeros secuenciales.

PROCEDIMIENTOS Y FUNCIONES Un procedimiento es un bloque de cdigo PL/SQL, que se almacena en el diccionario de datos y que es llamado por las aplicaciones. Se pueden utilizar para implementar seguridad, no dando acceso directamente a determinadas tablas sino es a travs de procedimientos que acceden a esas tablas. Cuando se ejecuta un procedimiento se ejecuta con los privilegios del propietario del procedimiento. La diferencia entre un procedimiento y una funcin es que sta ltima puede devolver valores.

Paquetes, Packages Se utilizan para agrupar procedimientos y funciones. Los elementos dentro de los paquetes pueden ser pblicos o privados. Los pblicos pueden ser llamados por los usuarios, los privados estn ocultos a los usuarios y son llamados por otros procedimientos.

DISPARADORES, TRIGGERS Son procedimientos que son ejecutados cuando se procude un determinado evento en la BD. Se pueden utilizar para mejorar y reforzar la integridad y la seguridad de la BD.

Sinnimos Para identificar completamente un objeto dentro de una BD se necesita especificar el nombre de la mquina, el nombre del servidor, el nombre del propietario y el nombre del objeto. Para hacer transparente todo esto al usuario se pueden utilizar los sinnimos. stos apuntarn a los objetos y si el objeto cambia de lugar o propietario, slo habr que modificar el sinnimo. Existen sinnimos pblicos y privados. Los pblicos son conocidos por todos los usuarios de una BD. Los privados son locales a un usuario.

Sistemas Autor:Diego Snchez

Pgina 45

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

PRIVILEGIOS Y ROLES

Para que un objeto pueda ser accedido por un usuario debe de tener otorgado ese privilegio. Ejemplos de privilegios son INSERT, SELECT, UPDATE, EXECUTE, etc. Los roles son grupos de privilegios que pueden ser utilizados para facilitar la gestin de los privilegios. Los privilegios se pueden otorgar a un rol, y los roles pueden ser otorgados a mltiples usuarios.

SEGMENTOS, EXTENSIONES Y BLOQUES

Los segmentos son los equivalentes fsicos de los objetos que almacenan datos. El uso efectivo de los segmentos requiere que el DBA conozca los objetos que utiliza una aplicacin, cmo los datos son introducidos en esos objetos y el modo en que sern recuperados. Como los segmentos son entidades fsicas, deben estar asignados a espacios de tablas en la BD y estarn localizados en uno de los ficheros de datos del espacio de tablas. Un segmento est constituido por secciones llamadas extensiones, que son conjuntos contiguos de bloques Oracle. Una vez que una extensin existente en un segmento no puede almacenar ms datos, el segmento obtendr del espacio de tabla otra extensin. Este proceso de extensin continuar hasta que no quede ms espacio disponible en los ficheros del espacio de tablas, o hasta que se alcance un nmero mximo de extensines por segmento.

Segmento de Rollback Para mantener la consistencia en lectura y permitir deshacer las transacciones, Oracle debe tener un mecanismo para reconstruir la imgen previa a una transaccin incompleta. Oracle utiliza los segmentos de rollback para esto. Los segmentos de rollback pueden crecer tanto como sea necesario para soportar las transacciones.

Sistemas Autor:Diego Snchez

Pgina 46

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Estructuras de Memoria Internas Oracle mantiene dos estructuras principales de memoria: el rea Global de Programa, Program Global Area, PGA; y el rea Global del Sistema, System Global Area o tambin Shared Global Area, SGA. El PGA es la zona de memoria de cada proceso Oracle. No est compartida y contiene datos e informacin de control de un nico proceso. El SGA es la zona de memoria en la que la BD Oracle guarda informacin sobre su estado. Esta estructura de memoria est disponible para todos los procesos, por eso se dice que est compartida.

rea Global del Sistema, SGA Sirve para facilitar la transferencia de informacin entre usuarios y tambin almacena la informacin estructural de la BD ms frecuentemente requerida. La SGA se divide en varias partes:

Buffers de BD, Database Buffer Cache Es el cach que almacena los bloques de datos leidos de los segmentos de datos de la BD, tales como tablas, ndices y clusters. Los bloques modificados se llamas bloques sucios. El tamao de buffer cach se fija por el parmetro DB_BLOCK_BUFFERS del fichero init.ora. Como el tamao del buffer suele ser pequeo para almacenar todos los bloques de datos leidos, su gestin se hace mediante el algoritmo LRU.

Buffer Redo Log Los registros Redo describen los cmbios realizados en la BD y son escritos en los ficheros redo log para que puedan ser utilizados en las operaciones de recuperacin hacia adelante, roll-forward, durante las recuperaciones de la BD. Pero antes de ser escritos en los ficheros redo log son escritos en un cach de la SGA llamado redo log buffer. El servidor escribe peridicamente los registros redo log en los ficheros redo log. El tamao del buffer redo log se fija por el parmetro LOG_BUFFER.

Sistemas Autor:Diego Snchez

Pgina 47

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

rea de SQL Compartido, Shared SQL Pool En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas. Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es as, no la analiza y pasa directamente a ejecutar la que mantinene en memoria. De esta manera se premia la uniformidad en la programacin de las aplicaciones. La igualdad se entiende que es lexicografica, espacios en blanco y variables incluidas. El contenido de la zona de SQL compartido es: Plan de ejecucin de la sentencia SQL. Texto de la sentencia. Lista de objetos referenciados. Los pasos de procesamiento de cada peticin de anlisis de una sentencia SQL son: Comprobar si la sentencia se encuentra en el rea compartida. Comprobar si los objetos referenciados son los mismos. Comprobar si el usuario tiene acceso a los objetos referenciados. Si no, la sentencia es nueva, se analiza y los datos de anlisis se almacenan en la zona de SQL compartida. Tambin se almacena en la zona de SQL compartido el cach del diccionario. La informacin sobre los objetos de la BD se encuentra almacenada en las tablas del diccionario. Cuando esta informacin se necesita, se leen las tablas del diccionario y su informacin se guarda en el cach del diccionario de la SGA. Este cach tambin se administra mediante el algoritmo LRU. El tamao del cach est gestionado internamente por el servidor, pero es parte del shared pool, cuyo manao viene determinado por el parmetro SHARED_POOL_SIZE.

rea Global de Programa El Program Global Area es un rea de memoria utilizada por un proceso Oracle. Esta zona de memoria no se puede compartir.

Sistemas Autor:Diego Snchez

Pgina 48

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Estructuras de Proceso El servidor se vale de una serie de procesos que son el enlace entre las estructuras fsicas y de memoria. A continuacin se describen cada proceso y el papel que juega en la gestin de laBD. Todo esto se puede ver en la siguiente figura.

System Monitor, SMON El SMON es el supervisor del sistema y se encarga de todas las recuperaciones que sean necesarias durante el arranque. Esto puede ser necesario si la BD se par inesperadamente por fallo fsico, lgico u otras causas. Este proceso realiza la recuperacin de la instancia de BD a partir de los ficheros redo log. Adems lmpia los segmentos temporales no utilizados y compacta los huecos libres contiguos en los ficheros de datos. Este proceso se despierta regularmente para comprobar si debe intervenir.

Sistemas Autor:Diego Snchez

Pgina 49

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Process Monitor, PMON Este proceso restaura las transacciones no validadas de los procesos de usuario que abortan, liberando los bloqueos y los recursos de la SGA. Asume la identidad del usuario que ha fallado, liberando todos los recursos de la BD que estuviera utilizando, y anula la transaccin cancelada. Este proceso se despierta regularmente para comprobar si su intervencin es necesaria.

Database Writer, DBWR El proceso DBWR es el responsable de gestionar el contenido de los buffers de datos y del cach del diccionario. l lee los bloques de los ficheros de datos y los almacena en la SGA. Luego escribe en los ficheros de datos los bloques cuyo contenido ha variado. La escritura de los bloques a disco es diferida buscando mejorar la eficiencia de la E/S. Es el nico proceso que puede escribir en la BD. Esto asegura la integridad. Se encarga de escribir los bloques de datos modificados por las transacciones, tomando la informacin del buffer de la BD cuando se valida una transaccin. Cada validacin no se lleva a la BD fsica de manera inmediata sino que los bloques de la BD modificados se vuelcan a los ficheros de datos periodicamente o cuando sucede algn checkpoint o punto de sincronizain: grabacin diferida: Los bloques del buffer de la BD (bloques del segmento de rollback y bloques de datos) menos recientemente utilizados son volcados en el disco continuamente para dejar sitio a los nuevos bloques. El bloque del segmento de rollback se escribe SIEMPRE antes que el correspondiente bloque de datos. Mltiples transacciones pueden solapar los cambios en un slo bloque antes de escribirlo en el disco. Mientras, para que se mantenga la integridad y coherencia de la BD, todas las operaciones se guardan en los ficheros de redo log. El proceso de escritura es asncrono y puede realizar grabaciones multibloque para aumentar la velocidad.

Log Writer, LGWR El proceso LGWR es el encargado de escribir los registros redo log en los ficheros redo log. Los registros redo log siempre contienen el estado ms reciente de la BD, ya que

Sistemas Autor:Diego Snchez

Pgina 50

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

puede que el DBWR deba esperar para escribir los bloques modificados desde el buffer de datos a los ficheros de datos. Conviene tener en cuenta que el LGWR es el nico proceso que escribe en los ficheros de redo log y el nico que lee directamente los buffers de redo log durante el funcionamiento normal de la BD. Coloca la informacin de los redo log buffers en los ficheros de redo log. Los redo log buffers almacenan una copia de las transacciones que se llevan a cabo en la BD. Esto se produce: A cada validacin de transaccin, y antes de que se comunique al proceso que todo ha ido bien, Cuando se llena el grupo de buffers de redo log Cuando el DBWR escribe buffers de datos modificados en disco. As, aunque los ficheros de DB no se actualicen en ese instante con los buffers de BD, la operacin queda guardada y se puede reproducir. Oracle no tiene que consumir sus recursos escribiendo el resultado de las modificaciones de los datos en los archivos de datos de manera inmediata. Esto se hace porque los registros de redo log casi siempre tendrn un tamao menor que los bloques afectados por las modificaciones de una transaccin, y por lo tanto el tiempo que emplea en guardarlos es menor que el que empleara en almacenar los bloques sucios resultado de una transaccin; que ya sern trasladados a los ficheros por el DBWR. El LGWR es un proceso nico, para asegurar la integridad. Es asncrono. Adems permite las grabaciones multibloque.

Checkpoint, CKPT Este proceso escribe en los ficheros de control los checkpoints. Estos puntos de sincronizacin son referencias al estado coherente de todos los ficheros de la BD en un instante determinado, en un punto de sincronizacin. Esto significa que los bloques sucios de la BD se vuelcan a los ficheros de BD, asegurndose de que todos los bloques de datos modificados desde el ltimo checkpoint se escriben realmente en los ficheros de datos y no slo en los ficheros redo log; y que los ficheros de redo log tambin almacenan los registros de redo log hasta este instante. La secuencia de puntos de control se almacena en los ficheros de datos, redo log y control. Los checkpoints se producen cuando: Un espacio de tabla se pone inactivo, offline,

Sistemas Autor:Diego Snchez

Pgina 51

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Se llena el fichero de redo log activo, Se para la BD, El nmero de bloques escritos en el redo log desde el ltimo checkpoint alcanza el lmite definido en el parmetro LOG_CHECKPOINT_INTERVAL, Cuando transcurra el nmero de segundos indicado por el parmetro

LOG_CHECKPOINT_TIMEOUT desde el ltimo checkpoint. Est activo si el parmetro CHECKPOINT_PROCESS tiene un valor verdadero.

Archiver, ARCH El proceso archivador tiene que ver con los ficheros redo log. Por defecto, estos ficheros se reutilizan de manera cclica de modo que se van perdiendo los registros redo log que tienen una cierta antiguedad. Cuando la BD se ejecuta en modo ARCHIVELOG, antes de reutilizar un fichero redo log realiza una copia del mismo. De esta manera se mantiene una copia de todos los registros redo log por si fueran necesarios para una recuperacin. Este es el trabajo del proceso archivador.

Recoverer, RECO El proceso de recuperacin est asociado al servidor distribuido. En un servidor distribuido los datos se encuentran repartidos en varias localizaciones fsicas, y estas se han de mantener sincronizadas. Cuando una transaccin distribuida se lleva a cabo puede que problemas en la red de comunicacin haga que una de las localizaciones no aplique las modificaciones debidas. Esta transaccin dudosa debe ser resuelta de algn modo, y esa es la tarea del proceso recuperador. Est activo si el parmetro DISTRIBUTED_TRANSACTIONS tiene un valor distinto de 0.

Lock, LCK El proceso de bloqueo est asociado al servidor en paralelo.

ESTRUCTURAS EXTERNAS Por estructuras externas se entienden los ficheros que utiliza el servidor de BD, de los cuales ya se han ido contanto algunos aspectos, y otros se han ido intuyendo. Estos ficheros guardan informacin tanto de los datos almacenados en la BD como la necesaria para gobernar la propia BD.

Sistemas Autor:Diego Snchez

Pgina 52

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

FICHEROS DE LA BD En estos ficheros reside la informacin de la BD. Solo son modificados por el DBWR. A ellos se vuelcan los bloques sucios de la SGA cuando se hace una validacin o cuando sucede un checkpoint. Las validaciones de las transacciones no producen un volcado inmediato, sino lo que se conoce por un commit diferido. Toda actualizacin se guarda en los ficheros de redo log, y se lleva a la BD fsica cuando tenemos una buena cantidad de bloques que justifiquen una operacin de E/S. Almacenan los segmentos (datos, ndices, rollback) de la BD. Estn divididos en bloques (Bloque Oracle = c * Bloque SO), cada uno de los cuales se corresponde con un buffer del buffer cache de la SGA. En el bloque de cabecera no se guardan datos de usuario, sino la marca de tiempo del ltimo checkpoint realizado sobre el fichero.

Ficheros redo log En ellos se graba toda operacin que se efectue en la BD y sirven de salvaguarda de la misma. Tiene que haber por lo menos 2, uno de ellos debe estar activo, online, y se escribe en ellos de forma cclica. Existe la posibilidad de almacenar los distintos ficheros de redo log en el tiempo mediante el modo ARCHIVER. As, se puede guardar toda la evolucin de la BD desde un punto dado del tiempo. Una opcin es la utilizacin de archivos redo log multiplexados: Permite al LGWR escribir simultaneamente la misma informacin en mltiples archivos redo log. Se utiliza para protegerse contra fallos en el disco. Da una alta disponibilidad a los archivos redo log activos u online. Esto se hace definiendo el nmero de grupos y de miembros de archivos redo log que van a funcionar en paralelo: grupos: funcionan como ficheros redo log normales, uno de ellos est activo y el resto espera su turno. Su nombre lleva incorporado una numeracin. Deben contener todo el mismo nmero de miembros. Miembros: cada escritura de un registro redo log se lleva a cabo en todos los miembros del grupo activo en ese momento. Los miembros deben: Tener el mismo tamao y el mismo nmero de secuencia.

Sistemas Autor:Diego Snchez

Pgina 53

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Deben tener nombres similares y estar en diferentes discos para proteger contra fallos de una manera efectiva. Cuando se produce algn fallo en los ficheros de redo log o en el proceso LGWR: Si la escritura en un fichero redo log falla pero el LGWR puede escribir al menos en uno de los miembros del grupo, lo hace , ignorando el fichero inaccesible y registrando un fallo en un fichero de traza o alerta. Si el siguiente grupo no ha sido archivado (modo ARCHIVELOG) antes del cambio de grupo que lo pone activo, ORACLE espera hasta que se produzca el archivado. Si fallan todos los miembros de un grupo mientras el LGWR trata de escribir, la instancia se para y necesita recupecin al arrancar. Se pueden visualizar los nombres y estado de los ficheros de redo log:

SVRMGR> select group#, status, substr(member,1,60) from v$logfile; Tambin se pueden visualizar estadsticas de los ficheros redo log:

SVRMGR> select group#, sequence#, bytes, members, archived, 2 status, first_change#, first_time from v$logfile;

Ficheros de control Mantienen la informacin fsica de todos los ficheros que forman la BD, camino incluido; as como el estado actual de la BD. Son utilizados para mantener la consistencia interna y guiar las operaciones de recuperacin. Son imprescindibles para que la BD se pueda arrancar. Contienen: Informacin de arranque y parada de la BD. Nombres de los archivos de la BD y redo log. Informacin sobre los checkpoints. Fecha de creacin y nombre de la BD. Estado online y offline de los archivos. Debe haber mltiples copias en distintos discos, mnimo dos, para progerlos de los fallos de disco. La lista de los ficheros de control se encuentra en el parmetro CONTROL_FILES, que debe modificarse con la BD parada.

Sistemas Autor:Diego Snchez

Pgina 54

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Se puede componer una sentencia SQL que nos muestre todos los ficheros asociados a una BD. Esta es:

SQL> select 'control' tipo, substr(name,1,70) nombre from v$controlfile 2 unions all 3 select 'datos' tipo, substr(name,1,70) nombre from v$datafile 4 unions all 5 select 'redo log' tipo, substr(name,1,70) nombre from v$logfile 6 / Hasta aqu los tipos de ficheros que se suelen considerar fundamentales en la arquitectura del SGBD Oracle. Pero existen otros ficheros, que aunque no forman parte de la arquitectura Oracle resultan importantes en el uso del SGBD.

El Fichero INIT.ORA Como parte de la distribucin software, Oracle provee de un fichero de parmetros de inicializacin llamado init.ora. Este fichero contiene los parmetros del sistema Oracle y debe ser utilizado por el DBA para configurar el SGDB y adecuarlo a una determinada explotacin. Oracle lee este fichero durante el proceso de arranque para determinar el tamao de la SGA y encontrar los ficheros de control, entre otros menesteres. Como el fichero init.ora es fundamental para el arranque de la BD, debera ser copiado frecuentemente para protegerlo de posibles prdidas.

Ficheros de Traza Oracle crea ficheros de texto llamados de traza para ayudar en la diagnosis de problemas y en el ajuste del SGBD. Cada proceso del servidor escribe en un fichero de traza asociado cuando es necesario. Los procesos de usuarios tambin pueden tener asociados ficheros de traza. La situacin de estos ficheros de traza del sistema se especifica por el parmetro BACKGROUND_DUMP_DEST, y los de usuario por USER_DUMP_DEST. Oracle crea ficheros de traza automticamente cuando ocurre algn error. Un parmetro muy frecuentemente utilizado por los desarrolladores Oracle es el SQL_TRACE, que cuando est puesto a TRUE produce que toda sentencia SQL

Sistemas Autor:Diego Snchez

Pgina 55

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

ejecutada genere informacin en los ficheros de traza. Este parmetro se puede variar con el siguiente comando:

SQL> alter session set SQL_TRACE=TRUE; Session Altered. El directorio donde se depositan los ficheros de traza debe de examinarse con regularidad para controlar el tamao de los fichero alli depositados.

Ciclo de Ejecucin Para ilustrar el funcionamiento del servidor Oracle vamos a ver el ciclo de ejecucin de una sentencia de lectura y otra de actualizacin.

Ciclo de Lectura Las sentencias de lectura siguen el siguiente ciclo: El proceso cliente pasa la sentencia SQL (SELECT) al proceso servidor por medio de la SGA. Los procesos del servidor buscan en la zona de SQL compartido una versin ejecutable de la sentencia. Si la encuentran no tienen que procesarla. Se procesa la sentencia SQL y su versin ejecutable se coloca en la zona de SQL compartido. El proceso del servidor intenta leer los bloques de datos de la SGA. Si no estn, se han de leer del fichero de datos. Si los bloques estn en la SGA pero han sido modificados por otro usuario y esa modificacin no ha sido validada an, el proceso de servidor debe reconstruir la imagen de la fila a partir de los segmentos de rollback, para conseguir consistencia en lectura. El proceso servidor pasa los datos solicitados al proceso cliente.

Ciclo de Actualizacin Las sentencias de actualizacin siguen el siguiente ciclo: 1. El proceso cliente pasa la sentencia SQL (UPDATE) al proceso servidor por medio de la SGA. 2. Los procesos del servidor buscan en la zona de SQL compartido una versin ejecutable de la sentencia. Si la encuentran no tienen que procesarla.

Sistemas Autor:Diego Snchez

Pgina 56

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

3. Se procesa la sentencia SQL y su versin ejecutable se coloca en la zona de SQL compartido. 4. El proceso del servidor intenta leer los bloques de datos de la SGA. Si no estn, se han de leer del fichero de datos. 5. Se registra el valor antiguo de los datos en un segmento de rollback y se crea un registro redo log. 6. Se crea una copia de la transaccin en un registro redo log. 7. Se ejecuta la sentencia SQL modificando los datos, y se crea un registro redo log que as lo refleja. 8. El proceso usuario valida la transaccin (COMMIT), registrandose en un registro redo log. 9. El LGWR escribe los buffers del redo log en el disco. 10. El servidor indica al cliente que la operacin ha sido completada de manera satisfactoria. 11. Se registra la terminacin de la transaccin en un registro redo log. 12. Se libera la informacin del rollback, pues ya no va a necesitarse. 13. Si a partir del paso 6 el usuario cancela la transaccin (ROLLBACK), se puede utilizar la informacin de rollback para restablecer el valor original. 14. Si sucede algo que impida que la transaccin validada por el usuario pueda llevarse a cabo, se puede utilizar la informacin contenida en los registros redo log para rehacer la transaccin (a partir del paso 6). 15. Como ocurre con todas las transacciones, en algn momento el DBWR escribe en el archivo de datos la copia de los bloques de datos modificados que se encuentran en el buffer cache.

3 Configuracin

3.1 El Cdigo Oracle

Cuando el software Oracle se instala en un sistema, se crean subdirectorios y ficheros, dependientes todos ellos del S.O. Por ejemplo, en el S.O. Unix, todo los subdirectorios Oracle se encuentran colgando del directorio principal ORACLE_HOME. Todos estos subdirectorios contienen ficheros ejecutables y scripts que son cruciales para el

Sistemas Autor:Diego Snchez

Pgina 57

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

funcionamiento y la administracin del SGBD, y es lo que se conoce por el cdigo Oracle. Entre ellos, una herramienta nos va a ser fundamental en las tareas de adminstracin y puesta en marcha de la BD: server manager, svrmgr. Con ella son convertiremos en DBA, y para ejecutarla deberemos ser sus propietarios. La sentencia es la siguiente:

SVRMGR> connect internal Connected. Todas las operaciones de administracin deben comenzar por conectarse a la BD.

Arranque y Parada de la BD

Durante el arranque y parada de la BD se sucenden un conjunto de eventos que llevan a la BD por diferentes estados. Para que los usuarios puedan acceder a la BD el DBA necesita abrir la BD. El siguiente es un ejemplo de apertura de una BD llamada test.

SVRMGR> startup open test ORACLE instance started. Total System Global Area 4512688 bytes. Fixed Size Variable Size Database Buffers Redo Bufers Database mounted. Database opened. cuando se ejecuta el comando startup open la BD pasa por tres estados (nomount, mount y open) antes de estar disponible. El DBA puede arrancar la BD hasta uno de los estados con el comando startup: startup nomount, startup mount. A continuacin vamos a describir cada uno de los estados por los que pasa la BD en el proceso de arranque. nomount 39732 bytes. 4055164 bytes. 409600 bytes. 8192 bytes.

SVRMGR> startup open test

Sistemas Autor:Diego Snchez

Pgina 58

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

ORACLE instance started. Total System Global Area 4512688 bytes. Fixed Size Variable Size Database Buffers Redo Bufers 39732 bytes. 4055164 bytes. 409600 bytes. 8192 bytes.

Oracle lee el fichero init.ora, localiza los ficheros de control, crea e inicializa la SGA, y finalmente arranca todos los procesos Oracle. En este estado la instancia de BD est arrancada. Se deber llevar la BD al estado nomount cuando se est creando la BD o cuando se est restaurando un fichero de control despus de haberlo perdido. mount

SVRMGR> alter database mount; Statement processed. Oracle abre los ficheros de control para localizar los ficheros de datos y los redo log, pero no se realizan ninguna comprobacin en ellos en este momento. La instancia monta la BD y la bloquea, verificando que ninguna otra instancia ha montado la misma BD. Hay varias razones para querer tener la BD en el estado mount. En general, todas las sentencias SQL del tipo alter database se deben ejecutar en esta etapa. Algunas de las operaciones a realizar cuando la BD est montada son: efectuar recuperaciones, poner online/offline un fichero de datos, recolocar los ficheros de datos y redo log, crear un nuevo grupo o miembro redo log, o borrar un grupo o miembro redo log existente.

Open

SVRMGR> alter database open; Statement processed. Durante esta etapa, la instancia abre la BD, bloquea los ficheros de datos, y abre todos los ficheros redo log. Si la instancia abre la BD despus de una terminacin anormal, o despus de una caida, se ejecutar automticamente el proceso de recuperacin utilizando los ficheros redo log. Al final de esta etapa la BD est dispuesta para su uso normal.

Sistemas Autor:Diego Snchez

Pgina 59

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Para parar la BD el comando base es shutdown como se puede ver en el siguiente ejemplo:

SVRMGR> shutdown Database closed. Database dismounted. ORACLE instance shut down. Pero este comando se nos presenta con tres opciones: normal, immediate y abort.

shutdown normal Se impide el acceso a la BD, espera a que todos los usuarios completen todas sus peticiones y se desconecten del servidor. Purga todos los buffers de datos y cachs de redo log, actualizando los ficheros de datos y de redo log, se eliminan los bloqueos de ficheros, se completan las transacciones en marcha, se actualizan las cabeceras de ficheros, elimina los threads, libera los bloqueos de la BD por parte de la instancia, y sincroniza los ficheros de control y de datos. En resumen, la opcin normal cierran la BD, desmonta la BD y para la instancia con cuidado y es la opcin recomendada para parar la BD.

shutdown immediate En ciertas ocasiones puede ser necesario parar la BD de modo inmediato. Si es as, las sentencias en proceso son terminadas inmediatamente, cualquier transaccin no confirmada (uncommitted) es vuelta atrs (rolled back) y la BD es parada. La nica desventaja de utilizar esta opcin es que Oracle no espera a que los usuarios se desconecten. Sin embargo, la BD ser consistenta y no se necesitar recuperacin en el siguiente arranque.

shutdown abort En situaciones de emergencia, y cuando todo lo dems falla, se debe realizar una parada de este tipo. Por ejemplo, cuando un proceso de la instancia muere y la BD no puede pararse de modo normal o inmediato. Cuando se utiliza la opcin abort las sentencias SQL son terminadas bruscamente, y las transacciones no confirmadas no son vueltas

Sistemas Autor:Diego Snchez

Pgina 60

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

atrs. Parar la BD con la opcin abort requiere recuperacin en la siguiente vez que arranque la BD y esta opcin debe ser utilizada slo cuando no quede ms remedio.

Almacenamiento de Datos Los datos se almacenan en estacios de tablas, y un espacio de tabla es la entidad lgica que se corresponde con uno o ms ficheros fsicos. La principal razn de esta organizacin es el aumento de la flexibilidad a la hora de realizar operaciones con la BD. En esta seccin vamos a dar un repaso a las tareas de administracin relacionadas con los espacios de tablas y con los ficheros.

Espacios de Tablas y Ficheros Los espacios de tablas se utilizan para realizar tareas de gestin de espacio, controlar la disponibilidad de los datos y ejecutar copias de seguridad y recuperaciones parciales.

Gestin de Espacio El primer espacio de tablas es el SYSTEM. Este espacio de tablas debe estar disponible siempre durante el funcionamiento normal de la BD porque contiene el diccionario de datos. Despus de la creacin de la BD, se recomienda la creacin de otros espacios de tablas para que los datos de los usuarios puedan ser separados de los del diccionario de datos. Incluso, si varias apliaciones se van a ejecutar sobre la misma BD es recomendable que sus datos estn separados. Para crear un espacio de tablas se puede utilizar el comando create tablespace:

SVRMGR> create tablespace nombre_tablespace 2> datafile 'nombre_fichero' size 50M online; En el ejemplo anterior se ha creado un espacio de tablas de 50 Mb. de tamao. Cada espacio de tabla tiene un conjunto de parmetros de almacenamiento que controla su crecimiento: initial: tamao de la extensin inicial (10k). next: tamao de la siguiente extensin a asignar (10k). minextents: nmero de extensiones asignadas en el momento de la creacin del espacio de tablas (1).

Sistemas Autor:Diego Snchez

Pgina 61

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

maxextents: nmero mximo de extensiones. pctincrease: Porcentaje en el que crecer la siguiente extensin antes de que se asigne, en relacin con la ltima extensin utilizada. optimal: Tamao ptimo declarado para este espacio de tablas. pctused: porcentaje de utilizacin del bloque por debajo del cual Oracle considera que un bloque puede ser utilizado para insertar filas nuevas en l. Si el espacio de tablas necesita ms espacio despus de su creacin se puede alterar para aadir uno o ms ficheros. Para ello se puede utilizar el comando alter tablespace:

SVRMGR> alter tablespace nombre_tablespace 2> add datafile 'nombre_fichero' size 30M; Si se necesitara variar la localizacin de los ficheros asociados a un espacio de tablas se puede hacer con los comandos alter tablespace (el espacio de tables debe estar offline) o alter database (la BD debe estar montada pero no abierta). Antes de ejecutar los anteriores comandos los ficheros asociados al espacio de tablas deben de haber sido movidos a su nueva localizacin utilizando los comandos de los SO oportunos.

Poniendo los tablespaces offline Llevar a un espacio de tablas al estado offline significa que se impide el acceso a los datos que almacena. El espacio de tablas SYSTEM nunca puede estar offline. Las razones para poner un espacio de tablas offline pueden ser varias: un error de escritura en los ficheros que lo soportan, el mover los ficheros de sitio, etc. Depus de realizar estas operaciones hay que poner otra vez disponible el espacio de tablas, esto es on line Los espacios de tablas se pueden poner offline de tres modos: normal, temporary e immediate. Si no existe ningn error lo recomendable es poner el espacio de tablas offline usando el modo normal. As, se colocar un checkpoint en el espacio de tablas antes de ponerlo offline.

SVRMGR> alter tablespace nombre_tablespace offline normal; Si alguno de los ficheros est corrupto, la opcin normal fallar y se necesitar el modo temporary. La opcin immediate se utilizar slo cuando la BD est en modo ARCHIVELOG, ya que no se produce checkpoint alguno.

Sistemas Autor:Diego Snchez

Pgina 62

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Poniendo los ficheros offline No es normal poner los ficheros offline/online. Si un determinado fichero de datos se corrompe, se tendr que pone offline, repararlo y ponerlo online de nuevo. Esta operacin puede suponer sustituirlo por su copia de seguridad, lo que implicar ejecutar el comando recover datafile antes de poner el fichero online.

Segmentos, Extensiones y Bloques Los datos en la BD son almacenados fsicamente en bloques Oracle: la mnima unidad de espacio fsico, y es un mltiplo del bloque del SO (2 Kb usualmente). El tamao del bloque Oracle se fija por el parmetro DB_BLOCK_SIZE del fichero init.ora. Un tamao grande de bloque mejora la eficiencia del cache de E/S, pero el tamao de la SGA aumentar para contener los mismos DB_BLOCK_BUFFERS, lo que significa un problema de memoria. Una serie de bloques contiguos es una extensin, que es una unidad lgica de almacenamiento. Una serie de extensiones es un segmento. Cuando un objeto es creado, se reserva una extensin en su segmento. Cuando el objeto crezca, necesitar ms espacio y se reservarn ms extensiones. Cada segmento tiene un conjunto de parmetros de almacenamiento que controla su crecimiento: initial: tamao de la extensin inicial (10k). next: tamao de la siguiente extensin a asignar (10k). minextents: nmero de extensiones asignadas en el momento de la creacin del segmento (1). maxextents: nmero mximo de extensiones (99). pctincrease: Porcentaje en el que crecer la siguiente extensin antes de que se asigne, en relacin con la ltima extensin utilizada (50). pctfree: porcentaje de espacio libre para actualizaciones de filas que se reserva dentro de cada bloque asignado al segmento (10). pctused: porcentaje de utilizacin del bloque por debajo del cual Oracle considera que un bloque puede ser utilizado para insertar filas nuevas en l. Tablespace: nombre del espacio de tablas donde se crear el segmento.

Sistemas Autor:Diego Snchez

Pgina 63

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Cuando se disea una BD se ha de tener mucho cuidado a la hora de dimensionar la BD y prever el crecimiento de las tablas. A continuacin se hacen algunas consideraciones sobre la gestin del espacio para los diferentes segmentos.

Segmentos de Datos El espacio del diccionario de datos se suele mantener ms o menos constante, aunque es crtico que tenga suficiente espacio para crecer en el espacio de tablas SYSTEM. As, hay que tener cuidado de colocar las tablas de usuario, los ndices, segmentos temporales y los segmentos de rollback en otros espacios de tablas. Adems, es recomendable que el espacio de tablas SYSTEM est al 50% o 75% de su espacio disponible. Finalmente, asegurarse que los usuarios no tienen privilegios de escritura en el espacio de tablas SYSTEM. Las tablas crecen proporcionalmente con el nmero de filas, ya que se puede suponer que la longitud de las filas es constante.

Segmentos de ndice Los ndices crecen en tamao en mayor proporcin que las tablas asociadas si los datos en la tabla son modificados frecuentemente. La gestin del espacio es mejor si se mantienen los ndices de tablas grandes en espacios de tablas separados.

Segmentos de Rollback Los segmentos de rollback almacenan la imagen anterior a una modificacin de un bloque. La informacin en el segmento de rollback se utiliza para asegurar la consistencia en lectura, el rollback (el valor en el segmento de rollback se copia en el bloque de datos) y la recuperacin. Es importante comprender cual es el contenido de un segmento de rollback. No almacenan el bloque de datos modificado entero, slo la imagen previa de la fila o filas modificadas. La informacin del segmento de roolback consiste en varias entradas llamadas undo. Por ejemplo, si se inserta una fila en una tabla, el undo necesitar slo el rowid de la fila insertada, ya que para volver atrs la insercion slo hay que realizar un delete. En las operacin de actualizacin, se almacenar el valor antiguo de las

Sistemas Autor:Diego Snchez

Pgina 64

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

columnas modificadas. El segmento de rollback asegura que la informacin undo se guardan durante la vida de la transaccin. Un segmento de rollback como cualquier otro segmento consiste en una serie de extensiones. Sin embargo, la mayor diferencia entre un segmento de datos y otro rollback es que en este ltimo las extensiones se utilizan de manera circular. As, habr que tener cuidado a la hora de fijar el tamao del segmento de rollback para que la cabeza no pille a la cola. Segmentos Temporales Los segmentos temporales se crean cuando se efectuan las siguientes operaciones: Create Index Select con distinct, order by, union, intersect y minus. uniones no indexadas. Ciertas subconsultas correlacionadas. Si las tablas a ordenar son pequeas la ordenacin se realiza en memoria principal, pero si la tabla es grande se realiza en disco. El parmetro SORT_AREA_SIZE determina el lugar donde se hace la ordenacin. Incrementndole se reduce la creacin de segmentos temporales.

Configuracin de la BD Mientras se disea la BD hay que considerar la posible recuperacin de una caida, y las prestaciones de la BD, relacionando todo esto con las necesidades de la implantacin y los medios disponibles. La configuracin de la BD est relacionada con los ficheros de control, los ficheros redo log activos y los archivados.

Gestionando los Ficheros de Control Los ficheros de control contienen el esquema de la BD. Es uno de los ms importantes ficheros e imprescindible para el uso normal de la BD. As que daremos alguna pista para su gestin. El parmetro CONTROL_FILES del fichero init.ora contiene la lista de todos los ficheros de control. Cuando se arranca la BS, Oracle lee el fichero init.ora para determinar cuntos ficheros de control se usan en la BD y dnde estn. Durante la fase de montaje, se abren los ficheros de control para leer el esquema de la BD. Aunque

Sistemas Autor:Diego Snchez

Pgina 65

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Oracle escribe en todos los ficheros de control, slo lee el primero listado en el parmetro CONTROL_FILES. Para protegerlos contra fallos de almacenamiento, se sugiere que al menos existan dos ficheros de control, cada uno en un disco diferente, aunque es buena idea mantener ms copias en diferentes discos. Esto es una poltica de espejado que protege frente a fallos en disco. Si un disco falla y se pierden todos los ficheros en l, se puede seguir utilizando los ficheros de control de otros discos. Esto supone una pequea sobrecarga al sistema, ya que cada vez que se porduce un checkpoint o cambia el esquema de la BD, todos los ficheros de control son actualizados. Cuando se produce un fallo en algn disco y algn fichero de control se pierde hay que parar la BD con la opcin abort, copiar el fichero de control que queda en otro disco, editar el fichero init.ora para reflejar este cambio, y volver a levantar la BD. Si un fallo ha producido la prdida de todas las copias de los ficheros de control habr que recrearlos con el comando create controlfile. Si algunos de los parmetros MAXLOGFILES, MAXLOGMEMBERS, MAXLOGHISTORY, MAXDATAFILES y MAXINSTANCES vara habr que utilizar tambin el comando CREATE CONTROLFILE.

Gestionando los Ficheros Redo Log Activos Oracle proporciona la posibilidad de espejar los ficheros redo log activos. Mecanismo conocido como ficheros redo log multiplexados. Oracle necesita al menos dos grupos de fricheros redo log, cada uno con un miembro como mnimo. Oracle efectua escrituras en paralelo a cada miembro, pero si estn en el mismo disco, realmente la escritura se serializa. Otro aspecto a tener en cuenta es el tamao de los ficheros redo log. Si son muy pequeos, el LGWR deber cambiar de ficheros demasiado frecuentemente, lo que reduce su rendimiento. Por otro lado, si los ficheros redo log son demasiado grandes, se necesitar mucho tiempo en las recuperaciones, ya que se tendrn que recuperar muchas transacciones. Otro aspecto muy importante es la eleccin del nmero correcto de grupos, ya que disponer de demasiados pocos grupos puede acarrear problemas cuando estmos en modos ARCHIVELOG y tenemos una tasa de transacciones muy alta. Esto puede suponer que un grupo que todava est archivando por el proceso ARCH se convierta en

Sistemas Autor:Diego Snchez

Pgina 66

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

el grupo en el que el LGWR necesite escribir, lo que producira que la BD se parara, ya que el LGWR tienen que esperar a que el grupo est disponible, una vez que su contenido ha sido archivado. Para la mayora de las implantaciones, tener entre 2 y 10 grupos puede ser suficiente. El nmero de grupos no puede exceder de MAXLOGFILES, ni el nmero de miembros puede ser mayor que

MAXLOGMEMBERS.

TIPOS DE SENTENCIAS

Las sentencias SQL pertenecen a dos categoras principales: Lenguaje de Definicin de Datos, DDL y Lenguaje de Manipulacin de Datos, DML. Estos dos lenguajes no son lenguajes en s mismos, sino que es una forma de clasificar las sentencias de lenguaje SQL en funcin de su cometido. La diferencia principal reside en que el DDL crea objetos en la base de datos y sus efectos se pueden ver en el diccionario de la base de datos; mientras que el DML es el que permite consultar, insertar, modificar y eliminar la informacin almacenada en los objetos de la base de datos. Cuando se ejecutan las sentencias DDL de SQL, el SGBD confirma la transaccin actual antes y despus de cada una de las sentencias DDL. En cambio, las sentencias DML no llevan implcito el commit y se pueden deshacer. Existe pues un problema al mezclar sentencias DML con DDL, ya que estas ltimas pueden confirmar las primeras de manera involuntaria e implicita, lo que en ocasiones puede ser un problema. A continuacin se presenta una tabla con las sentencias SQL ms comunes, clasificadas segn el lenguaje al que pertenecen. Sentencia DDL Alter procedure Alter Table Objetivo

Recompilar un procedimiento almacenado. Aadir o redefinir una columna, modificar la asignacin de almacenamiento. Recoger estadsticas de rendimiento sobre los objetos de la BD para utilizarlas en el optimizador basado en costes.

Analyze

Sistemas Autor:Diego Snchez

Pgina 67

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Create Table Crear una tabla. Create Index Crear un ndice. Drop Table Drop Index Grant Truncate Revoke Sentencia DML Insert Delete Update Select Commit Rollback Eliminar una tabla. Eliminar un ndice. Conceder privilegios o papeles, roles, a un usuario o a otro rol. Eliminar todas las filas de una tabla. Retirar los privilegios de un usuario o rol de la base de datos. Objetivo Aadir filas de datos a una tabla. Eliminar filas de datos de una tabla. Modificar los datos de una tabla. Recuperar datos de una tabla. Confirmar como permamentes las modificaciones realizadas. Deshacer todas las modificaciones realizadas desde la ltima confirmacin.

SQL*Plus

La herramienta que nos proporciona ORACLE para interactuar con la base de datos se llama SQL*Plus. Bsicamente, es un intrprete SQL con algunas opciones de edicin y formateo de resultados. Antes de ver la manera de conectarse a SQL*Plus, conviene tener claros algunos conceptos: Usuario/Clave Para poder acceder a una base de datos gestionada por ORACLE debemos ser un usuario autorizado de la misma y conocer la palabra clave, password, asociada al usuario. Variable de ambiente ORACLE_SID Indica la base de datos con la que vamos a trabajar.

Sistemas Autor:Diego Snchez

Pgina 68

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Posibilidades de Edicin SQL*Plus almacena en un buffer la ltima sentencia SQL introducida. El buffer mantiene slo una sentencia cada vez, y si se introduce una nueva sentencia se sobreescribe sobre la anterior. La sentencia en el buffer puede ser recuperada para ejecutarla de nuevo con los comandos: RUN que visualiza la sentencia en el buffer antes de ejecutarla; / que ejecuta la sentencia sin visualizarla. SQL*Plus tambin nos permite editar la sentencia SQL alamacenada en el buffer mediante un sencillo (y limitado) editor en lnea, cuyos comandos se enumeran a continuacin: Comando APPEND texto Abreviatura A texto Descripcin Aade texto al final de la lnea. Cambia el contenido 'fuente' por el 'destino' Quita 'texto' de una lnea. Borra el buffer Borra una lnea. Inserta una o ms lneas. Inserta una lnea con 'texto'. Lista las lneas del buffer Lista la lnea n-sima. Lista la lnea actual. Lista la ltima lnea. Lista las lneas desde la m-sima a la n-sima.

CHANGE/fuente/destino C/fuente/destino CHANGE/texto CLEAR BUFFER DEL INPUT INPUT texto LIST LIST n LIST * LIST LAST LIST m n C/texto CL BUFF DEL I I texto L Lnn L* L LAST Lmn

Al contenido del buffer tambin se puede acceder desde el editor del Sistema Operativo. As, el buffer podr ser manipulado con las posibilidades del editor con el que estemos

Sistemas Autor:Diego Snchez

Pgina 69

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

acostumbrados a trabajar. Al salir del editor se devuelve el control al SQL*Plus. Para conseguir trabajar con el editor del Sistema Operativo basta con colocar la variable DEFINE_EDITOR y luego llamar al editor. SQL> define_editor=vi SQL> edit

Utilizacin de Ficheros

SQL*Plus considera dos tipos de ficheros: de spool y de comandos. Un fichero de spool almacena los resultados de una consulta (o varias) en un fichero con la extensin .lst (o lo manda a la impresora). Los comandos asociados con los ficheros spool son SPOOL fichero Manda el resultado de las consultas al fichero. SPOOL OUT Manda el resultado de las consultas a la impresora. SPOOL OFF Cierra el fichero de spool. EXIT Al salir de SQL*Plus se cierran los ficheros de spool. Los archivos de comandos almacenan comandos SQL y SQL*Plus para ser editado, almacenado y/o ejecutado; y tienen por defecto la extensin .sql : Para editarlo se puede utilizar el comando edit fichero. Para ejecutarlo se utilizar el comando START fichero o @fichero El SQL*Plus nos proporciona ms posibilidades en relacin con los ficheros de comandos, la comunicacin con el usuario final y la generacin de informes. Pero antes de ver este tipo de cosas, es mejor que sigamos profundizando en el conocimiento del lenguaje SQL. Al final del curso se puede se encuentra un captulo con algunas de las cosillas que quedan por contar del SQL*Plus.

Sistemas Autor:Diego Snchez

Pgina 70

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

CREACIN

La primera fase de cualquier base de datos comienza siempre con sentencias DDL, ya que antes de poder almacenar informacin debemos definir los objetos bsicos donde agrupar la informacin. Los objetos bsicos con que trabaja SQL son las tablas. Una tabla es un conjunto de celdas agrupadas en filas y columnas donde se almacenan elementos de informacin. Antes de llevar a cabo la creacin de una tabla conviene planificar: nombre de la tabla, nombre de cada columna, tipo y tamao de los datos almacenados en cada columna, informacin adicional, restricciones, etc. Hay que tener en cuenta tambin ciertas restricciones en la formacin de los nombres de las tablas: longitud mxima de 30 caracteres, no puede haber nombres de tabla duplicados, deben comenzar con un carcter alfabtico, permitir caracteres alfanumricos y el guin bajo '_', y Oracle no distingue entre maysculas y minsculas. La sintaxis del comando que permite crear una tabla es la siguiente: Examen de la sintaxis de la sentencia Create Table se pueden concluir que necesitamos conocer los distintos tipos de columna y las distintas restricciones que se pueden imponer al contenido de las columnas. Vayamos por partes.

TIPOS DE COLUMNAS

Existen varios tipos de datos en SQL. De esta manera, cada columna puede albergar una informacin de naturaleza distinta. Los tipos de datos ms comunes y sus caractersticas se resumen en la siguiente tabla. Tipo de Dato VARCHAR2(tamao) Descripcin Almacena datos de tipo carcter alfanumrico de longitud variable, con un tamao mximo de 2.000. Almacena datos de tipo carcter alfanumrico de longitud fija, con un tamao mximo de 255. Almacena datos de tipo carcter alfanumrico de

CHAR(tamao) LONG

Sistemas Autor:Diego Snchez

Pgina 71

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

longitud variable con un tamao mximo de hasta 2 Gb. NUMBER(dig,dec) Almacena datos numricos de dig dgitos, de los cuales dec son decimales. El tamao mximo es de 38 dgitos. Almacena fechas desde el 1-Ene-4712 AC hasta el 31Dic-4712 DC. Almacena datos de longitud variable, con un tamao mximo de 255 bytes. Almacena datos de longitud variable, con un tamao mximo de 2 Gb.

DATE

RAW(tamao)

LONG RAW

RESTRICCIONES

Las restricciones de los datos se imponen para asegurarnos que los datos cumplen con una serie de condiciones predefinidas para cada tabla. Estas restricciones ayudan a conseguir la integridad de referencia: todas las referencias dentro de una BD son vlidas y todas las restricciones se han cumplido. Las restricciones se van a definir acompaadas por un nombre, lo que permitir activarlas o desactivarlas segn sea el caso; o tambin mezcladas en la definiciones de las columnas de la tabla. A continuacin vamos a describir cada una de las restricciones mencionadas. NOT NULL Establece la obligatoriedad de que esta columna tenga un valor no nulo. Se debe especificar junto a la columna a la que afecta. Los valores nulos no ocupan espacio, y son distintos a 0 y al espacio en blanco. Hay que tener cuidado con los valores nulos en las operaciones, ya que 1 * NULL es igual a NULL. UNIQUE Evita valores repetidos en una columna, admitiendo valores nulos. Oracle crea un ndice automticamente cuando se habilita esta restriccin y lo borra al deshabilitarse. DEFAULT Establece un valor por defecto para esa columna, si no se le asigna ninguno. CHECK

Sistemas Autor:Diego Snchez

Pgina 72

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Comprueba que se cumpla una condicin determinada al rellenar esa columna. Esta condicin slo debe estar construida con columnas de esta misma tabla. PRIMARY KEY Establece el conjunto de columnas que forman la clave primaria de esa tabla. Se comporta como nica y obligatoria sin necesidad de explicitarlo. Slo puede existir una clave primaria por tabla. Puede ser referenciada como clave ajena por otras tablas. Crea un ndice automticamente cuando se habilita o se crea esta restriccin. En Oracle, los ndices son construidos sobre rboles B+. FOREIGN KEY Establece que el contenido de esta columna ser uno de los valores contenidos en una columna de otra tabla maestra. Esta columna marcada como clave ajena puede ser NULL. No hay lmite en el nmero de claves ajenas. La clave ajena puede ser otra columna de la misma tabla. Se puede forzar que cuando una fila de la tabla maestra sea borrada, todas las filas de la tabla detalle cuya clave ajena coincida con la clave borrada se borren tambin. Esto se consigue aadiendo la coletilla ON DELETE CASCADE en la definicin de la clave ajena. Seguidamente se presenta un ejemplo en el que se crean dos tablas, una de departamentos y otra de empleados: REM REM tabla departamento con un cdigo de departamento, un nombre y una REM localizacin. REM create table dep ( cod_dep number(3), nombre varchar2(15) not null, loc varchar2(10), constraint dep_pk primary key (cod_dep), constraint dep_loc check (loc in ('Valladolid', 'Boecillo', 'Cigales')) );

REM REM tabla empleado con un cdigo de empleado, un nombre, un oficio, un

Sistemas Autor:Diego Snchez

Pgina 73

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

REM jefe, una fecha de alta en la empresa, un salario mensual, una REM comisin y el cdigo del departamento donde trabaja. REM create table emp ( cod_emp number(3), nombre varchar2(10) not null, oficio varchar2(11), jefe number(3), fecha_alta date, salario number(10), comision number(10), cod_dep number(3), constraint emp_pk primary key (cod_emp), constraint emp_fk foreign key (cod_dep) references dep(cod_dep) on delete cascade, constraint emp_ck check (salario > 0) );

Comando Describe

Oracle nos proporciona un comando que resulta muy til cuando queremos conocer la estructura de una tabla, las columnas que la forman y su tipo y restricciones. Este comando toma una mayor importancia segn nos alejemos del momento de creacin de una tabla. La sintsis es la siguiente DESCRIBE tabla

Y un ejemplo de su utilizacin se puede ver al describir la definicin de las dos tablas creadas antes. Como no es una sentencia SQL no necesita el ';' al final. Tambin se puede abreviar como DESC. SQL> describe dep Name Null? Type

Sistemas Autor:Diego Snchez

Pgina 74

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

------------------------------- -------- ---COD_DEP NOMBRE LOC NOT NULL NUMBER(3) NOT NULL VARCHAR2(15) VARCHAR2(10)

SQL> desc emp Name Null? Type

------------------------------- -------- ---COD_EMP NOMBRE OFICIO JEFE FECHA_ALTA SALARIO COMISION COD_DEP NOT NULL NUMBER(4) NOT NULL VARCHAR2(10) VARCHAR2(10) NUMBER(4) DATE NUMBER(10) NUMBER(10) NUMBER(3)

Modificacin Despus de crear una tabla, a veces nos encontramos con que se necesita aadir una columna adicional o modificar la definicin de una columna existente. Esta operacin se puede realizar con el comando ALTER TABLE. Hay que tener en cuenta varios puntos: No es posible disminuir el tamao de un columna. En las modificaciones, los tipos anterior y nuevo deben ser compatibles, o la tabla debe estar vaca. La opcin ADD ... NOT NULL slo ser posible si la tabla est vaca. La opcin MODIFY ... NOT NULL slo podr realizarse cuando la tabla no contenga ninguna fila con valor nulo en la columna en cuestin. Por ejemplo la sentencia siguiente aade la fecha de nacimiento a la tabla de empleados. SQL> alter table emp add (fecha_nac date not null);

Tambin se puede querer modificar una tabla aadiendo o eliminando restricciones. En este caso el comando a utilizar ser

Sistemas Autor:Diego Snchez

Pgina 75

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

ALTER TABLE tabla {ADD | DROP} CONSTRAINT restriccin;

INSERCIN, ACTUALIZACIN Y BORRADO

Una vez que tenemos definida la estructura de una tabla se pueden insertan los datos, modificarlos o borrarlos de la tabla. Esta tarea entra dentro de las operaciones que se realizan con el lenguaje DML. Este lenguaje permite manipular los objetos de la base de datos, insertando, modificando y/o borrando el contenido de las tablas. Hay que recordar que estas sentencias no son 'autoconfirmadas' y requieren de la sentencia COMMIT para que sus efectos perduren en el tiempo, o de la sentencia ROLLBACK para deshacer los cambios efectuados. A continuacin vamos a estudiar tres de las sentencias DML ms comunes.

Insercin El comando que permite insertar filas en las tablas es el siguiente. INSERT INTO tabla [({columna,}*)] VALUES ({expresin,}+);

Slo especificaremos las columnas donde insertar y su orden cuando no insertemos datos en todas ellas o no lo hagamos en el mismo orden en que definimos la tabla. La asociacin columna-valor es posicional. Los valores deben cumplir con los tipos de datos definidos. Los valores de tipo caracter y fecha deben ir encerrados entre comillas simples, (''). A continuacin se puede ver la insercin de filas en las tablas de ejemplo.

REM insertar filas en la tabla dep insert into dep values (100,'Administracion','Valladolid'); insert into dep values (200,'I+D','Boecillo'); insert into dep values (300,'Produccion','Cigales');

REM insertar filas en la tabla emp insert into emp values (101,'Cano','Presidente',null,'3-FEB-96',450000,null,100);

Sistemas Autor:Diego Snchez

Pgina 76

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

insert into emp values (102,'Roncal','Director',101,'3-FEB-96',350000,null,100); insert into emp values (103,'Rueda','Secretario',102,'17-MAR-96',175000,null,100); insert into emp values (104,'Martin','Contable',102,'17-MAR-96',235000,null,100); insert into emp values (105,'Sanz','Comercial',101,'17-MAR-96',150000,10,100); insert into emp values (106,'Lopez','Comercial',101,'21-MAR-96',150000,15,100); insert into emp values (201,'Perez','Director',101,'4-JUN-96',350000,null,200); insert into emp values (202,'Sastre','Analista',201,'8-JUN-96',300000,null,200); insert into emp values (203,'Garcia','Programador',202,'8-JUN-96',225000,null,200); insert into emp values (204,'Mateo','Programador',202,'8-JUN-96',200000,null,200); insert into emp values (301,'Yuste','Director',101,'3-OCT-96',350000,null,300); insert into emp values (302,'Recio','Analista',301,'4-FEB-97',300000,null,300); insert into emp values (303,'Garcia','Programador',302,'4-FEB-97',210000,null,300); insert into emp values (304,'Santana','Programador',302,'4-FEB-97',200000,null,300);

Actualizacin Otra de las operaciones ms comunes es la modificacin de la informacin almacenada en las tablas. Para ello se utiliza el comando UPDATE cuya sintaxis se muestra a continuacin. UPDATE tabla SET {columna = expresin,}+ [WHERE condicin];

Sistemas Autor:Diego Snchez

Pgina 77

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Se especificar en la clusula SET las columnas que se actualizarn y con qu valores. La clusula WHERE indica las filas con las que se va a trabajar. Si se omite la actualizacin afectar a todas las filas de la tabla.

BORRADO

Con insertar y modificar, la otra operacin que completa el trio es la de borrado de filas. La sintaxis es la que sigue: DELETE FROM tabla [WHERE condicin];

Borrar todas las filas que cumplan la condicin especificada en la clusula WHERE. Si esta clusula no se fija, se borrarn todas las filas de la tabla. Aqu cabe decir que aunque con DELETE borremos todas las filas de una tabla, no borramos la definicin de la tabla del diccionario y podemos insertar datos posteriormente en la tabla. Esta es una diferencia con la sentencia DROP TABLE, que produce la eliminacin tanto del contenido de la tabla como de la definicin de la misma.

SELECCIN

La recuperacin de los datos en el lenguaje SQL se realiza mediante la sentencia SELECT, seleccionar. Esta sentencia permite indicar al SGBD la informacin que se quiere recuperar. Esta es la sentencia SQL, con diferencia, ms habitual. La sentencia SELECT consta de cuatro partes bsicas: 1. La clusula SELECT seguida de la descripcin de lo que se desea ver, los nombres de las columnas a seleccionar. Esta parte es obligatoria. 2. La clusula FROM seguida de la especificacin de las tablas de las que se han de obtener los datos. Esta parte es obligatoria. 3. La clusula WHERE seguida por un criterio de seleccin, una condicin. Esta parte es opcional. 4. La clusula ORDER BY seguida por el criterio de ordenacin. Esta parte es opcional. 5. Una primera aproximacin a la sintaxis de la sentencia SELECT puede mostrarnos la siguiente expresin:

Sistemas Autor:Diego Snchez

Pgina 78

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Como una primera utilizacin de la sentencia SELECT podemos utilizarla para ver todas las tablas que tenemos en la base de datos. SQL> select table_name from user_tables;

TABLE_NAME -----------------------------DEP EMP

Un breve anlisis de la sentencia anterior nos permite observar que hemos consultado sobre la columna llamada table_name almacenada en la tabla user_tables, que es la tabla que guarda la informacin sobre todas las tablas de cada usuario.

Seleccin de Columnas Las columnas a seleccionar se enumeran sin ms en la clusula SELECT. Si se desea seleccionar todas las columnas de una tabla se puede hacer enumerando a todas las columnas o colocando un asterisco, *, en su lugar. Cuando se consulta una base de datos, los nombres de las columnas se usan como cabeceras de presentacin. Si ste resulta demasiado largo, corto o crptico, puede cambiarse con la misma sentencia SQL de consulta, creando un alias de columna. SQL> select nombre "Departamento", loc "Est en" from dep;

Departamento

Esta en

--------------- ---------Administracion Valladolid I+D Produccion Boecillo Cigales

Clusula FROM La clusula FROM define las tablas de las que se van a seleccionar las columnas.

Sistemas Autor:Diego Snchez

Pgina 79

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Se puede aadir al nombre de las tablas el usuario propietario de las mismas de la forma usuario.tabla. De esta manera podemos distinguir entre las tablas de un usuario y otro. Oracle siempre considera como prefijo el nombre del propietario de las tablas, aunque no se lo indiquemos. De esta forma dos o ms usuarios pueden tener tablas que se llamen igual sin que surjan conflictos. Si quisiramos acceder a las filas de la tabla dep del usuario jperez, (ademas de tener privilegios de lectura sobre esa tabla) deberamos escribir la siguiente sentencia SQL: SQL> select * from jperez.dep;

Tambin se puede asociar un alias a las tablas para abreviar los nombres de las tablas. Un ejemplo se puede ver en la sentencia SQL siguiente: SQL> select d.nombre from dep d;

Clusula WHERE Hasta ahora hemos visto como puede utilizarse la sentencia SELECT para recuperar todas las columnas o un subconjunto de ellas de una tabla. Pero este efecto afecta a todas las filas de la tabla, a menos que especifiquemos algo ms en la clusula WHERE. Es aqu donde debemos proponer la condicin que han de cumplir todas las filas para salir en el resultado de la consulta. La complejidad del criterio de bsqueda es prcticamente ilimitada, y en l se pueden conjugar operadores de diversos tipos con funciones de columnas, componiendo expresiones ms o menos complejas.

Operadores de Comparacin Operador Operacin = Igualdad Ejemplo select * from emp where cod_dep = 100; select * from emp where cod_dep != 100; select * from emp where cod_dep < 200; select * from emp where

!=, <>, ^= Desigualdad

< >

Menor que Mayor que

Sistemas Autor:Diego Snchez

Pgina 80

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

cod_dep > 200; <= Menor o igual que select * from emp where cod_dep <= 200; select * from emp where cod_dep >= 200;

>=

Mayor o igual que

in

Igual a cualquiera de los miembros select * from emp where entre parntesis cod_dep in (100, 300);

not in

Distinto a cualquiera de los miembros select * from emp where entre parntesis cod_dep not in (200); select * from emp where

between

Contenido en el rango

cod_emp between 100 and 199;

not between

select * from emp where Fuera del rango cod_emp not between 100 and 199; Contiene la cadena 'abc' a partir del segundo carcter y luego cualquier cadena de caracteres select * from emp where nombre like 'Ma%';

like '_abc%'

Operadores de Aritmticos Operador Operacin Ejemplo + Suma select nombre, salario+comision from emp where oficio='VENDEDOR'; select nombre from emp where sysdate-fecha_alta > 365; select nombre, salario*12 from emp; select nombre, salario/31 from emp;

* /

Resta Producto Divisin

Sistemas Autor:Diego Snchez

Pgina 81

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Operadores de Cadenas de Caracteres Operador || Operacin Concatenacin Ejemplo select nombre||oficio from emp;

Clusula ORDER BY Se utiliza para especificar el criterio de ordenacin de la respuesta a la consulta. Por defecto la ordenacin es ascendente, aunque se puede especificar un orden descendente. La ordenacin se puede establecer sobre el contenido de columnas o sobre expresiones con columnas. A continuacin se puede ver un ejemplo de uso de la clusula ORDER BY en la que quiere obtener un listado de los empleados ordenado de manera descendente por su salario y en caso de igualdad de salario, ordenado ascendentemente por su nombre. SQL> select nombre, salario from emp order by salario desc, nombre;

NOMBRE

SALARIO

---------- ---------Cano Perez Roncal Yuste Recio Sastre Martin Garcia Garcia Mateo Santana Rueda Lopez Sanz 450000 350000 350000 350000 300000 300000 235000 225000 210000 200000 200000 175000 150000 150000

14 rows selected.
Sistemas Autor:Diego Snchez

Pgina 82

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Clusula DISTINCT Cuando se realiza una consulta sobre una tabla en la que se extrae informacin de varias columnas, puede ocurrir que, si no incluimos la/s columna/s que forman la clave principal, obtengamos filas repetidas en la respuesta. Si este comportamiento no nos resulta satisfactorio podemos utilizar la clusula DISTINCT para eliminar las filas duplicadas obtenidas como respuesta a una consulta. Podemos ver como funciona en el siguiente ejemplo, en el que preguntamos por los distintos oficios de nuestros empleados. SQL> select oficio from emp;

Sin utilizar la clusula DISTINCT obtendremos la siguiente respuesta

Funciones Existen en SQL muchas funciones que pueden complementar el manejo de los datos en las consultas. Se utilizan dentro de las expresiones y actuan con los valores de las columnas, variables o constantes. Se pueden incluir en las clsulas SELECT, WHERE y ORDER BY. Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de funciones para cada tipo de datos: Aritmticas, de cadenas de caracteres, de manejo de fechas, de conversin, otras, de grupo.

Funciones Aritmticas Funcin ABS(n) Cometido Calcula el valor absoluto de n. Calcula CEIL(n) el valor entero o Ejemplo select abs(-15) from dual; select from dual; floor(15.7) ceil(15.7) Resultado 15

inmediatamente igual a n.

superior

16

FLOOR(n)

Calcula

el

valor

entero select

inmediatamante inferior o igual from dual;

15

Sistemas Autor:Diego Snchez

Pgina 83

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

a n. MOD(m,n) Calcula el resto resultante de select dividir m entre n. mod(11,4) 3

from dual; power(3,2)

POWER(m,n)

Calcula la potencia n-esima de select m. Calcula el redondeo de m a n

from dual; select round(123.456,1) from dual; select sqrt(4) from dual; n select ser trunc(123.456,1) from dual; el signo de n, select from dual; sign(-12)

ROUND(m,n)

decimales. Si n<0 el redondeo se efectua a por la izquierda del punto decimal.

123.5

SQRT(n)

Calcula la raz cuadrada de n. Calcula m truncado (n puede a

TRUNC(m,n) decimales negativo). Calcula SIGN(n)

123.4

devolviendo -1 si n<0, 0 si n=0 y 1 si n>0.

-1

Funciones de Cadenas de Caracteres Funcin Cometido Devuelve el carcter CHR(n) cuyo valor codificado es n. Devuelve el ASCII(cad) valor de cad. CONCAT(cad1,cad2) Devuelve cad1 ascii select ascii('A') from dual; select select dual; chr(65) from Ejemplo Resultado

65

Cano

es

concat(concat(nombre,' Presidente, etc.

Sistemas Autor:Diego Snchez

Pgina 84

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

concatenada es '),oficio) from emp; con Esta funcin es cad2.

esquivalente al operador ||. Devuelve la cadena cad con LOWER(cad) sus todas select letras lower('MinUsCulAs') minusculas

convertidas from dual; a minsculas. Devuelve la cadena cad con UPPER(cad) sus todas select letras upper('maYuSCulAs') MAYUSCULAS

convertidas from dual; a maysculas. Devuelve cad con el INITCAP(cad) primer caracter en maysculas. Devuelve cad1 LPAD(cad1,n,cad2) con lpad('P',5,'*') ****P select initcap('isabel')

from dual;

Isabel

longitud n, select y ajustada a from dual; la derecha, rellenando

Sistemas Autor:Diego Snchez

Pgina 85

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

por izquierda con cad2. Devuelve cad1

la

con

longitud n, y ajustada a RPAD(cad1,n,cad2) la izquierda, rellenando por la select from dual; rpad('P',5,'*')

P****

derecha con cad2. Devuelve cad en la que cada select diego

ocurrencia

REPLACE(cad,ant,nue) de la cadena replace('digo','i','ie') ant ha sido from dual; sustituida por la

cadena nue. Devuelve la sudcadena de SUBSTR(cad,m,n) cad select substr('ABCDEFG',3,2) CD from dual;

compuesta por n

caracteres a partir de la posicion m. Devuelve la LENGTH(cad) longitud de cad.

select

length('cadena')

from dual;

Sistemas Autor:Diego Snchez

Pgina 86

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Funciones de Manejo de Fechas Funcin Cometido Devuelve la SYSDATE fecha y hora select sysdate from dual; actuales. Devuelve la ADD_MONTHS(d,n) fecha d select add_months(sysdate,4) 14-JUL-97 Ejemplo Resultado 14-MAR97

incrementada from dual; en n meses. Devuelve la

LAST_DAY(d)

fecha ltimo

del select last_day(sysdate) from 31-MARda dual; 97

del mes de d. Devuelve la MONTHS_BETWEEN(d1, d2) diferencia en select meses entre months_between(sysdate,'01- 2.43409424 las fechas d1 JAN-97') from dual; y d2. Devuelve la fecha NEXT_DAY(d,cad) del next_day(sysdate, 16-MAR97

primer da de select la

semana 'sunday') from dual;

cad despus de la fecha d.

Funciones de Conversin de Tipos Funcin TO_NUMBER(cad,fmto) Cometido Convierte Ejemplo la select Resultado 124345

cadena cad a un to_number('12345')

Sistemas Autor:Diego Snchez

Pgina 87

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

nmero, opcionalmente acuerdo con de el

from dual;

formato fmto. Convierte la fecha d a una cadena de TO_CHAR(d, fmto) caracteres, opcionalmente acuerdo con de el select to_char(sysdate) from dual;

'14-MAR97'

formato fmto. Convierte la

cadena cad de tipo TO_DATE(cad,fmto) varchar2 a fecha, select opcionalmente acuerdo con to_date('1- 01-JAN-

de JAN-97') from dual; 97 el

formato fmto. Con las fechas pueden utilizarse varios formatos. Estos formatos permiten modificar la presentacin de una fecha. En la siguiente tabla se presentan algunos formatos de fecha y el resultado que generan.

Mscaras de Formato Numricas Formato cc scc Cometido Valor del siglo. Ejemplo select to_char(sysdate,'cc') Resultado 20

from dual; select

y,yyy sy,yyy

Ao con coma, con o sin signo. Ao sin signo con

to_char(sysdate,'y,yyy') from 1,997 dual; select to_char(sysdate,'yyyy') from dual; select

yyyy yyy yy y q

cuatro, tres, dos o un dgitos. Trimestre.

1997

to_char(sysdate,'q') 1

Sistemas Autor:Diego Snchez

Pgina 88

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

from dual; ww w Nmero de la semana select to_char(sysdate,'ww') del ao o del mes. Nmero del mes. from dual; select to_char(sysdate,'mm') from dual; 11

mm

03

ddd dd d

Nmero del da del ao, select to_char(sysdate,'ddd') del mes o de la semana. from dual; to_char(sysdate,'hh')

073

hh hh12 La hora en formato 12h. select hh24 mi o 24h. Los minutos de la hora. Los segundos dentro del ss sssss minuto, o desde las 0 horas.

from dual; select to_char(sysdate,'mi')

12

from dual; select to_char(sysdate,'sssss') from dual;

15

44159

Mscaras de Formato de Caracteres Formato Cometido syear year Ejemplo select Ao en Ingls to_char(sysdate,'syear) from dual; o Nombre del mes o su select abreviatura letras. Nombre del da de la day dy semana o su abreviatura de tres letras. a.m. p.m. b.c. a.d. El espacio del da. Indicador respecto del al de tres to_char(sysdate,'month') from dual; select to_char(sysdate,'day') from dual; select to_char(sysdate,'a.m.') from dual; ao select to_char(sysdate,'b.c.') del from dual; march Resultado nineteen ninety-seven

month mon

friday

p.m.

a.d.

Sistemas Autor:Diego Snchez

Pgina 89

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

nacimiento de Cristo.

Otras Funciones Funcin DECODE(var, val1, cod1, val2, cod2, ..., defecto) Cometido Convierte el Ejemplo select decode(oficio, Resultado

valor de var, de acuerdo con la codificacin. Devuelve el

'Presidente', 'P', 'Director', P, D, X, ... 'D', 'X') from emp;

GREATEST(exp1, exp2, ...)

mayor valor de sin ejemplo. una lista. Devuelve el

sin ejemplo.

LEAST(cad,fmto)

menor valor de sin ejemplo. una lista. Devuelve la

sin ejemplo.

expresin exp si select NVL(val, exp) val es NULL, y salario+nvl(comision,0) val si en otro from emp; caso.

450000, 350000, ...

Clusula GROUP BY SQL nos permite agrupar las filas resultado de una consulta en conjuntos y aplicar funciones sobre esos conjuntos de filas. La sintaxis es la siguiente: En la clusula GROUP BY se colocan las columnas por las que vamos a agrupar. Y en la clusula HAVING se especifica la condicin que han de cumplir los grupos para pasar al resultado. La evaluacin de las diferentes clusulas en tiempo de ejecucin se efecta en el siguiente orden: WHERE filtra las filas GROUP BY crea una tabla de grupo nueva
Sistemas Autor:Diego Snchez

Pgina 90

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

HAVING filtra los grupos ORDER BY clasifica la salida Un ejemplo de utilizacin de la seleccin de grupos puede ser seleccionar los empleados agrupados por su oficio. Un primer intento de consulta es el siguiente: SQL> select nombre, oficio from emp group by oficio;

select nombre, oficio from emp * ERROR at line 1: ORA-00979: not a GROUP BY expression

Se presenta un error debido a que cuando se utiliza GROUP BY, las columnas implicadas en el SELECT y que no aparezcan en la clusula GROUP BY deben tener una funcin de agrupamiento. En otras palabras, la columna nombre debe tener una funcin de agrupamiento que actue sobre ella (max, min, sum, count, avg). Si no puede ser as, deber llevar dicha columna a la clusula GROUP BY. De nuevo, el ejemplo quedar as: SQL> select count(nombre), oficio from emp group by oficio;

Las funciones de agrupamiento que se pueden utilizar son las siguientes. Funciones de Agrupamiento Funcin COUNT(col) Cometido Ejemplo count(nombre),oficio

Cuenta el nmero de filas select agrupadas. Calcula el valor medio de

from emp group by oficio; select avg(salario),oficio

AVG(col)

todos

los

valores

de

la

columna col. Calcula el valor mximo de MAX(col) todos los valores de la

from emp group by oficio;

select

max(salario),oficio

columna col. MIN(col)

from emp group by oficio; min(salario),oficio

Calcula el valor mnimo de select todos los valores de

la from emp group by oficio;

Sistemas Autor:Diego Snchez

Pgina 91

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

columna col. SUM(col) Calcula la suma de los valores select sum(salario), oficio de la columna col. Calcula la desviacin tpica de STDDEV(col) los valores de la columna col select stddev(salario), oficio sin tener en cuenta los valores from emp group by oficio; nulos. Calcula la varianza de los VARIANCE(col) valores de la columna col sin tener en cuenta los valores nulos. select variance(salario), from emp group by oficio;

oficio from emp group by oficio;

Hay que tener en cuenta que los valores nulos no participan en el clculo de las funciones de conjuntos. Estas funciones se pueden utilizar con las clusulas DISTINCT y ALL. Tambin se pueden utilizar aunque no realicemos agrupacin alguna en la consulta, considerando a toda la tabla como un grupo. SQL> select count(*) from emp;

COUNT(*)

Expresiones con Sentencias Select El resultado de cada consulta es un conjunto de filas. Y con conjuntos se pueden realizar tres operaciones tpicas: la unin, la interseccin y la diferencia. Unin, UNION Combina todas las filas del primer conjunto con todas las filas del segundo. Cualquier fila duplicada se reducir a una sla. Interseccin, INTERSECT Examinar las filas de los conjuntos de entrada y devolver aquellas que aparezcan en ambos. Todas las filas duplicadas sern eliminadas antes de la generacin del conjunto resultante. Diferencia, MINUS

Sistemas Autor:Diego Snchez

Pgina 92

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Devuelve aquellas filas que estn en el primer conjunto pero no en el segundo. Las filas duplicadas del primer conjunto se reducirn a una fila nica antes de empezar la comparacin con el segundo conjunto.

Reglas para el Manejo de los Operadores de Conjuntos: Pueden ser encadenados en cualquier combinacin, siendo evaluados de izquierda a derecha. No existe jerarqua de precedencia en el uso de estos operadores, pero puede ser forzada mediante parntesis. Pueden ser empleados con conjuntos de diferentes tablas siempre que se apliquen las siguientes reglas: Las columnas son relacionadas en orden, de izquierda a derecha. Los nombres de las columnas son irrelevantes.

Los tipos de datos deben coincidir. Como ejemplo podemos consultar sobre todos los nombres de empleado que trabajan para los departamentos 100 o 300. Esto se consigue restando a todos los nombres de empleados, aquellos que estn en el departamento 200. SQL> select nombre from emp 2 minus 3 select nombre from emp where cod_dep=200;

Eliminacin Cuando una tabla ya no es til y no vamos a volver a necesitarla debe ser borrada. Esta operacin se puede realizar con el comando DROP TABLE. DROP TABLE tabla [CASCADE CONSTRAINTS];

Se borra la tabla de la base de datos, borrando toda la informacin contenida en la tabla, es decir, todas las filas. Tambin se borrar toda la informacin que sobre la tabla existiera en el diccionario. Puede que si alguna columna de esta tabla a borrar sirva como clave ajena de alguna tabla detalle, impida la eliminacin de la tabla, ya que existe una restriccin que requiere de la existencia de la tabla maestra. Esto se puede areglar colocando la coletilla

Sistemas Autor:Diego Snchez

Pgina 93

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

CASCADE CONSTRAINTS. Esto produce que las restricciones de la tabla detalle se borren antes de borrar la tabla maestra. La siguiente sentencia produce la eliminacin de la tabla de departamentos. SQL> drop table dep cascade constraints;

Table dropped.

Vistas Una vista es como una ventana a travs de la cual se puede consultar o cambiar informacin de la tabla a la que est asociada. Las vistas tienen la misma estructura que una tabla: filas y columnas. La nica diferencia es que slo se almacena de ellas la definicin, no los datos. Los datos que se recuperan mediante una consulta a una vista se presentarn igual que los de una tabla. De hecho, si no se sabe que se est trabajando con una vista, nada hace suponer que es as. Al igual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunque siempre es posible seleccionar datos de una vista, en algunas condiciones existen restricciones para realizar el resto de las operaciones sobre vistas.

Por qu utilizar vistas? Las vistas pueden proporcionar un nivel adicional de seguridad. Por ejemplo, en la tabla de empleados, cada responsable de departamento slo tendr acceso a la informacin de sus empleados. La siguiente sentencia produce la creacin de la vista de los empleados del departamento de administracin (cod_dep=100).

SQL> create view ampAdmin as 2 select * from ep where cod_dep=100; View created. Las vistas permiten ocultar la complejidad de los datos. Una BD se compone de muchas tablas. La informacin de dos o ms tablas puede recperarse utilizando una combinacin de dos o ms tablas, y estas combinaciones pueden llegar a ser muy confusas. Creando una vista como resultado de la combinacin se puede ocultar la complejidad al usuario. Las vistas ayudan a mantener unos nombres razonables.

Sistemas Autor:Diego Snchez

Pgina 94

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Creacin de una Vista CREATE VIEW vista [({columna ,}+] AS consulta ;

La vista se crea con las columnas que devuelve una consulta. Si no nos importa que las columnas de la vista hereden los nombres de las columnas recuperadas en la consulta no tenemos que especificarlos. Borrado de una Vista DROP VIEW vista ;

Operaciones sobre Vistas Consultas Las consultas sobre las vistas se tratan de igual modo que sobre las tablas. Actualizaciones La informacin puede ser actualizada en las vistas directamente o a travs de las tablas sobre las que se definen. Existen algunas restricciones: Borrado de filas de una tabla a travs de una vista La vista se debe crear con filas de una sola tabla; sin utilizar las clusulas GROUP BY y DISTINCT; y sin utilizar funciones de grupo o referencias a pseudocolumnas (ROWNUM). Actualizacin de filas a travs de una vista La vista ha de estar definida segn las restricciones anteriores y adems ninguna de las columnas a actualizar debe haber sido definida como una expresin. Insercin de filas en una tabla a travs de una vista Todas las restricciones y adems todas las columnas obligatorias de la tabla asociada deben estar presentes en la vista.

Vistas de ms de una Tabla Se pueden definir vistas sobre ms de una tabla. Por ejemplo, sobre la combinacin de dos tablas. Podemos querer ver todos los datos de los empleados del departamento Administracin. SQL> create view depAdmin (cod_emp, nombre_emp, nombre_dep, dir)

Sistemas Autor:Diego Snchez

Pgina 95

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

2 as select e.cod_emp, e.nombre, d.nombre, d.loc 3 from emp e, dep d 4 where e.cod_dep=d.cod_dep and d.nombre='Administracion';

SQL> select * from depAdmin;

COD_EMP NOMBRE_EMP NOMBRE_DEP ---------- ---------- --------------- ---------101 Cano 102 Roncal 103 Rueda 104 Martin 105 Sanz 106 Lopez 6 rows selected. Administracion Valladolid Administracion Valladolid Administracion Valladolid Administracion Valladolid Administracion Valladolid Administracion Valladolid

DIR

Lo Ms SQL*Plus

En este apartado vamos a profundizar un poco en las otras posibilidades que nos brinda SQL*Plus en los: ficheros de comandos, y generacin de informes,

Ficheros de Comandos

Aunque ya vimos una introduccin a los ficheros de comandos en anteriormente, vamos ahora a profundizar un poco en las posibilidades que nos ofrece SQL*Plus. En un fichero de comandos se pueden incluir: lneas de comentarios, lneas de ejecucin, lneas de comandos SQL, y

Sistemas Autor:Diego Snchez

Pgina 96

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

lneas de comandos SQL*Plus.

Lneas de Comentarios Se pueden introducir comentarios en una archivo de comandos de tres maneras: Utilizando del comando REM del SQL*Plus. Utilizando los delimitadores de comentario de SQL /* y */. Utilizando los smbolos de comentario PL/SQL "__".

Lneas de Ejecucin Constan de una nica barra inclinada, "/", y se introducen a continuacin de cada sentencia SQL indicando su ejecucin. Sustituyen al punto y coma, ";" al final de las sentencias SQL.

Lneas de Comandos SQL Se puede introducir cualquiera de los comandos SQL enumerados en este curso, y se ejecutarn de manera secuencial. Se permite el anidamiento de los ficheros de comandos.

Lneas de Comandos SQL*Plus SQL*Plus aporta una serie de posibilidades al lenguaje SQL que le acerca un poco mas a lo que entendemos como un lenguaje de programacin. Se pueden definir constantes y variables, capturar datos del teclado, introducir parmetros en la llamada de un archivo de comandos, y alguna cosa ms.

Variables de Usuario Se pueden definir Variables de usuario con el comando DEFINE DEFINE Variable = valor Para borrar una variable se utiliza el comando UNDEFINE UNDEFINE variable

Como ejemplo se puede definir la variable OFICIO SQL> define oficio=analista

Sistemas Autor:Diego Snchez

Pgina 97

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Variables de Sustitucin Las variables de sustitucin son un nombre de variable de usuario con el smbolo & delante. Cuando SQL*Plus detecta una variable de sustitucin en un comando, ejecuta el comando tomando el valor de la variable. Esto se puede ver en el ejemplo, donde preguntamos por los empleados que son analistas: SQL> define oficio=Analista SQL> define tabla=emp SQL> select nombre, oficio from &tabla where oficio='&oficio'; old 1: select nombre, oficio from &tabla where oficio='&oficio' new 1: select nombre, oficio from emp where oficio='Analista'

NOMBRE

OFICIO

---------- ----------Sastre Recio Analista Analista

Captura de Datos desde el Terminal En muchas ocasiones es necesario recoger datos desde un terminal, que luego sern utilizados en el archivo de comandos. Para realizarlo se pueden utilizar dos medios: las variables de sustitucin o los parmetros en la lnea de comandos. Cuando SQL*Plus reconoce una variable de sustitucin sin valor asignado se lo pide al usuario: SQL> select * from dep where nombre='&nombredep'; Enter value for nombredep: I+D old 1: select * from dep where nombre='&nombredep' new 1: select * from dep where nombre='I+D'

COD_DEP NOMBRE ---------- --------------- ---------200 I+D Boecillo

LOC

Sistemas Autor:Diego Snchez

Pgina 98

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Si se desea que SQL*Plus pregunte por el valor de la variable al usuario slo la primera vez que se encuentra con ella, se colocar "&&" delante de la variable de usuario. Tambin se pueden utilizar hasta nueve parmetros en la lnea de comandos cuando se llama a la ejecucin de un archivo de comandos. En el archivo de comandos nos referiremos a los parmetros con las variables &1, &2, ... ,&9 que se corresponden posicionalmente con ellos. Desde el archivo de comandos se puede hacer referencia a los parmetros cualquier nmero de veces y en cualquier orden.

Comandos de Comunicacin con el Usuario Los siguientes comandos proporcionan un medio de comunicacin con el usuario: PROMPT: presenta un mensaje en la pantalla. ACCEPT: Solicita un valor y lo almacena en la variable de usuario que se especifque. PAUSE: Obliga al usuario a pulsar Return despu de leer un mensaje.

Para ver cmo funcionan sirve el siguiente ejemplo: prompt Buscar los datos de un empleado. Pause Pulse Return. Accept nombremp prompt 'Empleado? ' Select * from emp where nombre='&nombremp';

Otros Comandos Los siguientes comandos tambin se pueden incluir en un archivo de comandos: CONNECT: para conectarse como otro usuario. HELP: para obtener ayuda en lnea. EXIT: para dejar SQL*PLus y salir al Sistema Operativo. DESCRIBE DESC: para obtener informacin sobre la estructura de una tabla. HOST o !: para ejecutar un comando del Sistema Operativo.

PRIVILEGIOS DEL SISTEMA

Los roles de sistema se utilizan para distribuir la disponibilidad de los comandos del sistema utilizados para gestionar la BD. Los privilegios ms comunes estn en la

Sistemas Autor:Diego Snchez

Pgina 99

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

siguiente tabla. En ella se distinguen entre privilegios de manejo de objetos y de gestin de la BD. La palabra clave ANY significa que ese usuario tiene el privilegio para todos los esquemas en la BD. Hay que hacer notar que ANY y PUBLIC no son sinnimos. Privilegio Manejo de Objetos CREATE INDEX CREATE SYNONYM CREATE TABLE CREATE VIEW [ANY] [ANY] [PUBLIC] ANY Capacidades ... Crear cualquier ndice.

Crear sinnimos [pblicos]. Crear tablas. El usuario debe tener cuota en el espacio de tablas, o ha de tener asignado el privilegio UNLIMITED TABLESPACE. Crear vistas.

ALTER ANY INDEX Alterar cualquier ndice. ALTER ANY TABLE Alterar cualquier tabla DROP ANY INDEX DROP SYNONYM DROP SYNONYM DROP ANY VIEW DROP ANY TABLE SELECT TABLE ANY PUBLIC ANY Borrar cualquier ndice. Borrar cualquier sinnimo.

Borrar sinnimos pblicos. Borrar cualquier vista. Borrar cualquier tabla. Efectuar selecciones de cualquier tabla o vista.

INSERT ANY TABLE Insertar en cualquier tabla o vista. DELETE TABLE ALTER SESSION ANY Borrar filas de cualquier tabla o vista, y tambin truncar. Alterar los parmetros de la sesin.

Sistemas Autor:Diego Snchez

Pgina 100

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

CREATE SESSION Gestin de la BD CREATE PROFILE CREATE ROLE CREATE ROLLBACK SEGMENT CREATE TABLESPACE CREATE USER ALTER PROFILE ALTER ANY ROLE ALTER ROLLBACK SEGMENT ALTER TABLESPACE ALTER USER DROP PROFILE DROP ANY ROLE DROP ROLLBACK

Conectarse a la BD. ... Crear perfiles de usuario. Crear roles.

Creacin de segmentos de rollback.

Crear espacios de tablas. Crear usuarios. Alterar perfiles existentes. Alterar cualquier rol. Alterar segmentos de rollback.

Alterar espacios de tablas. Alterar usuarios. Borrar un perfil existente. Borrar cualquier rol. Borrar un segmento de rollback existente.

SEGMENT

DROP TABLESPACE Borrar un espacio de tablas. DROP USER Borrar un usuario. Aadir CASCADE si el usuario posee objetos.

ALTER DATABASE Permite una sentencia ALTER DATABASE. GRANT PRIVILEGE GRANT ANY ROLE ANY Otorgar cualquiera de estos privilegios. Otorgar cualquier rol a un usario.

Sistemas Autor:Diego Snchez

Pgina 101

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

UNLIMITED TABLESPACE DROP PROFILE

Puede usar una cantidad de almacenamiento ilimitada. Borrar un perfil existente.

Los privilegios se pueden agrupar en roles, para as satisfacer a distintos tipos de usuarios. En la instalacin se crea un rol llamado OSOPER que sirve para los operarios de la mquina donde est la BD y permite realizar copias de seguridad en frio y en caliente. Los privilegios de OSOPER son STARTUP, SHUTDOWN, ALTER DATABASE OPEN/MOUNT, ALTER DATABASE BACKUP, ARCHIVE LOG, RECOVER y RESTRICTED SESSION. Se pueden crear nuevos roles. Por ejemplo, podemos crear un rol llamado creadorCuentas que slo pueda crear usuarios y no pueda realizar ninguna otra operacin de DBA. Las sentencias que permiten hacer esto son las siguientes:

SVRMGR> create role creadorCuentas; Statement processed. SVRMGR> grant create session, create user to creadorCuentas; Statement processed. Oracle incluye otros tres roles de sistema: CONNECT, RESOURCE y DBA, cuyos privilegios son:

Rol CONNECT

Privilegios alter session, create session, create cluster, create table, create view, create synonym, create sequence, create database link create cluster, create table, create procedure, create sequence, create trigger todos los privilegios de sistema con la opcion with admin option

RESOURCE DBA

Protegidos por passwords Los passwords puede proteger tanto cuentas como roles. Los passwords se fijan a la hora de la creacin de ambos y se pueden modificar con los comandos ALTER USER y ALTER ROLE, respectivamente.
Sistemas Autor:Diego Snchez

Pgina 102

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

No es necesario asignar un password a un rol, pero si tiene uno debe ser especificado por el usuario cuando se asigna ese rol.

Gestionando Privilegios Los privilegios dan acceso a los usuarios a los datos que no poseen. Los roles con grupos de privilegios que facilitan la administracin de los privilegios. Pero los privilegios se pueden manejar de manera explcita en algunas circunstancias. Los privilegios se crean via el comando GRANT y son registrados en el diccionario de datos. Los privilegios que pueden otorgarse sobre objetos son los siguientes: Privilegio SELECT Capacidades Otorgadas Puede consultar a un objeto. Puede insertar filas en una tabla o vista. Puede especificarse INSERT las columnas donde se permite insertar dentro de la tabla o vista. Puede actualizar filas en una tabla o vista. Puede especificarse UPDATE las columnas donde se permite actualizar dentro de la tabla o vista. DELETE ALTER INDEX Puede borrar filas dentro de la tabla o vista. Puede alterar la tabla. Puede crear ndices de una tabla.

REFERENCES Puede crear claves ajenas que referencie a esta tabla. EXECUTE Puede ejecutar un procedimieto, paquete o funcin.

Haciendo un privilegio PUBLIC lo hace disponible a todos los usuarios de la BD. Aunque los privilegios se puedan otorgar individualmente, no resulta razonable basar la gestin de los privilegios en su asignacin individual. La gestin de los privilegios se facilita con la utilizacin de los roles. A continuacin se puede ver como se crean dos roles, el ALUMNOS que permite establecer una sesin, y el rol INSERTA_PEREZ que permite insertar y seleccionar en la tabla emp de perez:

Sistemas Autor:Diego Snchez

Pgina 103

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

SVRMGR> create role alumnos; Statement processed. SVRMGR> grant create session to alumnos; Statement processed. SVRMGR> create role inserta_perez; Statement processed. SVRMGR> grant select, insert on perez.emp to inserta_perez; Statement processed. Se pueden asignar roles a roles:

SVRMGR> grant usuarios to inserta_perez; Los roles pueden asignarse a los usuarios. As, podemos asignar el rol INSERTA_PEREZ al usuario alu20:

SVRMGR> grant inserta_perez to alu20; Los roles se pueden denegar con el comando REVOKE.

Listar Privilegios Otorgados La informacin de los privilegios otorgados se almacena en el diccionario de datos. Estos datos son accesibles a travs de las siguientes vistas del diccionario de datos: Vista DBA_ROLES Contenidos Nombres de los roles y su estado del password.

DBA_ROLES_PRIVS Usuarios a los que han sido otorgados roles. DBA_SYS_PRIVS Usuarios a los que han sido otorgados privilegios del sistema. Usuarios a los que han sido otorgados privilegios sobre objetos. Usuarios a los que han sido otorgados privilegios sobre columnas de tablas.

DBA_TAB_PRIVS

DBA_COL_PRIVS

ROLE_ROLE_PRIVS Roles que han sido otorgados a otros roles. ROLE_SYS_PRIVS Privilegios de sistema que han sido otorgados a roles.

Sistemas Autor:Diego Snchez

Pgina 104

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

ROLE_TAB_PRIVS

Privilegios de tabla que han sido otorgados a roles.

AUDITORA DE SEGURIDAD

El SGBD Oracle tiene la capacidad de auditar todas las acciones que tienen lugar en la BD. Se pueden auditar tres tipos de acciones: intentos de entrada en cuentas de la BD. accesos a los objetos de la BD. acciones sobre la BD.

La BD registra todos los intentos de accin, tanto los exitosos como los infructuosos, aunque es un parmetro configurable. Para habilitar la capacidad de auditora, se debe fijar el parmetro AUDIT_TRAIL en el fichero init.ora. Los registros de auditora se almacenan en la tabla SYS.AUD$ o bien su gestin se deja al SO. Cuando se decide utilizar la tabla SYS.AUD$ esta debe revisarse peridicamente, por si hiciera falta truncarla debido a que su aumento de tamao puede causar problemas de espacio en el tablespace SYSTEM. Los valores del parmetro AUDIT_TRAIL son los que se exponen en la siguiente tabla:

Valor NONE BD OS

Descripcin Deshabilita la auditora Habilita la auditora, escribiendo en la tabla SYS.AUD$. Habilita la auditora, dejando al SO su gestin.

PL/SQL

Lenguaje de programacin incrustado en Oracle y PostgreSQL. El PL/SQL soporta todas las consultas y manipulacin de datos que se usan en SQL, pero incluye nuevas caractersticas: El manejo de variables. Estructuras modulares.

Sistemas Autor:Diego Snchez

Pgina 105

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Estructuras de control de flujo y toma de decisiones. Control de excepciones. El lenguaje PL/SQL est incorporado en: Servidor de la base de datos. Herramientas de Oracle (Forms, Reports, ...).

En un entorno de base de datos los programadores pueden construir bloques PL/SQL para utilizarlos como procedimientos o funciones, o bien pueden escribir estos bloques como parte de scripts SQL*Plus. Los programas o paquetes de PL/SQL se pueden almacenar en la base de datos como otro objeto, y todos los usuarios que estn autorizados tienen acceso a estos paquetes. Los programas se ejecutan en el servidor para ahorrar recursos a los clientes.

Tipos de datos Oracle/PLSQL A continuacin se muestra un listado de los tipos de datos disponibles en Oracle y PLSQL. Hemos tratado de diferenciar los tipos de datos entre las versiones de Oracle 8i y Oracle 9i. Tipo de dato / Sintaxis Oracle 8i Oracle 9i Descripcin Donde p es la precisin y e la escala. dec(p, e) La precisin mxima es de 38 dgitos. Por ejemplo: dec(3,1) es un nmero que tiene 2 dgitos antes del decimal y un dgito despus del decimal. Donde p es la precisin y e la escala. Por ejemplo: decimal(3,1) es un nmero que tiene 2 dgitos antes

decimal(p, e)

La precisin mxima es de 38 dgitos.

Sistemas Autor:Diego Snchez

Pgina 106

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

del decimal y un dgito despus del decimal. double precision float int integer Donde p es la precisin y e la escala. numeric(p, e) La precisin mxima es de 38 dgitos. Por ejemplo: numeric(7,2) es un nmero que tiene 5 dgitos antes del decimal y 2 dgitos despus del decimal. Donde p es la precisin y e la escala. number(p, e) La precisin mxima es de 38 dgitos. Por ejemplo: number(7,2) es un nmero que tiene 5 dgitos antes del decimal y 2 dgitos despus del decimal. La precisin mxima es de 38 decimales.

real smallint Donde tamao es el nmero de caracteres a almacenar. Son cadenas de ancho fijo. Se rellena Hasta 2000 bytes en Oracle 8i/9i. con espacios. Hasta 32767 bytes en PLSQL. Donde tamao es el nmero de caracteres a almacenar. Son Hasta 4000 bytes en Oracle 8i/9.i cadenas de ancho variable. Hasta 32767 bytes en PLSQL. Hasta 2 gigabytes. Hasta 32767 bytes en PLSQL. Son cadenas de ancho variable. Son cadenas binarias de ancho

char (tamao)

varchar2 (tamao) long raw

Sistemas Autor:Diego Snchez

Pgina 107

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Hasta 2000 bytes en Oracle 8i/9i. variable. long raw Hasta 2 gigabytes. Una fecha entre el 1 de Enero de 4712 A.C. y el 31 de Diciembre de 9999 D.C. fractional seconds precision debe ser un nmero entre 0 y 9. (El valor por defecto es 6) fractional seconds precision debe ser un nmero entre 0 y 9. (El valor por defecto es 6) fractional seconds precision debe ser un nmero entre 0 y 9. (El valor por defecto es 6) year precision debe ser un nmero entre 0 y 9. (El valor por defecto es 2) Son cadenas binarias de ancho variable.

date

timestamp (fractional seconds precision)

No soportado por Oracle 8i.

Incluye ao, mes da, hora, minutos y segundos. Por ejemplo: timestamp(6)

timestamp (fractional No soportado seconds por Oracle 8i. precision) with time zone

Incluye ao, mes da, hora, minutos y segundos; con un valor de desplazamiento de zona horaria. Por ejemplo: timestamp(5) with time zone Incluye ao, mes da, hora, minutos y segundos; con una zona horaria expresada como la zona horaria actual. Por ejemplo: timestamp(4) with local time zone

timestamp (fractional No soportado seconds por Oracle 8i. precision) with local time zone

interval year No soportado (year precision) por Oracle 8i. to month

Perodo de tiempo almacenado en aos y meses. Por ejemplo: interval year(4) to month

Datos binarios interval day (day precisionel de ancho fijo.

Sistemas Autor:Diego Snchez

Pgina 108

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Cada registro de la base de datos tiene una direccin fsica RRRR es la fila o rowid. del bloque; FFFFF es el fichero de la base de datos. bloque en el fichero de la base de datos; urowid [tamao] boolean Hasta 2000 bytes. Vlido en PLSQL, este tipo de datos no existe en Oracle 8i/9i. Donde tamao es el nmero de Hasta 32767 bytes en PLSQL. caracteres a almacenar. Cadena Hasta 2000 bytes en Oracle 8i/9i. NLS de ancho fijo. Donde tamao es el nmero de Hasta 32767 bytes en PLSQL. caracteres a almacenar. Cadena Hasta 4000 bytes en Oracle 8i/9i. NLS de ancho variable. Localizadores de archivo apuntan a un objeto binario de slo lectura fuera de la base de datos. Localizadores LOB apuntan a un gran objeto binario dentro de la base de datos. Localizadores LOB apuntan a un gran objeto de caracteres dentro de la base de datos. Localizadores LOB apuntan a un gran objeto NLS de caracteres dentro de la base de datos. Rowid universal. Donde tamao es opcional.

nchar (tamao)

nvarchar2 (tamao)

bfile

Hasta 4 gigabytes.

blob

Hasta 4 gigabytes.

clob

Hasta 4 gigabytes.

nclob

Hasta 4 gigabytes.

Sistemas Autor:Diego Snchez

Pgina 109

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Identificadores Un identificador es un nombre que se le pone a un objeto que interviene en un programa, que puede ser variable, constante, procedimientos, excepciones, cursores... Debe tener un mximo de 30 caracteres que empiece siempre por una letra, y puede contener letras, nmeros, los smbolos $, #, _, y maysculas y minsculas indiferentemente. Los identificadores no pueden ser palabras reservadas (SELECT, INSERT, DELETE, UPDATE, DROP).
Operadores

(suma) - (resta)

(multiplicacin)

/ (divisin)
o

(exponente)

Operador de asignacin := (dos puntos + igual) Operadores aritmticos Operadores relacionales o de comparacin = (igual a) <>, != (distinto de) < (menor que) > (mayor que) >= (mayor o igual a) <= (menor o igual a) Operador de concatenacin Comentarios || /* comentario de dos o ms lneas */ -- comentario de una lnea

Sistemas Autor:Diego Snchez

Pgina 110

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Variables Las variables son nombres para procesar los elementos de los datos. Declaracin: Nombre_variable tipo [NOT NULL] [:= valor | DEFAULT valor] := y DEFAULT son lo mismo. Si ponemos NOT NULL es obligatorio inicializar la variable. Ejemplos: num_dep NUMBER(2) NOT NULL :=20 num_emple VARCHAR2(15) DEFAULT Pedro Tambin se puede definir una variable a partir de un campo mediante los atributos %TYPE y %ROWTYPE, con esto damos el tipo y longitud a la variable de otra variable u objeto ya definido. %TYPE es la que se utiliza normalmente, %ROWTYPE es para claves de registro. El NOT NULL y el valor inicial no se heredan, slo el tipo de dato y longitud de ese dato. Por ejemplo: num_dep emple.dept_no%TYPE

Constantes

Las constantes son como las variables pero no puede modificarse su valor. Se declaran de la siguiente manera: nombre_constante CONSTANT tipo_de_dato := valor Por ejemplo, el IVA es un valor fijo, y para declararlo lo haramos de la siguiente manera: Imp_iva constant number(2,2) := 12,5

BLOQUE PL/SQL

Bloque es la unidad de estructura bsica en los programas PL/SQL. Supone una mejora en el rendimiento, pues se envan los bloques completos al servidor para ser procesados en lugar de enviar cada secuencia SQL. Partes de un bloque:

Sistemas Autor:Diego Snchez

Pgina 111

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Zona de declaraciones: zona opcional. Se declaran los objetos locales (variables, constantes...). Zona de instrucciones: zona obligatoria. Zona de tratamiento de excepciones: zona opcional. Se tratan excepciones en el programa.

Forma de crear un bloque: [ DECLARE | IS / AS ] <declaraciones> BEGIN <instrucciones> [ EXCEPTION ] <tratamiento de excepciones> END; / La barra "/" siempre se pone al final para ejecutar el bloque.

TIPOS DE BLOQUES

Annimo (sin nombre)

Siempre comienza con DECLARE o directamente con BEGIN. Ejemplo 1: BEGIN DBMS_OUTPUT.PUT_LINE (Hola); END; / DBMS_OUTPUT es un depurador de Oracle que sirve para visualizar cualquier cosa, pero antes lo debemos tener activado: SET SERVEROUTPUT ON; Ejemplo 2: DECLARE v_precio number; BEGIN select pvp into v_precio

Sistemas Autor:Diego Snchez

Pgina 112

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

from tarticulos where codigo=100; dbms_output.put_line (v_precio); END; / Ejemplo 3: El siguiente bloque annimo nos muestra la fecha actual con el formato Martes, 18 de marzo de 1998, a las 13:04:55. DECLARE fecha date; BEGIN select sysdate into fecha from dual; dbms_output.put_line (to_char(fecha, 'day", "dd" de "month" de "yyyy", a las "hh24:mi:ss')); END; / Subprogramas (tienen nombre)

Se pueden almacenar en la base de datos. Existen dos tipos de subprogramas: Procedimientos (PROCEDURE) y Funciones (FUNCTION)

Procedimientos en PLSQL

Los procedimientos tienen la utilidad de fomentar la reutilizacin de programas que se usan comnmente. Una vez compilado, queda almacenado en la base de datos (por eso es tambin llamado 'Procedimietno almacenado') y puede ser utilizado por mltiples aplicaciones. La sintaxis es la siguiente CREATE [OR REPLACE] PROCEDURE nombre_procedimiento [nombre_parametro modo tipodatos_parametro ] IS | AS bloque de cdigo Donde "modo" puede contener los valores IN, OUT, IN OUT. Por defecto tiene el valor IN si no se pone nada. IN indica que el parmetro es de entrada y no se podr modificar.

Sistemas Autor:Diego Snchez

Pgina 113

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

OUT indica que el parmetro es de salida con lo que el procedimiento devolver un valor en l. IN OUT indica que el parmetro es de entrada/salida. Con lo que al llamar al procedimiento se le dar un valor que luego podr ser modificado por el procedimiento y devolver este nuevo valor. "tipodatos_parametro indica el tipo de datos que tendr el parmetro segn lo indicado en Tipos de datos Oracle/PLSQL Para borrar un procedimiento almacenado de la base de datos DROP PROCEDURE nombre_procedimiento Para utilizar un procedimiento almacenado de la base de datos Simplemente se lo llama desde un bloque annimo (desde la lnea de comandos), previamente habiendo inicializado el/los parametro/s (en caso que existan). DECLARE nombre_parametro tipodatos_parametro;

BEGIN nombre_parametro tipodatos_parametro := valor_de_inicializacion; nombre_procedimiento (nombre_parametro => nombre_parametro); END; /

FUNCIONES EN PL/SQL

Una funcin es un bloque de cdigo PL/SQL que tiene las mismas caractersticas que un procedimiento almacenado. La diferencia estriba que una funcin devuelve un valor al retornar. Al devolver un valor puede ser llamada como parte de una expresin. La sintaxis sera CREATE [OR REPLACE] FUNCTION nombre_funcin [nombre_parmetro modo tipodatos_parametro ] RETURN tipodatos_retorno IS | AS bloque de cdigo

Donde "modo" puede contener los valores IN, OUT, IN OUT. Por defecto tiene el valor IN si no se pone nada. IN indica que el parmetro es de entrada y no se podr modificar.

Sistemas Autor:Diego Snchez

Pgina 114

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

OUT indica que el parmetro es de salida con lo que el procedimiento devolver un valor en l. IN OUT indica que el parmetro es de entrada/salida. Con lo que al llamar al procedimiento se le dar un valor que luego podr ser modificado por el procedimiento y devolver este nuevo valor. Sin embargo, en este caso solo tendra sentido (por el concepto de funcin en s mismo) declarar parmetros del tipo IN y devolver el valor como retorno de la funcin. "tipodatos_parametro" y "tipodatos_retorno" indican el tipo de datos que tendr el parmetro y el valor de retorno de la funcin respectivamente segn lo indicado en Tipos de datos Oracle/PLSQL Para borrar una funcin de la base de datos DROP FUNCTION nombre_funcin Los procedimientos y funciones se pueden agrupar en unas estructuras llamadas Paquetes.

TRIGGERS

Un trigger o disparador se ejecuta ante un determinado evento de manera automtica. Generalmente se utilizan para garantizar que una determinada accin siempre se realiza despus de realizar una tarea determinada. Se debe tener cuidado con este tipo de estructuras puesto que un uso excesivo puede dar lugar a dependencias difciles de mantener. Adems se deben tener muy claros las restricciones de integridad para evitar problemas. La sintaxis sera A nivel de sentencia: CREATE [OR REPLACE] TRIGGER nombre_trigger momento_ejecucin evento [evento] ON nombre_tabla bloque PLSQL; A nivel de registro: CREATE [OR REPLACE] TRIGGER nombre_trigger momento_ejecucin evento [evento] ON nombre_tabla [REFERENCING OLD AS old | NEW AS new] FOR EACH ROW [WHEN condicin]

Sistemas Autor:Diego Snchez

Pgina 115

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

bloque PLSQL; Donde "momento_ejecucin" indica cuando se ejecuta el trigger automticamente. Puede contener los valores BEFORE AFTER. "evento" indica la operacin que provoca la ejecucin de este bloque. Puede contener los valores INSERT, UPDATE DELETE. "old" indica el nombre que se le da al registro con los valores antiguos que se tenan antes de la ejecucin de la operacin que activ el trigger. Mientras que "new" indica el valor que tiene actualmente despus de dicha operacin. Con la clusula "WHEN" se puede indicar una restriccin que haga que el trigger se ejecute o no. Por ejemplo se puede indicar que el trigger se ejecute solo si el campo "campo1" de la tabla tiene un valor mayor que 50. La clusula "FOR EACH ROW" indica que el trigger es a nivel de registro. Para eliminar un trigger: DROP TRIGGER nombre_trigger

EJECICIOS ORACLE 9i

Ejercitico N.-1

CREACIN DE USUARIOS

SQL> CREATE USER DSANCHEZ 2 IDENTIFIED BY DIEGO 3 DEFAULT TABLESPACE SEPTIMO3;

Usuario creado.

SQL> GRANT CONNECT, RESOURCE TO DSANCHEZ;

SQL> CONNECT DSANCHEZ/DIEGO@SEPTIMO Conectado

Sistemas Autor:Diego Snchez

Pgina 116

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

CREACIN DE TABLAS

SQL> CREATE TABLE UNO 2 (A NUMBER(3) 3 , B VARCHAR (30));

Tabla creada.

INSERTAR DATOS A LAS TABLAS

SQL> INSERT INTO UNO VALUES (1,'LUIS'); SQL> INSERT INTO UNO VALUES (2,'CARLOS'); SQL> COMMIT;

CONSULTAS A LA TABLA

SQL> SELECT * FROM UNO;

AB --------- -----------------------------1 LUIS 2 CARLOS

Ejercicio N.- 2 CREACIN DE USUARIOS

SQL> CREATE USER US2 2 IDENTIFIED BY PUS2 3 PASSWORD EXPIRE 4 ACCOUNT LOCK;

Sistemas Autor:Diego Snchez

Pgina 117

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

Usuario creado.

MODIFICAR USUARIO

SQL> ALTER USER US2 2 ACCOUNT UNLOCK;

Usuario modificado.

INGRESAR DEL USUARIO

SQL> CONNECT US2/DIEGO@SEPTIMO; Conectado.

Ejercicio N. - 3

CREAR USUARIO

SQL> CREATE USER INVENTARIO2 2 IDENTIFIED BY US2 3 DEFAULT TABLESPACE SEPTIMO2 4 ACCOUNT UNLOCK;

Usuario creado.

INGRESAR AL USUARIO

CONNECT SYSTEM/MASTER@SEPTIMO; Conectado. SQL> CONNECT INVENTARIO2/US2@SEPTIMO; Conectado.

Sistemas Autor:Diego Snchez

Pgina 118

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

CREAR TABLAS

SQL> CREATE TABLE PROVEEDORES ( 2 COD_PROV NUMBER(5) CONSTRAINT PK_PROVEEDOR PRIMARY KEY, 3 NOM_PROV VARCHAR(40) NOT NULL, 4 DIR_PROV VARCHAR(50), 5 TEL_PROV CHAR(9), 6 RUC_PROV CHAR(13));

Tabla creada.

SQL> CREATE TABLE CLIENTES( 2 COD_CLI NUMBER(5) CONSTRAINT PK_CLIENTES PRIMARY KEY, 3 NOM_CLI VARCHAR(40) NOT NULL, 4 DIR_CLI VARCHAR(50), 5 TEL_CLI CHAR(9), 6 RUC_CLI CHAR(13));

Tabla creada.

SQL> CREATE TABLE CATEGORIAS( 2 COD_CAT NUMBER(3) CONSTRAINT PK_CATEGORIAS PRIMARY KEY, 3 NOM_CAT VARCHAR(30) NOT NULL);

Tabla creada.

Sistemas Autor:Diego Snchez

Pgina 119

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

SQL> CREATE TABLE PRODUCTOS( 2 COD_PROD KEY, 3 NOM_PROD NUMBER(10) CONSTRAINT PK_PRODUCTO PRIMARY

VARCHAR(200) NOT NULL, NUMBER(10) CONSTRAINT CH_EXIST

4 EXIS_PROD CHECK(EXIS_PROD>0),

5 COST_PROD NUMBER(10,2) NOT NULL, 6 PRE_VENT NUMBER (10,2) NOT NULL, 7 COD_CAT CATEGORIAS); NUMBER(3) CONSTRAINT FK_CATEGORIA REFERENCES

Tabla creada.

SQL> CREATE TABLE COMPRAS( 2 NUM_COM NUMBER(10) CONSTRAINT PK_COMPRAS PRIMARY KEY, 3 FECH_COM DATE DEFAULT SYSDATE, 4 TOT_COM NUMBER (10,2), 5 COD_PROV NUMBER(5) CONSTRAINT FK_PROVEEDOR REFERENCES PROVEEDORES 6 );

Tabla creada.

SQL> CREATE TABLE VENTAS( 2 NUM_FAC NUMBER(10) CONSTRAINT PK_VENTAS PRIMARY KEY, 3 FECH_VEN DATE DEFAULT SYSDATE,

Sistemas Autor:Diego Snchez

Pgina 120

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

4 SUBT_VEN NUMBER (10,2) NOT NULL, 5 DES_VEN NUMBER (10,2) NOT NULL, 6 IVA_POR NUMBER (10,2) NOT NULL, 7 IVA_VAL NUMBER (10,2) NOT NULL, 8 TOT_VEN NUMBER (10,2) NOT NULL, 9 COD_CLI CLIENTES 10 ); NUMBER(5) CONSTRAINT FK_CLIENTES REFERENCES

Tabla creada.

SQL> CREATE TABLE DETALLE_COMPRAS( 2 COD_DET_COM NUMBER (10) CONSTRAINT PK_DET_COM PRIMARY KEY, 3 CANT_COM (CANT_COM >0), 4 COST_COM (COST_COM >0), 5 NUM_COM COMPRAS, 6 COD_PROD PRODUCTOS 7 ); NUMBER (10) CONSTRAINT CH_CANTCONP CHECK

NUMBER (10,2) CONSTRAINT CH_COSTCOM

CHECK

NUMBER (10) CONSTRAINT FK_COMPRAS REFERENCES

NUMBER (10) CONSTRAINT FK_PROCOMP REFERENCES

Tabla creada.

SQL> CREATE TABLE DETALLE_VENTAS ( 2 COD_DET_VEN NUMBER (10) CONSTRAINT PK_DET_VEN KEY,
Sistemas Autor:Diego Snchez

PRIMARY

Pgina 121

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

3 CANT_VEN (CANT_VEN >0),

NUMBER (10) CONSTRAINT CH_CANTVEN

CHECK

4 COST_VEN NUMBER (10,2) CONSTRAINT CH_COSTVEN (COST_VEN >0),

CHECK

5 PRE_VEN NUMBER (10,2) CONSTRAINT CH_PREVEN CHECK (PRE_VEN >0), 6 NUM_FAC NUMBER (10) CONSTRAINT FK_VENTAS REFERENCES VENTAS, 7 COD_PROD NUMBER (10) CONSTRAINT FK_PROVEN REFERENCES PRODUCTOS 8 );

Tabla creada.

CONSULTAS DE TABLAS

SQL> SELECT * FROM TAB;

TNAME

TABTYPE CLUSTERID

------------------------------ ------- --------CATEGORIAS CLIENTES COMPRAS DETALLE_COMPRAS DETALLE_VENTAS PRODUCTOS PROVEEDORES VENTAS TABLE TABLE TABLE TABLE TABLE TABLE TABLE TABLE

Sistemas Autor:Diego Snchez

Pgina 122

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

CREACIN DE TRIGGER O DISPARADOR

SQL> CREATE OR REPLACE TRIGGER TRGAUTONCLIENTES 2 BEFORE INSERT ON CLIENTES 3 FOR EACH ROW 4 DECLARE 5 X NUMBER; 6 BEGIN 7 SELECT SEQCLIENTES.NEXTVAL INTO X FROM DUAL; 8 :NEW.COD_CLI:=X; 9 END; 10 /

Disparador creado.

CREATE OR REPLACE TRIGGER TRGAUTONPRODUCTOS BEFORE INSERT ON PRODUCTOS FOR EACH ROW DECLARE X NUMBER; BEGIN SELECT SEQPRODUCTOS.NEXTVAL INTO X FROM DUAL; :NEW.COD_PROD:=X; END; /

Sistemas Autor:Diego Snchez

Pgina 123

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

SQL> CREATE OR REPLACE TRIGGER TRGAUTONDETALLECOMPRA 2 BEFORE INSERT ON DETALLE_COMPRAS 3 FOR EACH ROW 4 DECLARE 5 X NUMBER; 6 BEGIN 7 SELECT SEQDETALLECOMPRA.NEXTVAL INTO X FROM DUAL; 8 :NEW.COD_DET_COM:=X; 9 END; 10 /

Disparador creado.

SQL> CREATE SEQUENCE SEQDETALLEVENTA 2 START WITH 1 3 INCREMENT BY 1;

Secuencia creada.

SQL> CREATE OR REPLACE TRIGGER TRGAUTONDETALLEVENTA 2 BEFORE INSERT ON DETALLE_VENTAS 3 FOR EACH ROW 4 DECLARE 5 X NUMBER; 6 BEGIN 7 SELECT SEQDETALLEVENTA.NEXTVAL INTO X FROM DUAL;

Sistemas Autor:Diego Snchez

Pgina 124

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

8 :NEW.NUM_FAC:=X; 9 END; 10 /

Disparador creado.

CREACIN DE PL/SQL

1.SQL> DECLARE 2 A NUMBER; 3 B NUMBER; 4 C NUMBER; 5 BEGIN 6 A:=5; 7 B:=&VALORB; 8 C:=A+B; 9 DBMS_OUTPUT.PUT_LINE('LA SUMA ES:'||C); 10 END; 11 / Introduzca un valor para valorb: 5 antiguo 7: B:=&VALORB; nuevo 7: B:=5; LA SUMA ES:10

2.SQL> DECLARE 2 CONTADOR NUMBER:=0; 3 BEGIN 4 LOOP 5 DBMS_OUTPUT.PUT(CONTADOR||'');

Sistemas Autor:Diego Snchez

Pgina 125

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

6 CONTADOR:=CONTADOR+1; 7 EXIT WHEN CONTADOR =10; 8 END LOOP; 9 DBMS_OUTPUT.PUT_LINE('FIN DE CICLO'); 10 END; 11 / 0123456789FIN DE CICLO

3.SQL> SQL> DECLARE 2 3 CONTADOR NUMBER:=0; BEGIN

4 WHILE CONTADOR <10 LOOP 5 DBMS_OUTPUT.PUT(CONTADOR||''); 6 CONTADOR:=CONTADOR+1; 7 END LOOP; 8 DBMS_OUTPUT.PUT_LINE('FIN DE CICLO'); 9 END; 10 / 01234567890123456789FIN DE CICLO

4.SQL> DECLARE 2 X NUMBER; 3 BEGIN 4 X:= &VALORX; 5 IF (X MOD 2=0) THEN DBMS_OUTPUT.PUT('MULTIPLO/2 '); 6 ELSIF X MOD 3=0 THEN DBMS_OUTPUT.PUT('MULTIPLO/3 '); 7 ELSIF X MOD 5=0 THEN DBMS_OUTPUT.PUT('MULTIPLO/5 '); 8 ELSE DBMS_OUTPUT.PUT('MULTIPLO DE OTRO NUMERO');

9 END IF; 10 DBMS_OUTPUT.PUT_LINE ('FIN');

Sistemas Autor:Diego Snchez

Pgina 126

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

11 END; 12 / Introduzca un valor para valorx: 6 antiguo 4: X:= &VALORX; nuevo 4: X:= 6; MULTIPLO/2 FIN

EJERCICIO N.- 4 CREAR TABLA SUELDOS SQL> SQL> CREATE TABLE SUELDOS ( 2 NUM_EM NUMBER (10) CONSTRAINT PK_SUELDO PRIMARY KEY, 3 NOMBRE VARCHAR(200) NOT NULL, 4 NHORAS NUMBER(10) NOT NULL, 5 VHORA NUMBER(10,2));

INGRESO DE DATOS

SQL> INSERT INTO SUELDOS VALUES ('1','DIEGO SANCHEZ','30','4'); SQL> INSERT INTO SUELDOS VALUES ('2','JUAN PEREZ','50','2'); SQL> INSERT INTO SUELDOS VALUES ('3','RODOLFO VELASCO','25','5');

CREAR PROCEDIMENTO PL/SQL

SQL> DECLARE 2 MCODIGO CHAR(5); 3 MNOMB VARCHAR2(30); 4 MNUMHORAS NUMBER; 5 MVALHORA NUMBER;
Sistemas Autor:Diego Snchez Pgina 127

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

6 MSUELDO NUMBER; 7 BEGIN 8 MCODIGO:=&CODIGO; 9 SELECT NOMBRE INTO MNOMB FROM SUELDOS 10 WHERE NUM_EM = MCODIGO; 11 SELECT NHORAS INTO MNUMHORAS FROM SUELDOS 12 WHERE NUM_EM = MCODIGO; 13 SELECT VHORA INTO MVALHORA FROM SUELDOS 14 WHERE NUM_EM = MCODIGO; 15 MSUELDO:= MNUMHORAS * MVALHORA; 16 DBMS_OUTPUT.PUT_LINE (MNOMB||'SU SUELDO ES:'||MSUELDO); 17 END; 18 / Introduzca un valor para codigo: 1 antiguo 8: MCODIGO:=&CODIGO; nuevo 8: MCODIGO:=1; DIEGO SANCHEZSU SUELDO ES:120

EJERCICIO N.-5

DECLARE MCODIGO CHAR(5); MNOMB VARCHAR2(30); MNUMHORAS NUMBER; MVALHORA NUMBER; MSUELDO NUMBER; MTRANS NUMBER; MBONO NUMBER; MIESS NUMBER; MMULTAS NUMBER; MTOTAL NUMBER;

Sistemas Autor:Diego Snchez

Pgina 128

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

BEGIN MCODIGO:=&CODIGO; SELECT NOMBRE INTO MNOMB FROM SUELDOS WHERE NUM_EM = MCODIGO; SELECT NHORAS INTO MNUMHORAS FROM SUELDOS WHERE NUM_EM = MCODIGO; SELECT VHORA INTO MVALHORA FROM SUELDOS WHERE NUM_EM = MCODIGO; SELECT TRANSPORTE INTO MTRANS FROM SUELDOS WHERE NUM_EM = MCODIGO; SELECT BONO INTO MBONO FROM SUELDOS WHERE NUM_EM = MCODIGO; SELECT IESS INTO MIESS FROM SUELDOS WHERE NUM_EM = MCODIGO; SELECT MULTAS INTO MMULTAS FROM SUELDOS WHERE NUM_EM = MCODIGO; MSUELDO:=MNUMHORAS * MVALHORA; MTOTAL:=MSUELDO+MTRANS+MBONO-MIESS-MMULTAS; DBMS_OUTPUT.PUT_LINE(MNOMB || ' SU SUELDO A PAGAR ES:'||MTOTAL); END; /

EJERCICIO N.- 6

SENTENCIA SELECT

1. SELECCIONAR LOS NOMBRES Y EL RUC DE TODOS LOS PROVEEDORES SELECT PROVEEDORES.NOM_PROV, PROVEEDORES.RUC_PROV

Sistemas Autor:Diego Snchez

Pgina 129

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

FROM PROVEEDORES;

2. SELECCIONAR LOS NOMBRES Y LA DIRECCION DE TODOS LOS CLIENTES SELECT CLIENTES.NOM_CLI, CLIENTES.DIR_CLI FROM CLIENTES;

3. SELECCIONAR TODAS LAS COMPRAS > A 500 DOLARES


SELECT TOT_COM FROM COMPRAS WHERE TOT_COM>500;

4. SELECCIONAR TODAS LAS VENTAS DEL 01 AL 30 DE ENERO DEL 2009 SELECT VENTAS.FECHA_VEN FROM VENTAS WHERE FEC_FACT BETWEEN (TO_DATE (#01/01/2009#), TO_DATE (#30/01/2009#,)) ;

5. SELECCIONAR EL NOMBRE DE TODOS LOS PRODUCTOS QUE NO TENGAN EXISTENCIA SELECT NOMBRE_PRODUCTO FROM PRODUCTO WHERE STOCK=0;

6. SELECCIONAR: EL NOMBRE DEL CLIENTE,EL N:_FACTURA,EL SUBTOTAL,EL DESCUENTO,EL VALOR DEL IVA Y EL TOTAL DE LA FACTURA DE TODAS LAS VENTAS QUE TENGAN DESCUENTOS SELECT CLIENTES.NOMBRE, CLIENTES.APELLIDO,NUMERO_FAC VENTAS.SUB_TOTAL_VENTAS, VENTAS.IVA_VALOR, VENTAS.DESCUENTO_VENTAS, VENTAS.TOTAL_VENTAS FROM VENTAS INNER JOIN CLIENTES ON VENTAS.ID_CLIENTES = CLIENTES.ID_CLIENTES WHERE (VENTAS.DESCUENTO_VENTAS > 0);

7. SELECCIONAR LA FECHA/FACTURA, LA SUMA DE SUBTOTAL, LA SUMA DE DESCUENTOS, LA SUMA DE VALLOR IVA, LA SUMA DE

Sistemas Autor:Diego Snchez

Pgina 130

UNIVERSIDADREGIONALAUTNOMADELOSANDESUNIANDES

MANUAL ORACLE9i

TOTAL, AGRUPADO X FECHAS, DESDE UNA FECHA INICIAL HASTA UNA FECHA FINAL.
SELECT FECHA_FAC, SUM (SUBTOTAL); SUM (DESC), SUM (IVA).SUM (TOTAL) FROM VENTAS WHERE FEC_FACT BETWEEN (TO_DATE (#01/01/2009#), TO_DATE (#31/10/2009#,)) GROUP BY FECHA_FACT;

8. SELECCIONAR EL NOMBRE DE LOS PRODUCTOS QUE NO SE HAN VENDIDO EN UN RANGO DE FECHAS (DESDE, HASTA) SELECT DISTINCT PRODUCTO.ID_PRODUCTO, PRODUCTO.NOMBRE_PRODUCTO FROM DETALLE_VENTAS RIGHT OUTER JOIN PRODUCTO ON DETALLE_VENTAS.ID_PRODUCTO = PRODUCTO.ID_PRODUCTO WHERE (DETALLE_VENTAS.ID_PRODUCTO IS NULL);

BIBLOGRAFA

http/www/oracle%20trabajo/tablespace0.htm%20esto%20es%20muy%20bien.htm http/www/oracle%20trabajo/tablespaces-en-oracle.htm http/www/oracle%20trabajo/ORACLE%20SQL%20Plus%20%20An%20Introduct ion%20and%20Tutorial.htm. http/www/oracle%20trabajo/orarq.html%20%20arquitectura.htm http/www/oracle%20trabajo/Controlar%20espacio%20de%20los%20tablespaces% 20en%20Oracle%20%C2%AB%20Base%20de%20Datos%20y%20Technolog%C 3%ADa%20en%20la%20Web.htm

Sistemas Autor:Diego Snchez

Pgina 131

You might also like