Modulo Gestion de Bases de Datos
Modulo Gestion de Bases de Datos
Modulo Gestion de Bases de Datos
PRESENTACIN
La Universidad Autnoma de Quito pone a disposicin de los estudiantes de la modalidad semipresencial esta ayuda metodolgica vlida para la formacin de profesionales en el rea informtica capacitados para el anlisis, diseo, creacin y mantenimiento de sistemas que utilicen bases de datos. El estudio y la correcta comprensin de los principios bsicos referentes a las bases de datos son de capital importancia para los profesionales de la informtica y para otros especialistas cuyo trabajo se desarrolla dentro del mbito de la sociedad de la informacin y del conocimiento. Esta ayuda permite al estudiante adquirir los conocimientos necesarios para poder realizar sistemas con bases de datos relacionales mediante la prctica numerosos ejemplos. Este mdulo pretende ser una introduccin a Forms y Report como componentes de Oracle. No se pretende realizar un estudio exhaustivo de todas las opciones, solo se ha pretendido introducir y explicar las opciones ms tiles, dejando los detalles ms especficos a los manuales de referencia. Deseo el mejor aprovechamiento de este material y el xito en esta profesin.
INTRODUCCION
Este mdulo trata sobre la utilizacin de herramientas de desarrollo de aplicaciones de Oracle como el mejor manejador de bases de datos que existen en la actualidad. Trata sobre la versin 8 de Oracle, que cualquiera podra decir que se ha quedado obsoleto, y la verdad es que no le falta razn. Sin embargo, la mayora de los captulos no tratan de temas especficos y avanzados de Oracle, sino sobre conceptos de bases de datos relacionales, la arquitectura interna o el uso de Forms y Report, y la verdad es que sobre estos tres aspectos no hay cambios muy a menudo. De todas formas, algunos detalles de lo que explico han podido quedar obsoletos, as que recomiendo que consulten con los manuales de Oracle para asegurarse sobre cmo funcionan en las versiones actuales. Es por eso que este mdulo no da los detalles ms ocultos de Oracle, ni los trucos ms avanzados para optimizar bases de datos, ni siquiera pretende ser un texto de referencia para consultar la sintaxis de las instrucciones, sino que ayudar a introducir en el mundo de Oracle, empezando desde cero, y llegando a un nivel que permitir seguir aprendiendo por si mismo. Tambin puede ser til para los que han trabajado algo con SQL en otras bases de datos, y quieren comprender la arquitectura interna de Oracle y los conceptos de base y programacin en un entorno cliente servidor con las herramientas de Oracle.
ACTIVIDADES: 1. Recopilar informacin de la normalizacin de bases de datos. 2. Obtener manuales de referencia de Oracle CRITERIOS DE EVALUACIN: Examen escrito Desarrollo de ejercicios Trabajos individuales
GESTIN DE BASES DE DATOS CAPITULO I DEFINICIONES Y CONCEPTOS BASICOS Que es una Base de Datos
Es una coleccin de archivos interrelacionados, creados y manejados con un DBMS. El contenido de una base de datos engloba a la informacin concerniente (almacenadas en archivos) de una organizacin, de tal manera que los datos estn disponibles para los usuarios. Tambin podemos decir que es una agrupacin de datos almacenados bajo las siguientes caractersticas: Integrados o Combinacin de archivos separados o Control centralizado o Poca redundancia Compartidos o Mltiples aplicaciones o Acceso solamente a personas autorizadas Concurrentemente Compartidos o Integridad de los datos o Deteccin de DEAD-LOCKS Independientes o Mtodo de acceso o Estructura de datos
USUARIO
Programa o nivel de software que sirve de interface entre el usuario y la Base de Datos fsica Nivel de Software mencionado que principalmente facilita: o Uso simultneo de la Base de Datos por mltiples usuarios o Herramientas para acceder y manipular los datos de la Base de Datos Una Estructura para ORGANIZAR datos normalizados.
Normalizacin
La normalizacin es el proceso mediante el cual se transforman datos complejos a un conjunto de estructuras de datos ms pequeas, que adems de ser ms simples y ms estables, son ms fciles de mantener. Tambin se puede entender la normalizacin como una serie de reglas que sirven para ayudar a los diseadores de bases de datos a desarrollar un esquema que minimice los problemas de lgica. Cada regla est basada en la que le antecede. La normalizacin se lleva a cabo por cuatro razones: 1. Estructurar los datos de forma que se puedan representar sus relaciones pertinentes. 2. Permitir la recuperacin sencilla de los datos en respuesta a las solicitudes de consultas y reportes. 3. Simplificar el mantenimiento de datos (altas, bajas, modificaciones, consultas) 4. Reducir la necesidad de estructurar los datos cuando surjan nuevas aplicaciones.
El modelo lgico
Un primer paso en el modelo de procesos es la construccin de un modelo lgico de datos usados en el negocio. El modelo lgico es un diagrama normalizado de datos. Ej Tabla Worker Name Age Lodging Manager Ardes Skill1
Clave Principal
EJERCICIO: Realice el script respectivo para la creacin fsica de la bases de datos del modelo E-R anterior utilizando comandos SQL.
MODULOS DE ORACLE
Oracle esta compuesta por:
Export / Import
SQL*Plus
Oracle Kernel
Forms
Diccionario DATO S
DataLoader
Datos
Report
9
User Programs Pro * Oracle
INSTANCIA DE ORACLE
Cuando una base de datos es arrancada en un servidor, Oracle reserva un rea de memoria llamada SGA (System Global Area) y ejecuta uno o ms procesos en back ground. En el SGA es donde se encuentra el Area de Contexto, los buffers, tablas y redo logs a travs de los cuales fluyen todas las transacciones entre las aplicaciones y el almacenamiento de datos y sirven a uno o ms usuarios de la base de datos.
Por cada instancia de base de datos, tendremos una zona de memoria global, el SGA, donde se almacenan aquellos datos y estructuras que deben se compartidos entre distintos procesos de la base de datos, como los procesos propios de Oracle y cada uno de los subprocesos que gestionan la conexin. El tamao del SGA es uno de los puntos ms crticos a la hora de mejorar el rendimiento de una base de datos, ya que, cuanto mayor memoria se reserve (mientras no sea memoria virtual), ms rpidas se realizarn ciertas operaciones. Por ejemplo, las ordenaciones (una de las operaciones que ms rpido deben hacerse) se realizan en el SGA si hay espacio suficiente. En caso contrario, se realizarn directamente en el disco, utilizando segmentos temporales. El SGA se divide en cuatro grandes zonas:
Database buffer cache: almacena los bloques que se han ledo de los datafiles. Cada vez que es necesario acceder a un bloque, se busca el bloque en esta zona, y en caso de no existir, se lee de nuevo del datafile correspondiente. Cuantos ms bloques quepan en esta zona de memoria, mejor ser el rendimiento. Area de Contexto: es la zona de memoria se almacenan compiladas las ltimas sentencias SQL (y bloques PL/SQL) ejecutadas. Adems se almacenan las variables acopladas (bind), el rbol de parsing, los buffer de ejecucin y el plan de ejecucin. Es importante que siempre que se utilice la misma sentencia, sea exactamente igual, para poder aprovechar sentencias previas almacenadas en el SQL Area. Es decir, las siguientes sentencias: SELECT * FROM TABLA select * from tabla SELECT * FROM TABLA SELECT *
10
Redo cache: almacena los registros de redo de las ltimas operaciones realizadas. Estos registros se almacenan en los archivos de redo, que sirven para recomponer la base de datos en caso de error. Dictionary cache: almacena datos del diccionario de Oracle, para utilizarlos en los planes de ejecucin, optimizacin de consultas, etc. Cuantos ms datos quepan en esta zona, mayor probabilidad habr de que el dato que necesitamos ya est en memoria, y no sea necesario acceder a las tablas del diccionario para leerlo.
1. La Instancia de memoria que contienen la SGA 2. Ejecucin de procesos en back ground (Procesos en segundo plano)
3. Archivos fsicos de la Base de Datos entre los que tenemos: Archivos de inicializacin Adems de estructuras de disco y de memoria, un servidor Oracle necesita ciertos archivos para poder ejecutarse. Estos archivos se establecen durante la creacin de la base de datos, y se consultarn cada vez que se arranque la base de datos, por lo que deben estar disponibles. Bsicamente podemos diferenciar los siguientes tipos de archivos:
a. Control files: son archivos de control que se consultan cada vez que se arranca la
base de datos. Indica datos como la localizacin de los datafiles, nombre de la base de datos.
b. Init file: es el archivo que contiene los parmetro de inicio de la base de datos
(tamao del bloque, tamao del SGA, etc.). Normalmente tiene el nombre INIT.ORA
c. Redo logs: estos archivos contienen un historial de todas las instrucciones que
han sido lanzadas a la base de datos, para poder recuperarla en caso de fallo. No se utilizan durante la inicializacin, sino durante toda la ejecucin de la base de datos.
11
Despus de arrancada una instancia, Oracle asocia esta instancia con la base de datos especifica. Esto se conoce con el nombre de Montar la Base de Datos. La Base de Datos luego debe ser accesible a usuarios autorizados y se conoce con el nombre de Abrir la Base de Datos. PROCESOS DE ORACLE DATABASE WRITER(dbwr) Se encarga de escribir bloques de datos modificados desde los buffers de la base de datos a los datafiles. LOG WRITER(lgwr) Escribe los buffers de los REDO LOGS al disco. SYSTEM MONITOR(smon) Ejecuta una recuperacin de la base de datos cuando una instancia falla al ser arrancada, limpiando los segmentos temporales que ya no estn en uso y restaura las transacciones al estado que estaban antes que se produzca la falla. PROCESS MONITOR(pmon) Ejecuta procesos de recuperacin cuando un proceso de usuario falla. Es responsable de limpiar el cach y libera recursos que el proceso usaba realizando un ROLLBACK de la base de datos. ARCHIVER(arch) Escribe los archivos REDO LOG a un dispositivo de archivo cuando el rea de los mismos se haya llenado. Checkpoint (CKPT) Durante perodos especficos de tiempo, los buffers de la base de datos en el SGA son escritos a los datafiles por el DBWR; este proceso es llamado checkpoint, el cual es responsable de sealar al DBWR que buffers han sido actualizados.
12
TABLESPACE
Un tablespace no es un fichero fsico en el disco, simplemente es el nombre que tiene un conjunto de propiedades de almacenamiento que se aplican a los objetos (tablas, ndices, permisos, secuencias) que se van a crear en la base de datos bajo el tablespace indicado. Un objeto en base de datos debe estar almacenado obligatoriamente dentro de un tablespace. Las propiedades que se asocian a un tablespace son: Localizacin de los ficheros de datos. Especificacin de mximas cuotas de consumo de disco. Control de la disponibilidad de los datos (en lnea o fuera de lnea). Backup de datos.
Cuando un objeto se crea dentro de un cierto tablespace, este objeto adquiere todas las propiedades antes descritas del tablespace utilizado.
13
Si nos fijamos, se puede apreciar que es posible tener una tabla en un tablespace, y los ndices de esa tabla en otro. Esto es debido a que los ndices no son ms que objetos independientes dentro de la base de datos, como lo son las tablas. Y al ser objetos independientes, pueden ir en tablespaces independientes. En el esquema tambin vemos que hay un tablespace Temporal (en gris oscuro). Este representa las propiedades que tendrn los objetos que la base de datos cree temporalmente para sus clculos internos (normalmente para ordenaciones y agrupaciones). Su creacin difiere en una de sus clusulas de creacin. El tablespace RO (en gris claro) difiere de los dems en que es de solo lectura (Read Only), y que por lo tanto todos los objetos en l contenidos pueden recibir rdenes de consulta de datos, pero no de modificacin de datos. Estos pueden residir en soportes de slo lectura, como pueden ser CDROMs, DVDs, etc. Cuando se crea un tablespace, ste se crea de lectura/escritura. Despus se puede modificar para que sea de solo lectura.
El Tablespace System
Cuando se crea una base de datos es obligatorio crear un tablespace inicial en el que se van a crear los usuarios SYS y SYSTEM automticamente. Estos usuarios son los que tienen la informacin necesaria para que funcione nuestra base de datos y podamos hacer todo tipo de operaciones como, por ejemplo, crear nuevos usuarios o crear nuevos tablespaces y tablas en esos nuevos tablespaces. Este tablespace inicial se llama por defecto SYSTEM. Es una pieza clave para un buen funcionamiento de la base de datos ya que en l residen todos los objetos de los usuarios SYS y SYSTEM. En l se almacenan todos los datos de sistema, el catlogo y todo el cdigo fuente y compilado de procedimientos PL/SQL. Es muy recomendable crear al menos otro tablespace nuevo distinto al SYSTEM. As, todos los nuevos usuarios que creemos en nuestra base de datos, junto con todas sus tablas e ndices se almacenarn en un tablespace diferente a SYSTEM. Se realiza esta separacin para evitar que se bloquee toda la base de datos si ocurre algo grave en el tablespace SYSTEM. Suele ser habitual que para nuestras aplicaciones creemos usuarios y tablas en las que introducimos informacin y que sin darnos cuenta se llene de informacin el tablespace en el que estn estas tablas. Si no hemos sido previsores, podemos haber llenado el tablespace SYSTEM con lo que es posible que se paralice toda la base de datos. Un tablespace puede estar en lnea o fuera de ella (Online o OffLine), esto es que todos los objetos contenidos en l estn a disposicin de los usuarios o estn inhabilitados para restringir su uso.
14
Manipulando Tablespaces
Ahora que nos hemos hecho una idea acerca de qu es un tablespace, vamos a realizar sobre l las manipulaciones bsicas. Partimos de una base de datos creada y levantada. Nos conectaremos a la misma con el usuario SYSTEM y su contrasea. La contrasea del usuario SYSTEM al crear la base de datos es, por defecto, MANAGER. Como medida de seguridad se recomienda cambiarla cuanto antes. Por lo tanto nos conectaremos bien al SqlPlus mediante sqlplus system/manager, o bien al server manager mediante el comando svrmgrl system/manager. Crear un Tablespace. En primer lugar vamos a crear un tablespace llamado Prueba. Esto lo podemos hacer por ejemplo desde el SQLPLUS conectados como system. Create tablespace prueba datafile '/users/oradata/orcl/prueba01.dbf' size 100M; Con esta sentencia estamos creando en nuestra base de datos un tablespace nuevo llamado "prueba" y que est formado fsicamente por un fichero (datafile) llamado prueba01.dbf de 100 Mbytes y que est en el directorio "/users/oradata/orcl". Esta sentencia crea fsicamente dicho fichero. Aumentar de tamao un Tablespace. Para aumentar el tamao de un tablespace que se nos ha quedado ya pequeo, tenemos varias posibilidades. La primera de ellas es crear un nuevo datafile y asignrselo al tablespace que queremos aumentar. Esto lo podemos hacer con la instruccin siguiente. Alter tablespace prueba add datafile '/users/oradata/orcl/prueba02.dbf' size 50M; Con esta sentencia hemos creado un nuevo fichero fsico en nuestro directorio /users/oradata/orcl de 50 Mbytes de tamao y se lo hemos asignado al tablespace "prueba". Otra posibilidad es ampliar el tamao de uno de los ficheros fsicos o datafiles que forman el tablespace. Esto lo podemos hacer fcilmente con la siguiente instruccin: Alter datafile '/users/oradata/orcl/prueba01.dbf' resize 150M; Con esta sentencia lo que hacemos es aumentar el datafile que forma parte de nuestro tablespace en 50 Mbytes. Tanto en la instruccin de crecin como en la de aumentar el tamao de un tablespace se puede observar fcilmente cmo un datafile pertenece solamente a un tablespace ya que en la propia sentencia se crea el fichero fsico o datafile.
15
En un tablespace puede haber objetos de varios tipos, como hemos indicado. Si en un tablespace existen segmentos de rollback activos, no se puede poner offline, primero hay que desactivar los segmentos de rollback activos del tablespace. Cmo sabemos los rollback segments que existen en un tablespace y su estado?. Muy sencillo, con la siguiente sentencia: select rollback_segment, status, tablespace_name from dba_rollback_segs; As podremos ver todos los rollback que tenemos, en qu estado se encuentran (online, offline) y en qu tablespace estn. Si comprobamos que en el tablespace que vamos a poner offline tenemos algn segmento de rollback online (activo), debemos ponerlo offline antes que el tablespace. Para desactivar un segmento de rollback, ejecutaremos la siguiente sentencia desde el SqlPlus o desde el server manager. alter rollback segment nombre_de_segmento offline;
16
17
Tablespaces Temporales
Un tablespace temporal es aqul en el que solamente puede haber objetos temporales. No se pueden crear en l objetos permanentes como pueden ser los ndices, las tablas o los segmentos de rollback. Estn especialmente preparados para optimizar las operaciones en las que se lleven a cabo ordenaciones. Por lo tanto est muy recomendado tener al menos un tablespace temporal en cada base de datos. Algunas de las operaciones que implican realizar ordenaciones son, las selects que tienen group by, las que tienen order by, la creacin de ndices y analizar ndices para calcularles las estadsticas. En todos estos casos, cuando para realizar la ordenacin el servidor no encuentra espacio suficente libre en la memoria, utiliza el tablespace temporal. Los rendimientos son muy superiores comparndolos con los tiempos que se empleara en realizar las ordenaciones
18
19
En el esquema podemos ver como el Tablespace A est compuesto (fsicamente) por tres datafiles (DATOS_1.ORA, DATOS_2.ORA y DATOS_3.ORA). Estos tres datafiles son los ficheros fsicos que soportan los objetos contenidos dentro del tablespace A. Aunque siempre se dice que los objetos estn dentro del tablespace, en realidad las tablas estn dentro del datafile, pero tienen las propiedades asociadas al tablespace.
20
Creacin y Manipulacin
La creacin de datafiles est estrechamente relacionada con el tablespace al que va a pertenecer. Tenemos varias formas de crear datafiles. Cada vez que se crea un tablespace nuevo, hay que indicar obligatoriamente cual es el datafile que va a pertenecer a dicho tablespace y, en ese momento, se crea tanto el tablespace como su datafile. Tambin se pueden aadir datafiles nuevos a un tablespace que ya existe. Esto se suele hacer cuando un tablespace se est llenando y est a punto de llegar a su capacidad mxima. Al aadir un datafile a un tablespace, se aumenta el espacio disponible en dicho tablespace en tantos megabytes como tenga el datafile nuevo recin creado. Creacin de un nuevo datafile de 50 megabytes junto con un nuevo tablespace: Create tablespace nombre_tablespace datafile '/users/oracle/orcl/nombre_datafile.dbf' size 50M; Una vez creado este tablespace, si con el tiempo queremos aadirle espacio, lo podemos hacer creando un nuevo datafile y asignndoselo al tablespace: Alter tablespace nombre_tablespace add datafile '/users/oracle/orcl/nombre_datafile2.dbf' size 100M; Con estas dos instrucciones hemos creado un tablespace nuevo en nuestra base de datos en el que caben 150 megabytes de informacin. Este espacio est formado fsicamente por dos ficheros llamados nombre_datafile.dbf y nombre_datafile2.dbf que se encuentran en el directorio /users/oracle/orcl de nuestra mquina y que ocupan 50 y 100 Mbytes respectivamente.
21
22
Renombrando Datafiles
Existe la posiblidad de cambiarle el nombre a un datafile o de cambiarlo de directorio. Esta operacin no consiste simplemente en ir al sistema operativo y cambiarle el nombre, ya que si hiciramos eso, Oracle no se da cuenta de que hemos movido de sitio un datafile y cuando intenta acceder a informacin de ese datafile muestra mensajes de error indicando que no lo encuentra. Hay que distinguir entre los datafiles del tablespace SYSTEM y el resto. Los datafiles del tablespace SYSTEM son especiales y no se pueden mover con la misma facilidad que los dems. Renombrando datafiles que no son del tablespace SYSTEM En primer lugar, hay que comprobar cual es nombre y el path completo del fichero a mover y el estado en que se encuentra dicho fichero. Para realizar esta comprobacin podemos consultar la vista dba_data_files. select file_name, status, bytes from dba_data_files; En file_name se nos indica cual es el nombre del datafile que nos interesa, con todo su path, y adems vemos cuanto ocupa. El campo status podremos comprobar si el datafile est disponible (available). Nota: No se debe mover el datafile fsico sin antes poner el tablespace offline. Hay que sealar que file_name es el nombre que Oracle cree en ese mismo instante que tiene su datafile. Si vamos al sistema operativo y movemos el datafile de sitio, Oracle no es consciente de lo que hemos hecho por lo que si volvemos ha realizar esta select nos seguir dando los mismos valores. Hay que conseguir decirle a Oracle que realmente hemos movido o renombrado el fichero. Ahora que sabemos cual es el path y nombre completo de nuestro datafile, tenemos que evitar que se realicen operaciones que modifiquen los datos de los objetos de nuestro tablespace, para que as consigamos tener el contenido del datafile esttico. Esto se consigue poniendo el tablespace en estado read only, como se explic en el tema de los tablespaces. alter tablespace nombre_tablespace read only; Para comprobar que realmente est nuestro tablespace en estado read only, podemos consultar la vista dba_tablespaces. En estos momentos, los usuarios de la base de datos, pueden acceder y modificar la informacin de cualquier tablespace que no sea el que estamos manipulando, en el cual, solamente podrn realizar operaciones de lectura, nunca inserciones ni modificaciones ni borrados de datos. Es en este instante, cuando sabemos que no se est modificando el contenido de nuestro tablespace y, por lo tanto, de nuestro datafile, cuando debemos ir al sistema operativo y hacer una
23
24
Oracle almacena la informacin en unidades lgicas que son los segmentos, las extensiones y los bloques. Estas tres unidades estn relacionadas entre s. Un segmento est formado por una o varias extensiones y cada extensin est formado por varios bloques.
SEGMENTOS
Un segmento almacena la informacin de una estructura lgica de Oracle dentro de un Tablespace. Est formado por una o ms extensiones y, a medida que va creciendo el segmento se van asignando nuevas extensiones al mismo. Hay cuatro tipos de segmentos: de datos, de ndices, temporales y de rollback. Se puede decir que, segmento es a un objeto base de datos, lo que datafile a un tablespace: un de un el
25
EXTENSIONES
Una extensin es una unidad lgica de almacenamiento que est formada por un nmero determinado de bloques de datos contiguos. La agrupacin de una o varias extensiones forman un segmento que puede ser una tabla, un ndice, un segmento de rollback o un segmento temporal. Por lo tanto, datos de una tabla, sabemos que estn en un solo segmento de tipo tabla, que a su vez estar formado por una o varias extensiones y que, cada una de esas extensiones est formada por un nmero determinado de bloques de datos. Cuando se crea un segmento nuevo, es decir, una tabla, un ndice o un segmento de rollback, se crea obligatoriamente una extensin en dicho segmento (en el caso de los rollback se crean dos). El tamao de esta extensin inicial viene dado por el valor parmetro "initial" que se indica en el momento de crear el segmento.
En el esquema vemos como el objeto (tabla) FACTURA tiene un segmento en el datafile A-1, y este segmento est compuesto de 3 extensiones. Una de estas extensiones tiene un color distinto. Esto es porque existen dos tipos de extensiones:
INITIAL (extensiones iniciales): estas son las extensiones que se reservan durante la creacin del objeto. Una vez que un objeto est creado, no se puede modificar su extensin inicial. NEXT (siguientes o subsiguientes extensiones): toda extensin reservada despus de la creacin del objeto. Si el INITIAL EXTENT de una tabla est llena y se est intentando insertar ms filas, se intentar crear un NEXT EXTENT (siempre y cuando el datafile tenga espacio libre y tengamos cuota de ocupacin suficiente).
Sabiendo que las extensiones se crean en momentos distintos de tiempo, es lgico pensar que unas extensiones pueden estar fragmentadas de otras. Un objeto de base de datos no reside todo junto dentro del bloque, sino que residir en tantos bloque como extensiones tenga. Por eso es crtico definir un buen tamao de extensin inicial, ya que, si es lo suficientemente grande, el objeto nunca estar fragmentado.
26
27
El tamao de las unidades de asignacin del sistema operativo se define durante el particionado del disco duro (FDISK, FIPS), y el espacio de los data blocks de Oracle se define durante la instalacin y no puede ser cambiado. Como es lgico, el tamao de un data block tiene que ser mltiplo del tamao de una unidad de asignacin, es decir, si cada unidad de asignacin ocupa 4 K, los data blocks pueden ser de 4K, 8K, 12K para que en el sistema operativo ocupen 1, 2, 3 unidades de asignacin.
STORAGE
Todo objeto que tenga ocupacin fsica en la Base de Datos, tendr una clusula storage en su sintaxis de creacin. El objetivo de esta clusula es definir ciertas propiedades de almacenamiento para el objeto creado, como puede ser tamao de la extensin inicial, tamao de las siguientes extensiones... Sintaxis: STORAGE (INITIAL entero {K|M} NEXT entero {K|M} {MINEXTENTS entero} {MAXEXTENTS entero | UNLIMITED} {PCTINCREASE % entero} ) Initial: Indica el tamao en bytes de la primera extensin que tendr el segmento. Se puede indicar despus del valor una "K" o "M" para que el valor sea interpretado como Kilobytes o Megabytes en lugar de bytes. Si no se pone explcitamente este parmetro en la creacin del segmento, se hereda por defecto el valor que tenga este parmetro en el tablespace en el que se est creando el segmento y que, si no se ha indicado tampoco, por defecto son 5 bytes. Cuando se crea una extensin oracle redondea el tamao indicado al siguiente mltiplo superior a 5 bloques de datos. Por lo tanto, si nuestros bloques son de 8192 bytes y creamos un segmento con un inital de 256Kbytes, realmente estamos creando un segmento de 32 bloques y oracle lo redondea a 35 bloques que es el primer mltiplo superior a 5 de 32. Por lo tanto, nuestra initial extent ser de 35 * 8192 = 280 Kbytes.
28
29
Minextents: Se indica el nmero de extensiones que se deben reservar a la vez para un determinado segmento en el momento de su creacin. Por defecto es una excepto en los segmentos de rollback que son dos. Puede que las extensiones no estn contiguas. Por supuesto, si en la clusula storage en la cracin del objeto se indican valores para next y pctincrease, las extensiones iniciales que se crean se recalculan para cumplir lo indicado en estos parmetros. Por ejemplo, creamos un segmento con minextents = 4, con un initial de 262144, next de tambin 262144, bytes y con un pctincrease del 50%, el resultado ser la creacin de 4 extensiones de tamaos, 286720, 286720, 409600, 614400 y de un next extent de 884736. Estos tamaos vienen de redondear 32, 48 y 72 a mltiplos de 5 y el next extent es 108 bloques que es el 50% de 72 bloques. Maxextents: Es el numero mximo de extensiones que se pueden crear en ese objeto, contando tambin la primera. Se puede especificar UNLIMITED con lo que pueden crecer indefinidamente. No se recomienda que a los segmentos de rollback se les asigne unlimited maxextents ya que con operaciones complejas podran aumentar excesivamente de tamao y llenaran el disco. As que hay que tener cuidado a la hora de crear rollback segments, sobretodo porque heredan por defecto el valor del parmetro que tenga asignado el tablespace en el que se crean. Vamos a poner un ejemplo de creacin de una tabla en la que se indican valores para los parmetros de la clusula storage que acabamos de explicar. Crearemos, por ejemplo, una tabla llamada empleado que contiene un solo campo, nombre, con un initial extent de 256 Kilobytes, con 512 Kilobytes de next extent, un pctincrease de 50, con 3 extensiones iniciales y con un mximo de 10 extensiones: create table empleado (nombre varchar2(50)) storage (initial 256K next 512K pctincrease 50 minextents 3 maxextents 10) Si consultamos la vista dba_extents nos mostrar que ha creado las 3 extensiones que le hemos indicado con los siguientes valores: Select extent_id, bytes, blocks from dba_extents where segment_name = 'EMPLEADO' order by extent_id; 0 1 2 286720 532480 819200 35 65 100
Y, al consultar la vista dba_segments o incluso la vista user_tables para este segmento en concreto, observamos el valor de next_extent: Select next_extent from user_extents where segment_name = 'EMPLEADO'; 1179648 que es el resultado de 512K * 1,5 * 1,5.
30
Por lo tanto, en nuestro caso, si el primer conjunto que encuentra fuera de 35 o ms bloques, cogera solo los 30 primeros, mientras que si encuentra un conjunto de entre 31 y 34 se lo quedara entero. Nota: En este paso se puede comprobar que, aunque a un segmento le asignemos pctincrease 0, puede que luego nos encontremos en dba_extents algun extensin algo ms grande que otras del mismo segmento. Cuando no encuentra ningn conjunto de bloques de tamao superior al que busca, realiza un coalesce del tablespace, que es un proceso mediante el cual se unen los distintos bloques que han ido quedndose fragmentados en el tablespace al irse creando y eliminando extensiones mediante este proceso. Una vez hecho el coalesce, Oracle vuelve a repetir los pasos anteriores. Si, finalmente no encuentra ningn conjunto de bloques para crear la nueva extensin, intenta aumentar el tamao de alguno de los datafiles del tablespace. Esto solamente lo conseguir si tienen activado el autoexpand. En caso de no conseguirlo, devolver un error. CREATE TABLE FACULTAD ( CODIGO_FACULTAD NUMBER(3) NOT NULL, DETALLE VARCHAR2(10) NOT NULL, CONSTRAINT PK_FACULTAD PRIMARY KEY(CODIGO_FACULTAD) ON DELETE CASCADE TABLESPACE UNIVERSIDAD STORAGE ( INITIAL 2M NEXT 640K PCTINCREASE 50 MINEXTENTS 2 MAXEXTENTS 100) );
31
con las siguientes caractersticas fundamentales: 1. Incluye todos los comandos de SQL estudiados anteriormente 2. SELECT INSERT UPDATE DELETE.
Es una extensin de SQL, ya que este es un lenguaje no completo dado que no incluye las herramientas clsicas de programacin. Por eso, PL/SQL amplia sus posibilidades al incorporar las siguientes sentencias: Control condicional
IF ... THEN ... ELSE ... ENDIF
Ciclos
FOR ... LOOP WHILE ... LOOP
3. -
Incorpora opciones avanzadas en: Control y tratamiento de errores llamado excepciones. Manejo de cursores.
32
ExcepcinVariables BEGIN Cdigo. [EXCEPTION] Control y tratamiento de errores. Es el punto al que se transfiere el control del programa siempre que exista un problema. Los indicadores de excepcin pueden ser definidos por el usuario o por el sistema, como es por ejemplo la excepcin ZERO_DIVIDE. Las excepciones se activan automticamente al ocurrir un error, existiendo la definicin de la excepcin OTHERS que considera aquellos errores no definidos y que siempre se ubica al final de todas las excepciones. END [nombre del bloque]; Fin del Bloque.
Se inicializa con un valor que no se puede modificar. Area de trabajo que contiene los datos de la fila de la tabla en uso. El cursor es el resultado de una sentencia SELECT. para control de errores.
Con el ejemplo del fuente 2 ilustraremos las distintas secciones que componen un bloque de cdigo en PL/SQL. En este caso deseamos calcular la venta promedio del da y, en caso que la misma sea menor a lo esperado, se debe registrar en la tabla VENTABAJA.
/* --- Fuente 2 ----------------------------------------------------------DECLARE esperada CONSTANT NUMBER(5) := 500; xtotal NUMBER; xcant NUMBER; xprom NUMBER; BEGIN /*Asigna a la variable xtotal el TOTAL de las ventas y a la variable xcant la cantidad de ventas del da. */ SELECT SUM(valor),COUNT(valor) INTO xtotal,xcant FROM ventas WHERE fecha=sysdate; xprom:=xtotal/xcant; IF xprom >= esperada THEN message('Ventas por encima de la esperada'); pause; ELSE /*Se registra en la tabla ventabaja las ventas por debajo
33
Bloques annimos: Se construyen de forma dinmica y se suelen ejecutar una sola vez. Bloques nominados: Igual que los annimos pero con una etiqueta que les da nombre. Subprogramas: Procedimientos, paquetes y funciones, almacenados en la BD y que se ejecutan en mltiples ocasiones. Los subprogramas se ejecutarn mediante una llamada. Disparadores (Triggers): Bloques nominados que se almacenan en la BD y se ejecutan ante algn suceso. Para dar nombre a un bloque se le pone una etiqueta antes del DECLARE . <<etiqueta>> Para transformar un bloque en un procedimiento almacenado reemplazamos la palabra clave DECLARE por CREATE OR REPLACE PROCEDURE nombre_procedimiento AS .
Comentarios
Los comentarios pueden ser multilnea encerrados entre /* y */ o monolnea, que comienzan por
Variables y tipos:
Las variables deben declararse dentro de la seccin DECLARE, cada una debe tener su tipo asociado. Las variables pueden ser de los mismos tipos que las columnas de una base de datos:
DECLARE v_NombreEstudiante v_FechaActual v_Puntos VARCHAR2(20); DATE; NUMBER(3);
BINARY_INTEGER: Se usa para almacenar valores que slo van a ser utilizados en clculos y no se van a almacenar en la BBDD. BOOLEAN: Pueden contener los valores TRUE,FALSE o NULL. Sintaxis:
34
El atributo %TYPE permite declarar una variable del mismo tipo que otra ya existente, especialmente til para declarar variables del mismo tipo que atributos de una tabla.
NombreVariable variableReferencia%TYPE;
Identificadores
Los identificadores vlidos empiezan por una letra que puede ser seguida de una secuencia de caracteres que puede incluir letras, nmeros,$ ,_ ,#. La longitud mxima de un identificador es de 30 caracteres.
Literales
Podremos utilizar literales numricos (enteros y reales), booleanos (TRUE,FALSE Y NULL) y de carcter (uno o ms caracteres delimitados por comillas simples).
Asignacin de valores
Las dos formas que existen para asignar valores a variables de memoria, vistas en el ejemplo anterior, son: Con el operador de asignacin :=, como cuando calculamos el promedio de las ventas asignndole valor a la variable xprom con la siguiente sentencia:
xprom:=xtotal/xcant;
Con la sentencia SELECT que contiene la orden INTO, como se muestra, es la asignacin de valores a las variables xtotal y xcant con el siguiente cdigo:
SELECT SUM(valor), COUNT(valor) INTO xtotal,xcant FROM ventas WHERE fecha=sysdate;
Veamos a continuacin, con la creacin del procedimiento FECHAALTA, la asignacin de valores a una variable de registro llamada Client_Rec, que va a contener la estructura de una fila de la tabla CLIENTES y que estar formada por todos los campos correspondientes a la tabla. Para esto usaremos el atributo de variable %ROWTYPE que declara una variable de registro que contiene la estructura de la tabla, y despus, con el uso de la sentencia SELECT * INTO, se asigna a la variable de registro los valores de la fila. La referencia a un dato contenido en la variable de registro se hace de la forma variable_registro.campo, como por ejemplo cliente_rec.fecha hace referencia a la fecha del alta del cliente. Pasemos a mostrar lo anteriormente expuesto a travs del cdigo del fuente 3.
35
/* --- Fuente 3 ----------------------------------------------------------PROCEDURE FECHAALTA IS BEGIN DECLARE cliente_rec clientes%ROWTYPE; BEGIN SELECT * INTO cliente_rec FROM clientes WHERE codigo = 5; IF cliente_rec.fecha>sysdate-10 THEN message( cliente_rec.nombre|| ' Dado de alta en los ltimos 10 das'); pause; ELSE message( cliente_rec.nombre|| ' Dado de alta hace ms de 10 das'); pause; END IF; END; END;
Por esta razn, veremos a continuacin, a travs de un ejemplo, el uso de la sentencia SELECT, con control de excepciones para definir la accin a realizar en dependencia de la cantidad de filas devueltas por la consulta. Veamos con el cdigo del fuente 4 en el que se define el procedimiento VentasDe para consultar las ventas realizadas en el da de un determinado artculo:
/* --- Fuente 4 ----------------------------------------------------------PROCEDURE ventasde(xarticulo ventas.articulo%TYPE) is BEGIN DECLARE xnombre clientes.nombre%TYPE; xventas NUMBER; BEGIN SELECT nombre into xnombre FROM clientes,ventas WHERE clientes.codigo=ventas.codigo AND
36
Este procedimiento ventasde recibe un parmetro que es el nombre del artculo a consultar, por lo cual, para ejecutarlo, se debe escribir ventasde('PAPEL'). Obsrvese tambin que la sentencia SELECT COUNT(*) INTO, usada en este ejemplo, siempre devuelve una fila, ya que no existe formacin de grupos al no estar presente la orden GROUP BY. Por lo tanto, en este caso la nica accin posible a realizar es pasar a la siguiente sentencia, o sea, no se requiere control de excepciones.
Estructuras de Control
Este tema muestra como estructurar el flujo de control dentro de un programa PL/SQL. Se podr entender como las distintas sentencias se encuentran conectadas mediante un poderoso y simple control de estructuras que constan de un punto de entrada y uno de salida. En su conjunto estas estructuras pueden manejar cualquier situacin y permiten una correcta estructuracin del programa. De acuerdo con el Teorema de la Estructura, cualquier programa computacional puede ser escrito utilizando las estructuras bsicas de control que se muestran en la figura 4-1. Estas se pueden combinar de todas las maneras necesarias para alcanzar la solucin de un problema dado. Las estructuras de seleccin verifican cierta condicin, despus ejecutan cierta secuencia de expresiones dependiendo si la condicin result ser verdadera o falsa. Una condicin es cualquier variable o expresin que retorna un valor booleano (TRUE o FALSE). Las estructuras de iteracin ejecutan una secuencia de sentencias repetidamente mientras la condicin permanezca verdadera. Las estructuras de secuencia simplemente ejecutan una secuencia de estamentos en el orden que ocurren.
37
F T
Figura 4-1:
Estructuras de Control
IF THEN
Este es el modo ms simple y consiste en asociar una condicin con una secuencia de sentencias encerradas entre las palabras reservadas THEN y END IF (no ENDIF).
IF condicin THEN secuencia_de_sentencias END IF;
La secuencia de sentencias es ejecutada slo si la condicin es verdadera. Si la condicin es falsa o nula no realiza nada. Un ejemplo real de su utilizacin es la siguiente:
IF condicin THEN calcular_bonus (emp_id) UPDATE sueldos SET pago = pago + bonus WHERE emp_no = emp_id; END IF;
IF THEN ELSE
Esta segunda modalidad de la sentencia IF adiciona una nueva palabra clave: ELSE, seguida por una secuencia alternativa de acciones:
IF condicin THEN secuencia_de_sentencias_1 ELSE secuencia_de_sentencias_2 END IF;
La secuencia de sentencias en la clusula ELSE es ejecutada solamente si la condicin es falsa o nula. Esto implica que la presencia de la clusula ELSE asegura la ejecucin de alguna de las dos secuencias de estamentos. En el ejemplo siguiente el primer UPDATE es ejecutado cuando la condicin es verdadera, en el caso que sea falsa o nula se ejecutar el segundo UPDATE:
IF tipo_trans = CR THEN UPDATE cuentas SET balance = balance + credito WHERE ELSE UPDATE cuentas SET balance = balance debito WHERE END IF;
38
IF THEN ELSIF
Algunas veces se requiere seleccionar una accin de una serie de alternativas mutuamente exclusivas. El tercer modo de la sentencia IF utiliza la clave ELSIF (no ELSEIF) para introducir condiciones adicionales, como se observa en el ejemplo siguiente:
IF condicin_1 THEN secuencia_de_sentencias_1 ELSIF condicin_2 THEN secuencia_de_sentencias_2 ELSE secuencia_de_sentencias_3 END IF;
Si la primera condicin es falsa o nula, la clusula ELSIF verifica una nueva condicin. Cada sentencia IF puede poseer un nmero indeterminado de clusulas ELSIF; la palabra clave ELSE que se encuentra al final es opcional. Las condiciones son evaluadas una a una desde arriba hacia abajo. Si alguna es verdadera, la secuencia de sentencias que corresponda ser ejecutada. Si cada una de las condiciones analizadas resultan ser falsas, la secuencia correspondiente al ELSE ser ejecutada:
BEGIN IF
sueldo > 50000 THEN bonus : = 1500; ELSIF sueldo > 35000 THEN bonus : = 500; ELSE bonus : = 100; END IF; INSERT INTO sueldos VALUES (emp_id, bonus, );
END;
Si el valor de sueldo es mayor que 50.000, la primera y segunda condicin son verdaderas, sin embargo a bonus se le asigna 1500, ya que la segunda condicin jams es verificada. En este caso slo se verifica la primera condicin para luego pasar el control a la sentencia INSERT.
LOOP 39
Ej.
Con cada iteracin del ciclo las sentencias son ejecutadas. Para terminar estos ciclos de ejecucin se utiliza la palabra clave EXIT. Es posible ubicar innumerables EXIT dentro del loop, obviamente ninguno fuera de l. Existen dos modalidades para utilizar esta sentencia: EXIT y EXIT WHEN.
EXIT
La clusula EXIT obliga al loop a concluir incondicionalmente. Cuando se encuentra un EXIT en el cdigo, el loop es completado inmediatamente y pasa el control a la prxima sentencia.
LOOP IF ranking_credito < 3 THEN EXIT; --Termina el loop inmediatamente END IF; END LOOP;
Es necesario recordar que esta sentencia debe estar dentro del loop. Para completar un bloque PL/SQL antes de que su final natural sea alcanzado, es posible utilizar la instruccin RETURN.
EXIT WHEN
Esta sentencia permite terminar el loop de manera condicional. Cuando se encuentra un EXIT la condicin de la clusula WHEN es evaluada. Si la condicin es verdadera el loop es terminado y el control es pasado a la prxima sentencia. Ejemplo:
LOOP FECTH c1 INTO EXIT WHEN c1%NOTFOUND; -- termina el loop si la condicin es verdadera
40
Hasta que la condicin no sea verdadera el loop no puede completarse, esto implica que necesariamente dentro de las sentencias el valor de la condicin debe ir variando. En el ejemplo anterior si la ejecucin de FETCH retorna una fila la condicin es falsa. Cuando FETCH falla al retornar una fila, la condicin es verdadera por lo que el loop es completado y el control es pasado a la sentencia CLOSE. La sentencia EXIT WHEN reemplaza la utilizacin de un IF. A modo de ejemplo se pueden comparar los siguientes cdigos:
IF count > 100 THEN EXIT; END IF; | | | EXIT WHEN count > 100;
Ambos cdigos son equivalentes, pero el EXIT WHEN es ms fcil de leer y de entender.
Etiquetas
En todos los bloques escritos en PL/SQL, los ciclos pueden ser rotulados. Un rtulo es un identificador encerrado entre los signos dobles << y >> y debe aparecer al comienzo de un loop, como se muestra a continuacin:
<<rtulo>> LOOP secuencia de sentencias END LOOP;
WHILE - LOOP
Esta sentencia se asocia a una condicin con una secuencia de sentencias encerradas por las palabras clave LOOP y END LOOP, como sigue:
WHILE condicin LOOP secuencia_de_sentencias END LOOP;
Ej.
Antes de cada iteracin del ciclo se evala la condicin. Si sta es verdadera se ejecuta la secuencia de sentencias y el control se devuelve al inicio del loop. Si la condicin en falsa o nula, el ciclo se rompe y el control se transfiere a la prxima instruccin, fuera del loop.
FOR - LOOP
En las instrucciones anteriores el nmero de iteraciones es desconocido, mientras no se evala la condicin del ciclo. Con una instruccin del tipo FOR-LOOP, la iteracin se efecta un nmero finito (y conocido) de veces. La sintaxis de esta instruccin es la siguiente:
41
Ej.
El contador no necesita ser declarado porque por defecto se crea para el bloque que involucra el ciclo y luego se destruye. Por defecto, la iteracin ocurre en forma creciente, es decir, desde el menor valor aportado hasta el mayor. Sin embargo, si se desea alterar esta condicin por defecto, se debe incluir explcitamente en la sentencia la palabra REVERSE. Los lmites de una iteracin pueden ser literales, variables o expresiones, pero que deben evaluarse como nmeros enteros. Un contador de loop tiene validez slo dentro del ciclo. No es posible asignar un valor a una variable contadora de un loop, fuera de l. Ejemplo:
FOR cont IN 1..10 LOOP END LOOP; sum := cont + 1 ; -- Esto no est permitido
La sentencia EXIT tambin puede ser utilizada para abortar la ejecucin del loop en forma prematura. Por ejemplo, en el siguiente trozo de programa la secuencia normal debera completarse luego de 10 veces de ejecutarse, pero la aparicin de la clusula EXIT podra hacer que sta termine antes:
FOR j IN 1..10 LOOP FETCH c1 INTO emprec; EXIT WHEN c1%NOTFOUND; END LOOP;
42
GOTO
La sentencia GOTO obliga a saltar a un rtulo del programa en forma incondicional. El rtulo debe ser nico dentro de su alcance y debe preceder a una sentencia ejecutable o a un bloque PL/SQL. Cuando es ejecutada, esta instruccin transfiere el control a la sentencia o bloque rotulada. Los siguientes ejemplos ilustran una forma vlida de utilizar la sentencia GOTO y otra no vlida. Ejemplo vlido:
BEGIN <<actualiza>> BEGIN UPDATE emp SET END; GOTO <<<actualiza>> END;
Ejemplo no vlido:
DECLARE done BOOLEAN; BEGIN FOR i IN 1..50 LOOP IF done THEN GOTO fin_loop; END IF; <<fin_loop>> -- Ilegal END LOOP; -- Esta no es una sentencia ejecutable END;
Restricciones Algunas restricciones en la utilizacin de un GOTO son las siguientes: una sentencia de este tipo no puede saltar dentro de una sentencia IF, LOOP o un sub-bloque. Tampoco se puede utilizar GOTO dentro del bloque de excepciones para salir de l.
NULL
La sentencia NULL especifica explcitamente inaccin. No hace nada ms que pasar el control del programa a la siguiente sentencia. Tambin sirve como un comodn para hacer el cdigo ms entendible, advirtiendo que la alternativa sealada no requiere codificacin. Ejemplo:
EXCEPTION WHEN zero_divide THEN Rollback; WHEN value_error THEN INSERT INTO errores VALUES Commit; WHEN others THEN
43
En caso de que el valor a mostrar no sea una cadena puedes utilizar la funcin TO_CHAR() para transformarlo. El paquete DBMS_OUTPUT simplemente implementa una cola, si queremos que los datos aparezcan por pantalla tenemos que activar la opcin SERVEROUTPUT mediante la orden de SQL*Plus:
SET SERVEROUTPUT ON [SIZE tamao del buffer]
Esta orden llama de forma implcita a DBMS_OUTPUT.ENABLE que configura el buffer interno, adems con la opcin SERVEROUTPUT activada SQL*Plus llamar a DBMS_OUTPUT.GET_LINES despus de que se haya completado el bloque PL/SQL. De forma que la salida se visualizar en pantalla una vez completado el bloque PL/SQL. Una forma sencilla de leer valores de pantalla para utilizarlos puede ser con la instruccin de SQL ACCEPT y variables de sustitucin. (Variables disponibles en SQL distintas de las de PL/SQL). Una variable de sustitucin puede aparecer directamente en una sentencia SELECT sin necesidad de definirla, va precedida del smbolo & y SQL nos preguntar que valor queremos asignarle (la variable es sustituida por el literal que escribamos, si lo que escribimos queremos considerarlo como caracteres o fechas la pondremos entre comillas, para formar una cadena con el literal sustituido):
Al ejecutarse una instruccin SQL como las anteriores nos mostrar un mensaje en el PROMPT pidindonos el valor de la variable :
Especificaremos SET VERIFY OFF, si no queremos que SQL nos muestre por pantalla el valor anterior que tena la variable y el nuevo que toma.
44
Para utilizar la variable accedemos a ella anteponindole el smbolo &. No podemos utilizar ACCEPT para leer variables dentro de un bloque PL/SQL, si queremos utilizarlo debemos hacerlo fuera!
SELECT
Una orden SELECT extrae datos de la base de datos y los almacena en variables PL/SQL, podemos utilizar una lista de variables separadas por comas o una variable registro. Si la lista de seleccin es simplemente *, podra definirse este registro mediante nombre_tabla%ROWTYPE. Esta forma de la orden SELECT no debera devolver ms de una fila, si no es as PL/SQL nos devolver un mensaje de error. Para extraer ms de una fila en una consulta debe utilizarse un cursor para extraer individualmente cada fila.
45
INSERT
Ejemplo del uso de INSERT:
Si la orden INSERT contiene un SELECT, la lista de seleccin debe corresponderse con las columnas que van a ser insertadas.
UPDATE
Ejemplo de uso: Si la orden contiene un SELECT, la lista de seleccin debe corresponderse con las columnas de la clusula SET.
DELETE
Elimina filas de una tabla, indicando la clusula
46
Manejo de cursores
Para procesar una orden SQL, Oracle asigna un rea de memoria que recibe el nombre de rea de contexto. Esta rea contiene informacin sobre el procesamiento, como el nmero de filas procesadas por la orden y en caso de consultas el conjunto activo, que es el conjunto de filas resultado de la consulta.
Un cursor es un puntero al rea de contexto. Mediante un cursor, un programa PL/SQL puede controlar el rea de contexto, tendremos que utilizar un cursor, por ejemplo, para procesar las distintas filas de datos que devuelva una consulta: El conjunto de filas resultantes de una consulta con la sentencia SELECT, como vimos anteriormente, puede estar compuesto por ninguna, una o varias filas, dependiendo de la condicin que define la consulta. Para poder procesar individualmente cada fila de la consulta debemos definir un cursor (que es un rea de trabajo de memoria) que contiene los datos de las filas de la tabla consultada por la sentencia SELECT. Existen dos tipos de cursores :
Los pasos para el manejo de cursores, tema novedoso en la programacin de Oracle con PL/SQL, son: Definir el cursor, especificando la lista de parmetros con sus correspondientes tipos de datos y estableciendo la consulta a realizar con la sentencia SELECT. Abrir el cursor para inicializarlo, siendo ste el momento en que se realiza la consulta. Leer una fila del cursor, pasando sus datos a las variables locales definidas a tal efecto. Repetir el proceso fila a fila hasta llegar a la ltima. Cerrar el cursor una vez que se termin de procesar su ltima fila.
47
Apertura de un cursor
La sintaxis para abrir un cursor es:
OPEN nombre_cursor;
Al abrir un cursor suceden tres cosas: Se examinan los valores de las variables acopladas. Se determina el conjunto activo. Se hace apuntar el puntero del conjunto activo a la primera fila.
Podemos reabrir un cursor que ya estaba abierto, PL/SQL ejecutar implcitamente una orden CLOSE antes de reabrirlo. Tambin podemos tener varios cursores abiertos al mismo tiempo.
Despus de cada FETCH, se incrementa el puntero del conjunto activo para que apunte a la siguiente fila. De esta forma con un bucle cada FETH devolver filas sucesivas del conjunto activo. El atributo de cursores %NOTFOUND se utiliza para determinar cuando se ha terminado de extraer todo el conjunto activo.
Cierre de un cursor
Cuando se ha terminado de extraer el conjunto activo debe cerrarse el cursor. La sintaxis para el cierre de un cursor es:
CLOSE nombre_cursor;
%FOUND
Luego de que un curso ha sido abierto, pero antes de recuperar la primera fila el valor del atributo
48
%NOTFOUND
Es el opuesto lgico de %FOUND. Cada vez que una sentencia FETCH retorne una fila vlida, este atributo devolver FALSO. Slo alcanzar el valor TRUE cuando no haya ms filas en un cursor y se ejecute la sentencia FETCH (sin xito por lo tanto). Ejemplo:
LOOP FETCH c1 INTO EXIT WHEN c1%NOTFOUND; END LOOP;
%ISOPEN
Este atributo toma el valor verdadero (TRUE) cuando un cursor se encuentra abierto. De otra manera, retorna FALSO.
%ROWCOUNT
Cuando un cursor es abierto, este atributo es seteado en 0 (cero). En adelante, cada vez que se recuperen filas exitosamente con un FETCH, este valor se ir incrementando en uno. Cuando se utiliza con cursores implcitos, este atributo devuelve el total de filas afectadas por una instruccin del tipo INSERT, UPDATE o DELETE..
Cursores parametrizados
Se utiliza tambin la sentencia OPEN para pasar los parmetros al cursor, en caso de que ste los requiera. Por ejemplo:
DECLARE emp_name emp.name%TYPE; salary emp.sal%TYPE; CURSOR c1 (name VARCHAR2, salary NUMBER) IS SELECT
49
Cursores Implcitos
Los cursores explcitos sirven para procesar rdenes SELECT que devuelven ms de una fila. Sin embargo, todas las rdenes SQL se ejecutan dentro de un rea de contexto y tienen, por tanto, un cursor asociado. Este cursor se conoce con el nombre de cursor SQL y sirve para procesar las rdenes INSERT, UPDATE, DELETE, y las rdenes SELECT-INTO de una sola fila. ste se abre y cierra automticamente, pero podemos acceder a sus atributos. Se muestran dos ejemplos de su uso en los que se ejecuta una orden INSERT si la orden UPDATE no encuentra ninguna fila coincidente:
Aunque se puede emplear SQL%NOTFOUND con las rdenes SELECT-INTO, realmente no resulta til porque se producir un error Oracle cuando no encuentre ninguna fila coincidente.
50
Ver figura 1
Con el procedimiento VENTAS5 del fuente 5, mostraremos cmo usar el cursor cventa anteriormente definido, con el fin de registrar en la tabla VENTAMAYOR las 5 mayores ventas en una fecha dada.
/* --- Fuente 5 ----------------------------------------------------------PROCEDURE VENTAS5 (xfecha DATE) is BEGIN DECLARE CURSOR cventas (cfecha DATE) IS SELECT articulo,valor FROM ventas WHERE fecha=cfecha ORDER BY valor DESC; xarticulo xvalor BEGIN OPEN cventas(xfecha); FOR i IN 1..5 LOOP FETCH cventas INTO xarticulo,xvalor; EXIT WHEN cventas%NOTFOUND; INSERT INTO ventamayor VALUES (xfecha,xarticulo,xvalor); COMMIT; END LOOP; CLOSE cventas; END; END; ventas.articulo%TYPE; ventas.valor%TYPE;
Para llamar al procedimiento ventas5 en una fecha dada, se puede escribir, por ejemplo:
51
o
ventas5(sysdate).
Define el cursor, su consulta y la lista de parmetros que se pasan a la orden WHERE, es solo la declaracin del cursor y no la realizacin de la consulta.
xarticulo ventas.articulo%TYPE;
Define la variable xarticulo igual a la columna articulo de la tabla ventas, que con el uso del atributo de variable %TYPE permite declarar una variable del mismo tipo que una columna de la tabla. No es necesario conocer cmo est definida esa columna en la tabla y, en caso que la definicin de la columna sea modificada, automticamente se cambia la variable xarticulo.
OPEN cventas(xfecha);
Realiza la consulta asociada al cursor, pasando el valor del parmetro y guardando sus resultados en un rea de la memoria, desde la cual, posteriormente, se pueden leer estas filas.
FOR i IN 1..5 LOOP
Ciclo numrico de repeticin para poder consultar las 5 primeras ventas devueltas por el cursor.
FETCH cventas INTO xarticulo,xvalor;
Lee la siguiente fila de datos del cursor cventas y pasa los datos de la consulta a las variables xarticulo y xvalor.
EXIT WHEN cventas%NOTFOUND;
Garantiza la salida del ciclo antes de la ltima repeticin, en caso que para una fecha dada se hayan efectuado menos de 5 ventas, ya que en esta situacin la consulta del cursor devuelve menos de 5 filas. %NOTFOUND es un atributo de cursor que es verdadero cuando la ltima sentencia FETCH no devuelve ninguna fila.
52
53
El registro utilizado lo declara implcitamente PL/SQL como nombre_curosor%ROWTYPE y no es necesario declararlo en seccin declarativa del bloque.
54
Manejo de errores
En PL/SQL una advertencia o condicin de error es llamada una excepcin. Estas pueden ser definidas en forma interna (en tiempo de ejecucin de un programa) o explcitamente por el usuario. Ejemplos de excepciones definidas en forma interna son la divisin por cero y la falta de memoria en tiempo de ejecucin. Estas mismas condiciones excepcionales tienen sus nombres propios y pueden ser referenciadas con ellos: zero_divide y storage_error. Tambin se pueden definir excepciones a medida y nombrarlas de alguna forma, utilizando reglas. Cuando ocurre un error se alcanza la excepcin, esto quiere decir que se ejecuta la porcin del programa donde sta se encuentra implementada, transfirindose el control a ese bloque de sentencias. Las excepciones definidas por el usuario deben ser alcanzadas explcitamente utilizando la sentencia raise. Con las excepciones se pueden manejar los errores cmodamente sin necesidad de mantener mltiples chequeos por cada sentencia escrita. Tambin provee claridad en el cdigo desde el momento en que permite mantener las rutinas correspondientes al tratamiento de los errores en forma separada de la lgica del negocio.
55
ZERO_DIVIDE
-1476
56
Declaracin
Las excepciones slo pueden ser declaradas en el segmento Declare de un bloque, subprograma o paquete. Se declara una excepcin escribiendo su nombre seguida de la palabra clave EXCEPTION. Las declaraciones son similares a las de variables, pero recuerde que una excepcin es una condicin de error, no un tem de datos. Aun as, las mismas reglas de alcance aplican tanto sobre variables como sobre las excepciones. Ejemplo:
DECLARE error_01 EXCEPTION;
Reglas de Alcance
Una excepcin no puede ser declarada dos veces en un mismo bloque. Tal como las variables, una excepcin declarada en un bloque es local a ese bloque y global a todos los sub-bloques que comprende.
La sentencia RAISE
La sentencia RAISE permite gatillar una excepcin en forma explcita. Es factible utilizar esta sentencia en cualquier lugar que se encuentre dentro del alcance de la excepcin. Ejemplo:
DECLARE out_of_stock EXCEPTION; total NUMBER(4); BEGIN IF total < 1 THEN RAISE out_of_stock; END IF; EXCEPTION WHEN out_of_stock THEN -- manejar el error aqu WHEN OTHERS THEN END; -- declaracin de la excepcin
-- llamado a la excepcin
Finalmente, cabe destacar la existencia de la excepcin OTHERS, que simboliza cualquier condicin de excepcin que no ha sido declarada. Se utiliza comnmente al final del bloque de excepciones para absorber cualquier tipo de error que no ha sido previsto por el programador. En ese caso, es comn observar la sentencia ROLLBACK en el grupo de sentencias de la excepcin o alguna de las funciones SQLCODE SQLERRM, que se detallan a continuacin.
57
Ejemplo: /* HACER UN PROGRAMA QUE DESPLIEGUE POR PANTALLA EL CALCULO DEL FACTORIAL */
DECLARE NUMERO BINARY_INTEGER:=&X; CONTADOR BINARY_INTEGER; FACTORIAL BINARY_INTEGER; BEGIN FACTORIAL:=1; CONTADOR:=1; WHILE (CONTADOR<=NUMERO) LOOP FACTORIAL:=FACTORIAL*CONTADOR; CONTADOR:=CONTADOR+1; END LOOP; DBMS_OUTPUT.PUT_LINE('EL FACTORIAL DE: '||TO_CHAR(NUMERO)|| 'ES: '||TO_CHAR(FACTORIAL)); END; / .
58
ACTIVIDADES: 1. Recopilar informacin de programacin utilizando Forms y Report 2. Obtener manuales de referencia de Oracle CRITERIOS DE EVALUACIN: Examen escrito Desarrollo de ejercicios Trabajos individuales
59
GESTIN DE BASES DE DATOS CAPITULO I PROGRAMACION CON FORMS Introduccin a Oracle Forms
Las formas del oracle son una herramienta de desarrollo de aplicaciones de gran alcance para construir sistemas cliente servidor que son portables a una variedad de plataformas GUI y de modo carcter. El Oracle Forms es parte de Developer/2000, un conjunto comprensivo de herramientas de desarrollo de aplicaciones que soporta el completo ciclo vital del desarrollo de aplicaciones. Las aplicaciones construidas con Oracle Forms y las otras herramientas de Developer/2000 son totalmente escalables y son convenientes para el despliegue a todos los niveles de su empresa, en las utilizacin de aplicaciones en pequeos grupos de trabajo, o en proyectos de misin crtica y grandes transacciones que deben apoyar a centenares de usuarios. Las formas del oracle y las otras herramientas Developer/2000 son optimizadas para tomar la ventaja completa de las caractersticas de gran alcance en el servidor Oracle, servidor principal de la gerencia de la base de datos del oracle.
El designer es una aplicacin del desarrollo de la aplicacin donde usted trabaja con tres tipos de mdulos de las formas de Oracle ( formas, mens, y bibliotecas). El designer incluye un conjunto de las herramientas visuales que permiten que usted cree objetos, fijar sus caractersticas, y escriben el cdigo para sus aplicaciones. El componente Generate se utiliza para generar archivos de la aplicacin y crear los ejecutables. La generacin de un mdulo de la forma compila todos sus objetos del cdigo y crea un archivo tipo FMX.
Forms
Las formas son colecciones de objetos y cdigo, incluyendo ventanas, textos, cajas de chequeo (check boxes), botones, triggers, y procedimientos. Una forma puede incluir varias ventanas separadas.
Mens
Mens son colecciones de objetos de mens (men principal, men pull-down, items del men)
60
Libreras
Las libreras son colecciones de procedimientos, funciones y paquetes, estos pueden llamarse de otros mdulos. Usted puede integrar formas, mens y mdulos libreras como necesite la construccin de su aplicacin completa. Por ejemplo, usted puede crear un men de la aplicacin definiendo un mdulo del men y despus asocindolo a unas o ms formas. Semejantemente, usted puede asociar los mdulos de la biblioteca a otros mdulos. Los triggers y los procedimientos que usted escribe en esos mdulos pueden entonces llamar procedimientos en la biblioteca asociada. Una aplicacin de Oracle Forms puede tambin incorporar los mdulos de otras herramientas Developer/2000, tales como informes del oracle y grficos. Por ejemplo, un botn en una forma puede invocar un informe construido con informes del oracle. O una visualizacin de la carta generada por Oracle Graphics se puede introducir en una forma.
Objetos y Propiedades
Cuando usted construye aplicaciones con las formas de oracle, mucho de su trabajo de desarrollo implica el crear de objetos y el fijar de sus caractersticas. Por ejemplo, un tem del texto tienen caractersticas tales como anchura, altura, tipo de los datos, etc. Un objeto de ventana tiene caractersticas tales como ttulo, modal, etc. Cuando usted crea un objeto, sus caractersticas se fija automticamente a las configuraciones de valor por defecto. Usted puede fijar caractersticas a los objetos que usted crea. Estas caractersticas al desarrollo de la aplicacin facilita el desarrollo rpido, y reduce la necesidad de escribir cdigo para realizar operaciones estndares tal como: Querys, inserciones, actualizaciones, y borrado Dicin de querys Coordinacin de maestros detalles Controlando navegacin Despliegue de Objetos
Muchas caractersticas del objeto se pueden fijar en el tiempo de ejecucin as como tiempo del diseo.
61
Eventos
El Oracle Forms utiliza un modelo de programacin por eventos. Una vez que usted haya definido la estructura y las funciones bsicas de su aplicacin creando objetos y fijando caractersticas, usted puede ampliar y realzar sus funciones del valor por defecto escribiendo cdigo. El cdigo que usted escribe en formas de oracle se escribe en PL/SQL, extensin de lenguaje SQL, el lenguaje de la base de datos PL/SQL y combina las capacidades de la manipulacin de datos y del tratamiento transaccional del SQL con las construcciones encontradas tpicamente en lenguajes de programacin, tales como declaraciones variables y constantes, asignacin, y ramificacin condicional.
Triggers
Un trigger es un bloque del cdigo de PL/SQL que usted asocia a un objeto especfico, y que se ejecuta en respuesta a un acontecimiento especfico. Por ejemplo, para crear un botn del comando, usted trazara el botn en una forma, y despus asocia un trigger en el evento WhenButton-Pressed que ejecuta el cdigo de comando deseado. Como sugiere su nombre, el disparador de When-Button-Pressed se ejecuta, siempre que se presione el botn. Las formas de oracle proporcionan una variedad rica de acontecimientos que usted pueda responder con triggers. Junto con una interfaz estndar los acontecimientos tales como hacer clic en un botn o el rectngulo de chequeo, Oracle Forms tambin tiene una variedad de acontecimientos de proceso internos. Una vez que usted entienda estas reglas, puede escribir triggers controlando virtualmente cualquier aspecto del comportamiento de su aplicacin.
Subprogramas
Para hacer la escritura de cdigo ms fcil, las formas de oracle incluyen cerca de 150 procedimientos incorporados y funciones que realizan una variedad de tareas estndares de la aplicacin, incluyendo la navegacin, commit de procesos, y conseguir caractersticas de un objeto. Adems de los subprogramas incorporados de las formas de oracle, usted puede tambin hacer sus propios procedimientos, funciones, o conjuntos usando -user-named. Estos objetos, conocidos colectivamente como unidades del programa, se pueden definir en formas, mens, o mdulos de la biblioteca. Una vez que usted haya definido un procedimiento o una funcin, usted puede llamarla a triggers, comandos del tem del men, y otras unidades del programa.
62
Por defecto las extensiones indican el tipo de archivo y formato de almacenamiento: . FMB . FMT . FMX .MMB .MMT .MMX .PLL .PLD .PLX Form Modulo Binaries Form Modulo Text Form Modulo Ejecutable Men Modulo Binario Men Modulo Texto Men Modulo Ejecutable PL/SQL Library Modulo Binario PL/SQL Library Modulo Texto PL/SQL Library Modulo Ejecutable (contains no source)
Cuando usted crea una aplicacin con mltiples mdulos, usted debe entregar todos los archivos. FMX. MMX. , And PLX requeridos para ejecutar la aplicacin (runtime)
Canvas y ventanas
Un canvas es la base sobre la que se sita el texto plano y los elementos. Cada elemento hace referencia a un nico canvas de su hoja de propiedades. Los elementos de un bloque de datos se pueden dividir entre diferentes canvas. Un canvas no es un elemento de interfaz autnomo. Para verlo a l y sus elementos es necesario mostrarlo en una ventana, un rea rectangular rodeada por un marco y mantenida por la plataforma GUI. La parte del canvas que se puede ver a travs de la ventana es la vista. La ventana puede tener barras de desplazamiento que permiten moverse a travs del canvas para ver diferentes vistas. Hay cinco tipos de canvas: Contenido: muestra el contenido bsico de una ventana. De fichas: muestra el contenido bsico de una ventana en una serie de canvas superpuestos con solapas etiquetadas. Apilado: se muestra sobre otros canvas para mostrar informacin condicional o independiente; se puede elegir entre mostrar el canvas apilado cuando se muestre su ventana o dejarlo invisible hasta que se necesite. Barra de herramientas vertical: contiene iconos de herramientas que se muestran en una barra de herramientas vertical situada en el lado izquierdo de una ventana; la ventana especifica por el nombre el canvas que se va a utilizar en su barra de herramientas.
63
Hay dos tipos de ventanas: Documento: una ventana que visualiza un elemento documento de la aplicacin. Cuadro de dilogo: una ventana que muestra opciones u otras formas de controlar la operativa de la aplicacin.
Elementos programables
Los elementos programables se utilizan para estructurar programas. Estos elementos son igualmente aplicables a mdulos de formularios y de mens.
Formulario Empleado. Procedimiento para crear el formulario: Crear el bloque que muestra en la tabla. Crear como detalle el bloque asociado a cada campo Aadir una lista desplegable que permita seleccionar una cualidad de la misma Organizar el formulario Ejecutar y almacenar la aplicacin Creacin del bloque de la tabla
Para elaborar este formulario debemos seguir los siguientes pasos: Activar Asistente de Bloques de Datos Avanzar hasta visualizar
64
Pulsar Examinar Introducir el Usuario y Clave Visualizar las tablas y vistas y seleccionar los campos
Pulsar Terminar para entrar en el Asistente de Diseo Avanzar hasta Visualizar los campos a utilizar y pulsar Terminar Ya tenemos nuestro primer bloque!
65
Para la creacin de otro formulario dentro del mismo ya creado se debe seguir: Marcar el bloque de la tabla Para crear otro bloque pulsar Aceptar la utilizacin del Asistente de Bloques de Datos Seleccionar la tabla DEPT y utilizar todos sus campos. Avanzar y pulsar Crear Relacin Seleccionar la tabla Persona como maestro Continuar con el Asistente de Diseo Visualizar slo los campos necesarios para el formulario Elegir el estilo Tabular para presentar los resultados Despus poner un nombre en el Ttulo del Marco Visualizar los registros y activar Visualizar Barra de Desplazamiento Pulsar Terminar Ya tenemos el esqueleto de nuestro primer formulario! Lista de ESTADO
Vamos a crear una lista dinmica para seleccionar el estado, generada a partir de la tabla EMP Pulsar sobre EMP, botn derecho y abrir la Paleta de Propiedades con los atributos del elemento ESTADO Establecer los atributos Tipo de Elemento, Estilo de la Lista y Correspondencia de Otros valores como muestra la figura.
66
Para dotarla de carcter dinmico necesitamos: Escribir una consulta que obtenga los valores de la tabla EMP Escribir un procedimiento PL/SQL que la rellene con los datos de la tabla EMP Crear un disparador que actualice su contenido en el momento oportuno Para crear esta consulta, que es un Grupo de Registros, realizamos:
Dada la generalidad de este proceso vamos a crear un procedimiento reutilizable que vamos a incorporar a nuestra ejemplo para posteriores usos Creamos una tabla.
En la ventana de edicin introducimos el siguiente cdigo: Compilamos el mdulo Salvamos el formulario EMP Marcamos EMP y la compilamos (Programa | Compilar Seleccin)
seleccionando EMP.
Vamos a utilizar un disparador WHEN-NEW-FORM-INSTANCE para determinar que la lista de valores se actualice con los valores de la tabla EMP.
67
Marcar Disparadores pulsar Seleccionar el mencionado disparador En la ventana introducir el cdigo: EXECUTE_QUERY; Compilar y cerrar Ejecutar el formato, comprobar los resultados y almacenar como empleado si todo ha estado conforme
Realizar el formulario correspondiente (llamarlo empleado.fmb) de acuerdo con el aspecto de la figura y los siguientes requisitos: Debe incluir todos los campos de la tabla correspondiente Debe tener forma tabular (varias transacciones a la vez) Una lista esttica sobre Tipo Operacin (Estado) Una lista dinmica sobre el campo con datos de la tabla EMP
Los elementos que conforman en este formulario son: Cdigo, Nombre, Cargo, Jefe, Fecha, Salario, Comisin, Departamento de la Tabla EMP
68
declare resultado number; begin if :system.last_record = 'TRUE' then resultado:=show_alert('ALERT_INICIO_REG'); Message('Error... Inicio de Archivo'); else first_record; end if; end;
69
Crear Botn
Anterior.-
declare resultado number; begin if :system.cursor_record ='1'then resultado:=show_alert('ALERT_INICIO_REG'); Message('Error... Inicio de Archivo'); else previous_record; end if; end;
70
declare resultado number; begin if :system.last_record = 'TRUE' then resultado:=show_alert('ALERT_FIN_REG'); Message('Error... Fin de Archivo'); else next_record; end if; end;
71
Crear Botn
ltimo.-
declare resultado number; begin if :system.last_record = 'TRUE' then resultado:=show_alert('ALERT_FIN_REG'); Message('Error... Fin de Archivo'); else last_record; end if; end;
72
create_record; SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY
('EMPNO',enabled, property_true); ('HIREDATE',enabled, property_true); ('ENAME',enabled, property_true); ('SAL',enabled, property_true); ('JOB',enabled, property_true); ('COMM',enabled, property_true); ('MGR',enabled, property_true); ('DEPTNO',enabled, property_true); ('GRABAR',enabled, property_true); ('CANCELAR',enabled, property_true);
73
if:system.form_status='CHANGED' then commit_form; end if; SET_ITEM_PROPERTY ('EMPNO',enabled, property_true); SET_ITEM_PROPERTY ('HIREDATE',enabled, property_true); SET_ITEM_PROPERTY ('ENAME',enabled, property_true); SET_ITEM_PROPERTY ('SAL',enabled, property_true); SET_ITEM_PROPERTY ('JOB',enabled, property_true); SET_ITEM_PROPERTY ('COMM',enabled, property_true); SET_ITEM_PROPERTY ('MGR',enabled, property_true); SET_ITEM_PROPERTY ('DEPTNO',enabled, property_true); SET_ITEM_PROPERTY ('GRABAR',enabled, property_true); SET_ITEM_PROPERTY ('CANCELAR',enabled, property_true); SET_ITEM_PROPERTY ('ELIMINAR',enabled, property_false); SET_ITEM_PROPERTY ('NUEVO',enabled, property_false);
74
commit_form; SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY SET_ITEM_PROPERTY
('EMPNO',enabled, property_false); ('HIREDATE',enabled, property_false); ('ENAME',enabled, property_false); ('SAL',enabled, property_false); ('JOB',enabled, property_false); ('COMM',enabled, property_false); ('MGR',enabled, property_false); ('DEPTNO',enabled, property_false); ('GRABAR',enabled, property_false); ('NUEVO',enabled, property_true); ('CANCELAR',enabled, property_false); ('ELIMINAR',enabled, property_true);
75
76
77
Paleta de Propiedades (Grupo de Registros).General Nombre: LOV32 Funcional Tipo de Grupo de Registros: Consulta Consulta del Grupo de Registros: SELECT ALL DEPTDEPTNO, DEPT.DENAME FROM DEPT
Alertas.Una alerta es una ventana que puede desplegar informacin al usuario (errores, advertencias o mensajes), la cual es presentada en respuesta a un evento
Se puede especificar el estilo alerta: parar, precaucin, o nota. En las plataformas de GUI, el estilo alerta determina qu icono del bitmap se despliega en la alarma.
Crear Alerta de Eliminacin de Registro.General Nombre: DEL_RECORD Comentarios: Desea eliminar registro...! Funcional Ttulo: Advertencia Mensaje: Seor operador desea eliminar el registro... Estilo de Alerta: Precaucin Etiqueta de Botn 1: Aceptar
Crear Alerta de Fin de Registro.General Nombre: ALERT_FIN_REG Comentarios: Error Fin del Registro...! Funcional Ttulo: Advertencia Mensaje: Seor usuario se encuentra en el final del registro... Estilo de Alerta: Precaucin Etiqueta de Botn 1: Aceptar
General Nombre: ALERT_INICIO_REG Comentarios: Error Inicio del Registro...! Funcional Ttulo: Advertencia Mensaje: Seor usuario se encuentra al inicio del registro... Estilo de Alerta: Precaucin Etiqueta de Botn 1: Aceptar
Teclas de Acceso Rpido.- Dentro de la ejecucin de FORMS se pueden visualizar varias funciones que pueden ser de gran ayuda al usuario esto se lo puede realizar presionando CONTROL F1
Para cambiar el nombre de la ventana se deber dar clic derecho paleta de Propiedades y en la opcin ventana dar doble clic para colocar o cambiar el nombre a llamarse para que luego al ejecutarlo aparezca este nombre.
Crear Botones de Radio.Cuando usted crea botones de radio, usted inserta un nuevo grupo de radio en un bloque o usted modifica un artculo existente convirtiendo su tipo para Transmitir por radio el Grupo. Despus de crear un grupo de radio, usted puede crear las etiquetas de botn de radio, especifique valores de botn de radio, las propiedades de despliegue de juego, y as sucesivamente.
Crear Elemento de Botn de Radio Sexo.General Nombre: SEXO Tipo de elemento: Grupo de Botones Datos Tipo de Dato: CHAR Longitud Mxima: 1 Base de Datos Nombre de la Columna: SEXO
Crear Botn de Radio Masculino.General Nombre: MASCULINO Funcional Activado: Si Etiqueta: MASCULINO Valor de Botn de Radio: M
Crear Botn de Radio Femenino.General Nombre: FEMENINO Funcional Activado: Si Etiqueta: FEMENINO Valor de Botn de Radio: F
Realizar el formulario correspondiente (llamarlo detalle.fmb) de acuerdo con el aspecto de la figura y los siguientes requisitos: Debe incluir todos los campos de la tabla correspondiente tanto para Departamento como Empleado. Debe tener forma tabular (varias transacciones a la vez) Una lista esttica sobre Tipo Operacin (Estado) Una lista dinmica sobre el campo con datos de la tabla DETALLE (EMP y DEPT)
Los elementos que conforman en este formulario son: Cdigo de Departamento, Nombre del Departamento, Ubicacin del Departamento de la Tabla DEPT, y; Cdigo, Nombre, Cargo, Jefe de Departamento, Fecha de Ingreso, Salario, Comisin, Sueldo Total de la Tabla EMP. As como un total para cada uno calculado con la suma para la tabla DEPT y EMP. Los botones o disparadores y los elementos a ser creados son: Crear Departamento, Eliminar Departamento, Imprimir, Departamento Anterior, Departamento Siguiente, Grabar y Terminar.
Crear un Disparador.Tipo: Disparador Objeto: NIVEL DE FORM Nombre: WHEN-NEW-FORM-INSTANCE execute_query; go_item('SIGUIENTE'); SET_ITEM_PROPERTY('GRABAR',ENABLED,PROPERTY_FALSE);
Crear un Disparador en Tabla Departamento.Tipo: Disparador Objeto: DEPT NIVEL DE BLOQUE DE DATOS Nombre: WHEN-NEW-FORM-INSTANCE -- Begin default relation declare section DECLARE recstat VARCHAR2(20) := :System.record_status; startitm VARCHAR2(61) := :System.cursor_item; rel_id Relation; -- End default relation declare section -- Begin default relation program section BEGIN IF ( recstat = 'NEW' or recstat = 'INSERT' ) THEN RETURN; END IF; -- Begin EMP detail program section IF ( (:DEPT.DEPTNO is not null) ) THEN
rel_id := Find_Relation('DEPT.DEPT_EMP'); Query_Master_Details(rel_id, 'EMP'); END IF; -- End EMP detail program section IF ( :System.cursor_item <> startitm ) THEN Go_Item(startitm); Check_Package_Failure; END IF; END; -- End default relation program section
Crear Botn Crear Departamento.SET_ITEM_PROPERTY('GUARDAR',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('ELIMINAR',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('ANTERIOR',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('SIGUIENTE',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('IMPRIMIR',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('DEPT.DEPTNO',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('DEPT.DNAME',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('DEPT.LOC',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('EMP.EMPNO',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('EMP.ENAME',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('EMP.JOB',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('EMP.MGR',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('EMP.HIREDATE',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('EMP.SAL',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('EMP.COMM',ENABLED,PROPERTY_TRUE); SET_ITEM_PROPERTY('EMP.JEFE',ENABLED,PROPERTY_TRUE); CREATE_RECORD; GO_ITEM('DEPT.DEPTNO'); SET_ITEM_PROPERTY('DEPT.NUEVO',ENABLED,PROPERTY_FALSE);
Crear
Botn
Eliminar
Departamento.-
DECLARE VALOR NUMBER; BEGIN VALOR:=SHOW_ALERT('ELIMINAR'); IF VALOR=ALERT_BUTTON1 THEN DELETE_RECORD; COMMIT_FORM; END IF; END;
declare valor number; begin if :system.cursor_record='1' then valor:=show_alert('inicio'); else previous_record; end if; end; SET_ITEM_PROPERTY('DEPT.GUARDAR',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('DEPT.DEPTNO',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('DEPT.DNAME',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('DEPT.LOC',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('EMP.EMPNO',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('EMP.ENAME',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('EMP.JOB',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('EMP.MGR',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('EMP.HIREDATE',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('EMP.SAL',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('EMP.COMM',ENABLED,PROPERTY_FALSE); SET_ITEM_PROPERTY('EMP.JEFE',ENABLED,PROPERTY_FALSE);
declare valor number; begin if :System.Last_Record='TRUE' then valor:=show_alert('fin'); else next_record; end if; end;
Crear Alerta de Eliminar Departamento.General Nombre: ELIMINAR Funcional Ttulo: Advertencia Mensaje: Seor usuario esta seguro que desea eliminar el registro... Estilo de Alerta: Precaucin Etiqueta de Botn 1: Si Etiqueta de Botn 2: No
Crear Alerta de Inicio de Registro.General Nombre: INICIO Funcional Ttulo: Advertencia Mensaje: Seor usuario usted ha llegado al inicio del registro... Estilo de Alerta: Precaucin Etiqueta de Botn 1: Si Etiqueta de Botn 2: No
Crear Alerta de Fin de Registro.General Nombre: FIN Funcional Ttulo: Advertencia Mensaje: Seor usuario usted ha llegado al fin del registro... Estilo de Alerta: Precaucin Etiqueta de Botn 1: Si Etiqueta de Botn 2: No
Propiedades de la Paleta de Propiedades en el Lienzo Cabecera Detalle.General Nombre: PRINCIPAL Tipo de Elemento: Contenido Funcional Abrir al entrar: No Men Desplegable: Null Fsica Visible: Si Ventana: Reporte Posicin x de la puerta de Vista en el Lienzo: 0 Posicin y de la puerta de Vista en el Lienzo: 0 Ancho: 638 Altura: 398 Bisel: Hundido
Propiedades de la Paleta de Propiedades en Ventana Cabecera Detalle.General Nombre: PRINCIPAL Tipo de Elemento: Contenido Funcional Estilo de Ventana: Documento Modal: No Ocultar al salir: No Fsica Posicin x: 0 Posicin y: 0 Ancho: 637 Altura: 398 Bisel: Hundido Para cambiar el nombre de la ventana se deber dar clic derecho paleta de Propiedades y en la opcin ventana dar doble clic para colocar o cambiar el nombre a llamarse para que luego al ejecutarlo aparezca este nombre.
Crear Disparador en MGR.Tipo: Disparador Objeto: NIVEL DE FORM MGR Nombre: POST-CHANGE begin select ename into :jefe from emp where :mgr=empno; exception when no_data_found then message ('jefe no existe'); raise form_trigger_failure; when too_many_rows then message ('existen demasiados jefes'); raise form_trigger_failure; when others then raise form_trigger_failure; end;
Propiedades de la Paleta de Propiedades en el Campo Sueldo.General Nombre: SAL Tipo de Elemento: Elemento de texto Funcional Activado: Si Justificacin: Derecha Datos Tipo de Dato: Number Longitud Mxima: 9 Valor Inicial: $.00 Mscara de Formato: $999,999.99
Propiedades de la Paleta de Propiedades en el Campo Comisin.General Nombre: COMM Tipo de Elemento: Elemento de texto Funcional Activado: Si Justificacin: Derecha Datos Tipo de Dato: Number Longitud Mxima: 9 Valor Inicial: $.00 Mscara de Formato: $999,999.99
Propiedades de la Paleta de Propiedades en el Campo Sueldo Total.General Nombre: TOTAL Tipo de Elemento: Elemento de texto Funcional Activado: Si Justificacin: Derecha Datos Tipo de Dato: Number Longitud Mxima: 9 Valor Inicial: $.00 Mscara de Formato: $999,999.99 Clculo Modo de Clculo: Frmula Frmula: :sal + nvl(:comm, 0)
General Nombre: SUELDOS Tipo de Elemento: Elemento de texto Funcional Activado: Si Justificacin: Derecha Datos Tipo de Dato: Number Longitud Mxima: 9 Valor Inicial: $.00 Mscara de Formato: $999,999.99 Clculo Modo de Clculo: Total Funcin a Totalizar: Sum Bloque de Total: EMP Elemento de Total: SAL
Propiedades de la Paleta de Propiedades en el Campo Total Sueldos.General Nombre: SUELDOS Tipo de Elemento: Elemento de texto Funcional Activado: Si Justificacin: Derecha Datos Tipo de Dato: Number Longitud Mxima: 9 Valor Inicial: 0 Mscara de Formato: 999,999 Clculo Modo de Clculo: Total Funcin a Totalizar: Recuento Bloque de Total: EMP Elemento de Total: EMPNO
Para cambiar el nombre de la ventana se deber dar clic derecho paleta de Propiedades y en la opcin ventana dar doble clic para colocar o cambiar el nombre a llamarse para que luego al ejecutarlo aparezca este nombre.
General Nombre: REPORTE Tipo de Elemento: Contenido Funcional Abrir al entrar: No Men Desplegable: Null Fsica Visible: Si Ventana: Reporte Posicin x de la puerta de Vista en el Lienzo: 0 Posicin y de la puerta de Vista en el Lienzo: 0 Ancho: 261 Altura: 167 Bisel: Resaltado
Propiedades de la Paleta de Propiedades en Ventana Reporte.General Nombre: REPORTE Tipo de Elemento: Contenido Funcional Estilo de Ventana: Documento Modal: No Ocultar al salir: No Fsica Posicin x: 200 Posicin y: 160 Ancho: 261 Altura: 166 Bisel: Hundido
Crear Elemento de Lista.General Nombre: Destino Tipo de Elemento: Elemento de Lista Funcional Activado: Si Elemento de lista: Impresora: printer Archivos pdf: pdf Archivos html: html Pantalla: screen Correo: mail Estilo de la lista: Lista desplegable Los Elementos en Lista y Lista
Para que Liste el Artculo.Especifica la etiqueta del texto para cada elemento en un artculo de la lista. Como se realizo anteriormente
DECLARE PL_ID PARAMLIST; ARCHIVO VARCHAR(255); BEGIN IF ID_NULL(GET_PARAMETER_LIST('PARAMETROS'))= FALSE THEN DESTROY_PARAMETER_LIST('PARAMETROS'); END IF; PL_ID:= CREATE_PARAMETER_LIST('PARAMETROS'); ADD_PARAMETER(PL_ID,'PARANFORM',TEXT_PARAMETER,'NO'); ADD_PARAMETER(PL_ID,'DPTO',TEXT_PARAMETER,:DEPT.DEPTNO); IF:DESTINO <>'SCREEN' THEN IF:DESTINO='PDF' THEN ADD_PARAMETER(PL_ID,'DESFORMAT',TEXT_PARAMETER,:DESTINO);
ADD_PARAMETER(PL_ID,'DESTYPE',TEXT_PARAMETER,'FILE'); ARCHIVO:='C:\FORMS\ARCHIVO.PDF'; ELSIF:DESTINO='HTML' THEN ADD_PARAMETER(PL_ID,'DESFORMAT',TEXT_PARAMETER,:DESTINO); ADD_PARAMETER(PL_ID,'DESTYPE',TEXT_PARAMETER,'FILE'); ARCHIVO:='C:\FORMS\ARCHIVO.HTML'; ELSIF:DESTINO='MAIL' THEN ADD_PARAMETER(PL_ID,'DESFORMAT',TEXT_PARAMETER,:DESTINO); ARCHIVO:='email@hotmail.com'; ELSIF:DESTINO='PRINTER' THEN ADD_PARAMETER(PL_ID,'DESTYPE',TEXT_PARAMETER,:DESTINO); RUN_PRODUCT(REPORTS,'D:\REPORTE\REPORTE_DETALLE.RDF',SYNCHRONOUS,RUNTIME, FILESYSTEM,PL_ID,NULL); ARCHIVO:='HP LASERJET 6L'; END IF; END IF; ADD_PARAMETER(PL_ID,'DESNAME',TEXT_PARAMETER,:DESTINO); RUN_PRODUCT(REPORTS,'D:\REPORTE\REPORTE_DETALLE.RDF',SYNCHRONOUS,RUNTIME, FILESYSTEM,PL_ID,NULL); END;
rollback_form;
El componente Reports de Developer es la parte del entorno de desarrollo con la que se realizan los mdulos de informes. En este entorno se puede hacer referencia a elementos de consultas externas, y se pueden configurar y almacenar elementos de depuracin. El Report Builder tambin incluye bibliotecas y elementos de base de datos. Un mdulo de informes tiene una estructura bastante complicada. Los componentes bsicos de un informe son modelo de datos, su formulario de parmetros, sus disparadores de informes y su composicin. El modelo de datos de informe es la estructura de datos de datos y sus diferentes representaciones en el informe. El modelo de datos se crea en un editor grfico especial. Los elementos parmetro son variables a las que se puede hacer referencia desde el cdigo PL / SQL y cualquier otra cosa que acepte valores de datos como entrada. Los parmetros del sistema son los parmetros que Reports define automticamente; los parmetros definidos por el usuario son los que define uno mismo. Para la asignacin de valores a los parmetros en tiempo de ejecucin se tiene un formulario por defecto o se puede crear uno completamente diferente como un elemento formulario de parmetros. El programa en tiempo de ejecucin de Reports ejecuta este formulario cuando se ejecuta el informe para incitar al usuario a asignar valores a los parmetros especificados. Una consulta es una sentencia SQL que devuelve los valores de los datos que son base del informe. La consulta se puede incorporar en un informe, o se puede utilizar un elemento de consulta externa; ste es simplemente texto SQL en un archivo independiente que se puede compartir entre aplicaciones. El grupo identifica los registros que devuelven las consultas en el informe como un grupo repetido de registros, existiendo una jerarqua de grupos. Las columnas de base de datos son las columnas de la lista SELECT de la consulta. Las columnas de frmulas son columnas especiales que se procesan utilizando bloques PL / SQL. Las columnas resumen son columnas especiales que acumulan informacin resumida de mltiples registros en el formulario, tales como subtotales o importes totales. Las columnas de almacenamiento son columnas que se definen para ser rellenadas con un disparador, una frmula , en vez de a partir de datos o resmenes estndar. Por ejemplo se pueden derivar campos especiales de informe que sealen la regin con las ventas ms altas entre un conjunto de filas regionales. Los enlaces de datos son enlaces utilizados en informe maestro-detallados para enlazar un grupo de filas a otro grupo de filas. La composicin del informe es la estructura grfica del informe. Cada informe tiene una cabecera, un pie de formulario y un cuerpo intercalado entre ellos. Existen diversas variedades de composiciones de informes: tabular, maestro-detallado, formulario, carta, etiqueta de correo, etc. Los disparadores de informes son bloques de cdigo PL/SQL que se ejecutan en puntos bien definidos: antes del informe, despus del informe, entre pginas, antes del formulario de parmetros.
CREACION DE REPORTES
El informe agrupar por personas las entradas y mostrar los subtotales de las mismas: Iniciar Report Builder y aceptar el uso del Asistente de Informes
En Ttulo ponemos: REPORTE DE EMPLEADOS POR DEPARTAMENTO Seleccionamos el estilo Agrupar a la Izquierda puesto que queremos agrupar por empleado. Pulsar Siguiente
Escribimos la consulta: SELECT ENAME, JOB, SAL, DNAME FROM EMP, DEPT WHERE (EMP.DEPTNO = DEPT.DEPTNO)
La siguiente pantalla solicita los campos sobre los que agrupar el informe.
Introducir los campos. Pulsar Siguiente En esta pantalla se solicita los campos a visualizar en el informe. Introducirlos todos como muestra la figura
Pulsar Siguiente. La pantalla de los totales solicita los campos a agregar. Nosotros queremos obtener las sumas de los totales. Seleccionamos Total y pulsamos el botn Suma
Pulsar Siguiente dos veces. En la pantalla de plantillas seleccionamos, por ejemplo, Corporate1 Pulsar Terminar para obtener en el Visor Activo la vista preliminar del informe generado. Es preciso retocarlo un poco para mejorar la presentacin
Mediante la utilizacin del Live Previewer: Dimensionar los campos para que ocupen menos espacio Cambiar el formato y la etiqueta asociada. Salvar como reporte1.rdf
VISOR ACTIVO
MODELO DE DATOS
MODELO DE DISEO
Se podr visualizar por un instante el progreso del informe que se realiza el cliente servidor.
En el Navegador de Objetos, extienda el nodo Modelo de Datos, entonces pulse el botn el nodo del Parmetros de Usuario. Clic en el toolbar.
2 3
4 5 6
Doble - clic (el icono de propiedades) para el nuevo parmetro para desplegar la Paleta de Propiedades. Bajo el nodo de Informacin General, reemplace la propiedad del Nombre con el nombre del parmetro deseado. Bajo el nodo del Parmetro, ponga el Valor Inicial y Lista de propiedades de Valores, si requiri. Validar el valor del parmetro al runtime, doble-pulse el botn el Aprobacin Gatillo propiedad valor campo. En el Editor de PL/SQL, defina el PL/SQL para ser activado al runtime.
Podremos observar el disparador de validacin para visualizar el parmetro que se crea por defecto.
Sintaxis en PL / SQL function DPTOValidTrigger return boolean is begin return (TRUE); end;
Sentencia de Consulta SQL para el parmetro DPTO SELECT ALL EMP.JOB, EMP.ENAME, EMP.SAL, DEPT.DEPTNO FROM DEPT, EMP WHERE (EMP.DEPTNO = DEPT.DEPTNO) AND DEPT.DEPTNO=:DPTO
para visualizar slo el contenido del departamento especfico debemos sealar el campo
Aqu nos presenta un Background de la ejecucin del reporte del ejemplo cabecera detalle realizado.
La composicin contiene elementos grficos de la pantalla en una jerarqua que representa sus relaciones. Tambin relaciona dichos elementos con las columnas de una consulta. Hay diversos tipos de grficos disponibles: columnas, tarta, barras, tabla, lneas, etc...
Una plantilla de grfico es un conjunto de opciones personalizados que permite construir diferentes grficos con un formato idntico, posiblemente en la misma pantalla. Por ejemplo, se podran construir una serie de grficos de tarta que utilicen una plantilla que los haga consistentes n Una consulta, como en un mdulo de informes, es una sentencia SELECT SQL que define un conjunto de datos que se muestran formateados como un grfico. La consulta se construye para que devuelva los datos en el formato exacto que se quiera presentar en el grfico. Por ejemplo el grfico de tarta no resume los datos de las porciones; para hacer esto se deben utilizar las funciones GROUP BY y SUM. Los parmetros, igual que en los informes, son variables del mdulo que se definen y utilizan en el cdigo PL/SQL en cualquier parte dentro del mdulo. A los parmetros se les puede asignar valores en la lnea de rdenes o pasando una lista de parmetros desde otro programa Forms o Reports. Adems de los elementos de pantalla, las pantalla tambin pueden integrar elementos de sonido para crear pantallas completamente multimedia. En Graphics existe un elemento temporizador especial que acta como un tipo de despertador para la pantalla. Se especifica un intervalo de tiempo al final del cual el temporizador ejecuta algn cdigo PL/SQL. Con los temporizadores se pueden realizar efectos especiales.
Comentarios de ndole prctica.Cada elemento tomado por separado, es una poderosa contribucin al desarrollo de aplicaciones. Sin embargo, Developer es ms que nicamente los elementos que comprende. Es un sistema que une todos estos elementos en un todo. No slo hace que todos estos elementos funcionen conjuntamente, sino que tambin trabaja con elementos procedentes de otras aplicaciones y con datos procedentes de gestores de bases de datos diferentes de Oracle.
Donde UNAQ es el nombre de la cadena de conexin con el servidor y en caso de que sea un acceso local no se lo incorporar.
UNIDAD III OBJETIVOS DEL CAPITULO Al final de este captulo, Ud. deber ser capaz de: Instalar un administrador de bases de datos Obtener ayuda en lnea Configuracin del manejador de bases de datos Aprender sobre el manejo de triggers y procedimientos almacenados
ACTIVIDADES: 1. Recopilar informacin de programacin en T-SQL 2. Obtener manuales de referencia de Oracle CRITERIOS DE EVALUACIN: Examen escrito Desarrollo de ejercicios Trabajos individuales
ARQUITECTURA CLIENTE SERVIDOR.Es una arquitectura donde los archivos de la base datos y el software de RDBMS residen en un computador que es el servidor. Un cliente posee una aplicacin que corre en computadores separados y que se comunican con un servidor sobre una red. Sql Server al igual que el Oracle viene en dos versiones para servidores y para estaciones de trabajo. INTEGRACIN CON NT.-
1. Seguridad.- SQL Server se integra con la seguridad del NT permitiendo que con tan
slo el nombre de usuario y la clave ingresen a Windows y SQL Server.
4. Servicios de NT.- SQL Server corre como un servicio en NT (es una aplicacin que se
ejecuta sin intervencin del usuario), siendo accesado por medio del Panel de Control, Herramientas Administrativas.
de todos los documentos mas utilizados. Provee un acceso a todos los documentos almacenados en su INTRANET o Sitio de Internet.
PLATAFORMA DE SQL.SQL trabaja en el entorno de Windows (9x, NT) pero en 9x funciona como aplicacin y en NT funciona como servicio.
SERVICIO.Tienen mucho que ver con el sistema operativo. El usuario puede modificar los servicios. APLICACIN.Es bsicamente un ejecutable e interviene el usuario por que es el que ejecuta o no.
ARQUITECTURA DE COMUNICACIONES
* A p l i c * A P I ( A p l i c a c * L i b r e r a c i n ( D I n t e r f a c e c i n ) d e a s d e R * E SV Q E LL O S eP r E v Re r ) ( O R A * d S e e Pr v r oi c g i ro a s m d a e s B d a e s e * B L a i bs er e d r e a sD d a et o Rs e d e d C L E d e D ) a t o s
l i e n t e
SERVIDOR.- Base de Datos - Servicios de Base de Datos (ODS.- Es un componente de SQL Server que maneja las conexiones de red, pasando los pedidos del cliente al SQL Server para su procesamiento y retornando cualquier resultado a la aplicacin del cliente) - Libreras de red (SQL Net).- Es un software de comunicaciones que empaquetan los pedidos y resultados de la base de datos para su transmisin usando un protocolo de red en particular. CLIENTE.- Aplicacin (Developer) - API (Interfase de Programas de Aplicacin) de Base de datos.- Es una interfase usada por cualquier aplicacin para enviar pedidos a SQL Server y procesar el resultado obtenido del mismo. SQL Server soporta ODBC, OLDB, ADO y RDO - Libreras de Red
Arquitecturas de aplicaciones
CAPAS DE DESARROLLO DE APLICACIN DE DATOS Programacin en capas.Es dividir el procesamiento en reas. Un rea al manejo de Base de Datos (Integridad referencial), Procedimientos almacenados y otras funciones que intervengan con datos.
Bsicamente la Arquitectura se centra en una arquitectura de 3 capas. 1. La capa de presentacin que en este caso esta formada por los Componentes de IU, y los componentes de proceso de IU. Los componentes de IU pueden ser vistos como la parte con la cual interactuar el usuario. Las ventanas o pginas web, por decirlo de alguna manera. Los componentes de proceso de IU podramos asociarlos a clases de tipo controladora en UML. Es decir estos encapsulan lgica de navegacin y control de eventos de la interfase. 2. La capa de negocios encapsula lgica de negocios. Los servicios de esta capa son encapsulados en tres tipos de componentes, dos de los cuales se tocan en este ejercicio. Las entidades empresariales, que representan objetos que van a ser manejados o consumidos por toda la aplicacin, estos podran ser un modelo de objetos, xml, datasets con tipo, estructuras de datos, que permitan representar objetos que han sido identificados durante el modelamiento. Los otros tipos de objetos son los componentes empresariales que contienen lgica de negocio, y en algunos casos al usar COM+ son los objetos raz que inician las transacciones. 3. La capa de acceso a datos que contiene clases que interactan con la base de datos. Estas clases surgen como una necesidad de mantener la cohesin o clases altamente especializadas que ayuden a reducir la dependencia entre las clases y capas. Aqu podemos encontrar tambin una clase con mtodos estticos que permiten uniformizar las operaciones de acceso a datos a travs de un nico conjunto de mtodos, esta clase es el SQL Helper que tambin se usa en este proyecto DESARROLLO DE APLICACIONES: Los usuarios accesan al SQL Server a travs de una aplicacin que est escrita con una interfaz de objetos de datos o con una API. SQL Server soporta interfaces comunes y APIs nativos de bajo nivel. INTERFACES DE PROGRAMACIN DE APLICACIONES: Una API Base de Datos define como escribir una aplicacin para conectar una Base de Datos y pasar comandos a la Base de Datos. SQL Server provee soporte nativo para dos clases principales de Bases de Datos API, lo cual define la interfaz de objetos de datos que se puede
usar. Las Bases de Datos API se usan para tener mayor control sobre el comportamiento y desarrollo de las aplicaciones.
OLE DB: Esta es una interfaz de acceso a datos basada en el COM (Component Object Model). Soporta aplicaciones escritas usando OLE DB o Interfaces de Objetos de Datos basadas en OLE DB. Puede accesar a la informacin en SQL Server, otras Bases de Datos relacionales y otras fuentes de datos.
OPEN DATABASE CONNECTIVITY: 8ODBC) Es una interfaz por capas. Accesa directamente al protocolo SQL Server TDS y soporta aplicaciones o componentes que estn escritos usando ODBC o interfaces basadas en ODBC. Puede accesar a los datos en SQL Server, y otras Bases de Datos relacionales, pero generalmente no puede ser usado para accesar a otras fuentes de datos.
DATA OBJECT INTERFACES: En general, estas interfaces son ms fciles de usar que las Bases de Datos API pero pueden no tener tanta funcionalidad como un API. ACTIVEX DATA OBJECTS: (ADO) Encapsula la OLE DB API en un modelo simplificado de objetos que reduce el desarrollo de aplicaciones y los costos de mantenimiento. ADO puede ser usado a partir de Microsoft Visual Basic, Visual Basic para Aplicaciones, Active Server Pages (ASP) y el Scripting Object Model de Microsoft Internet Explorer.
REMOTE DATA OBJECTS: (RDO) Mapea y encapsula al ODBC API. RDO puede ser usado desde Visual Basic y Visual Basic para aplicaciones. ARQUITECTURA DE ADMINISTRACIN.- SQL tiene una arquitectura de administracin abierta o puede ser implementado por usuarios y un conjunto de herramientas graficas que automatiza la administracin del servidor. Dos componentes de SQL simplifican la administracin y son el SQL DMO y SQL Server AGENT.
S S
Q Q
L L
D S
( D A
i s t r i b g e n t M
t Oe d b
C O M M e t Cn o asO g Me T m +r ae nn s t a O c tb Sj e Q c j D C O M
tL )
e r v e r
E D
M L
I A
SQL DMO (Distributed Manager Objet).- Son un conjunto de objetos COM, COM+, DCOM (componentes) que nos permite la administracin que ocultan el detalle de los comandos TRANSACT SQL. Este es el lenguaje de programacin SQL. Las herramientas graficas utilizan SQL DMO que trabaja en conjunto con SQL Server para ejecutar las siguientes tareas: Administracin de eventos como estado de los procesos en que instancia ocurre un error, uso de memoria, etc., que trabajan en conjunto con el visor de sucesos de NT. Alerta y localizador, SQL Server puede enviar un e-mail o localizador del operador cuando suceda algn evento de importancia. Ejemplo: un redoloc. Ejecucin de tareas , incluye la creacin de tareas y planificacin de las mismas. Administracin de replicacin .- es el proceso de copiar los datos y transacciones de un servidor SQL Server a otro (Oracle), sincronizando los datos y moni toreando los cambios de los mismos.
SQL Server AGENT.- quien trabaja conjunto a SQL Server para ejecutar tareas de administracin, alertas y paginacin, ejecucin de tareas y replicacin ARQUITECTURA DE BASE DE DATOS Cada SQL Server tiene dos tipos de base de datos: Del sistema. De los usuarios.
El servicio de agente de SQL Server. Maneja las actividades planificadas y puede enviar alertas al administrador del sistema cuando ocurran problemas en el servidor SQL Server(ENGINE) que es el motor de la base de datos.
M * * * S S L Q L S e r v e r e r v i c i o s d e i b r e r a s d e l a B e d a s e d e DS S E
C Q L e r v e r E G E N
M T
S D T C ( M r a n s a c t i o n
S C
D o o
i s t r i b u t e d r d i n a t i o n )
S aQ t oL s e r v e rS N G I N A
M A H
e r r r a m i e n t a s d m i n i s t r a t i v a s G R A
I S
2. SOFTWARE DE CLIENTE.- Incluye una variedad de componentes de software para disear y crear Base de Datos, consultar datos, administrar el servidor y buscar ayuda entre los que tenemos: Administrador corporativo.- que se basa en el MMC (Microsoft Management Console ) que consiste en un conjunto de herramientas de administracin de windows. 3. MS DTC (MS Distributed Transaction Coordinator).- Es un manejador de transacciones que permite que las aplicaciones de los clientes incluyan diferentes fuentes de acceso en los datos. El MS DTC coordina la terminacin exitosa de las transacciones para asegurar que todas las actualizaciones en todos los servidores sean permanentes y en caso de error todas las actualizaciones o modificaciones sean canceladas SERVICIO DE SQL Server.- Es el componente que procesa todos los comandos de TRANSACT SQL que son enviados desde la aplicacin del cliente y maneja los archivos que comprende la base de datos. HERRAMIENTAS ADMINISTRATIVAS Que nos asisten en aspectos particulares de administracin de SQL Server (analizador de consultas). Herramientas de modo comando.- que nos permite ejecutar programas TRANSACT SQL y Script y son el OSQL y BCP. Y adicionalmente se puede encontrar ISQL
OSQL.- ejecuta comandos TRANSACT SQL basndose ADODBC BCP.- es un utilitario para importar y exportar datos desde y hacia SQL ISQL.- herramienta de integracin con versiones a versiones anteriores
ENTERPRICE MANAGER (Administrador Corporativo).- Es la interfase de administracin grfica primaria. Permite disear y consultas base de datos de los usuarios. ANALIZADOR DE CONSULTAS.- Es una herramienta de consultas graficas para analizar el plan de una consulta, informaciones estadsticas y manejar mltiples consultas en ventanas diferentes. CONFIGURACIN DE CLIENTE.-Utilitario usado para manejar la configuracin de los componentes de comunicacin. MONITOR DE PERFORMANCE.- Es el utilitario usado para arrancar, parar los servicios SQL Server. SQL Server SETUP.- Es la aplicacin usada para instalar y reconfigurar SQL Server.
ASISTENTES DE SQL Server.- Conjunto de herramientas que le guan al usuario a travs de complejas tareas. OBJETOS DE BASE DE DATOS
1. TABLAS.- Conjunto de registros organizado en forma de columnas. 2. CONSTRAINT.-Definen reglas que proveen de mecanismos para asegurar la
identidad de la base de datos en parmetros a nivel de PRIMARY KEY, FOREIGN KEY. 3. NDICES.- Provee un acceso rpido a los datos y puede asegurar la integridad de datos. 4. VISTAS.- Provee de una manera distinta de mirar los datos desde una o mas tablas o vistas en una base de datos. 5. PROCEDIMIENTOS ALMACENADOS.- Es una coleccin de comandos TRANSACT SQL que se recopilan y se guardan en la base de datos para su ejecucin posterior. 6. TRIGGERS.- Es una forma especial de procedimiento almacenado que se ejecuta automticamente cuando un usuario modifica los datos de una tabla. INSTALACIN Y CONFIGURACIN DE SQL SERVER Requerimientos de Hardware y Software.- el conocimiento de los requerimientos de hardware y software antes de que instale SQL Server le habilita seleccionar el hardware y software apropiado. Computador Memoria Espacio en disco Herramientas cliente Sistema de archivos Sistema operativo Compatibles con INTEL o DEC Alpha Mnimo 32 MegaBytes y en Versin 7.0 Versin 2000 en adelante Mnimo 64 MegaBytes Instalacin completa 148 y Mnimo 90 Megabytes del Entre 14 y 50 Megabytes Puede funcionar el FAT y NTFS (NTFS se puede poner la seguridad en cambio la fat32 no) Windows 9X o NT Service pack
OPCIONES DE INSTALACION Modo de Licenciamiento.- Existen dos modos de licenciamiento por servidor o por sitio o estacin de trabajo.
1. Por Servidor.- La licencia de acceso al cliente (CAL), las cal son asignada a un
servidor en particular. Especificando el numero mximo de conexiones simultaneas al servidor el cual requiere el mismo numero de licencias de cal
2. Por Estacin de Trabajo.- Cada estacin de trabajo que se conecte a SQL Server con
software de Microsoft o de terceras personas requieren de una cal. Este modo permite obtener un nmero ilimitado de conexiones simultneas.
R
S 5
D
e r v e r W S T
s t a c i o
e s
r a b
j o
S T o d
s e a s
d d
e s c o e b e n
e c t a t e n e r
n a s u C
e s t a c i n A L p a r a
o d r a c c e d e r o t r o u s u c o n e c t a r a c u a l q u i e r S
a r i Q L
R
S 8
D
e r v e r W S T S e r v e r
s t a c i o
e s
r a b
j o
a l q
i e r
e s t a c i
t r a b
a j o
a c c e d
e r
c u
a l q
i e r
Soporte de Red.- SQL Server usa las libreras de red para comunicarse con un protocolo especfico y empaquetar los pedidos o resultados desde y hacia el servidor Protocolo es un conjunto de normas para transmitir informacin a travs de un idioma. Entre algunos protocolos tenemos:
TCPIP.- Este no es un protocolo, si no un conjunto de protocolos, que toma su nombre de los dos ms conocidos: TCP (Transmission Control Protocol, protocolo de control de transmisin) e IP (Internet Protocol). Esta familia de protocolos es la base de la red Internet, la mayor red de ordenadores del mundo. Por lo cual, se ha convertido en el ms extendido. Este se instala por defecto. NETBEUI.- NetBIOS Extended User Interface (Interfaz de usuario extendido para NetBIOS). Es la versin de Microsoft del NetBIOS (Network Basic Input/Output System, sistema bsico de entrada / salida de red), que es el sistema de enlazar el software y el hardware de red en los PCs. Este protocolo es la base de la red de Microsoft Windows para Trabajo en Grupo. IPX/SPX (Internet Packet eXchange/Sequenced Packet eXchange).- Es el conjunto de protocolos de bajo nivel utilizados por el sistema operativo de red Netware de Novell. SPX acta sobre IPX para asegurar la entrega de los datos. APPLETALK.- Este protocolo est incluido en el sistema operativo del ordenador Apple Macintosh desde su aparicin y permite interconectar ordenadores y perifricos con gran sencillez para el usuario, ya que no requiere ningn tipo de configuracin por su parte, el sistema operativo se encarga de todo. BAYAN VINES MULTIPROTOCOLO
Para aadir una librera de red a SQL Server despus de la instalacin deben ejecutar nuevamente el setup. Conjunto de Caracteres.- Durante la instalacin se escoge el cdigo de pgina que contiene el conjunto de caracteres que soporta el lenguaje que usa que es para todas las bases de datos del servidor.
Si usted cambia el conjunto de caracteres despus de haber instalado SQL Server, debe recrear la base de datos master y todas las de los usuarios Orden de Clasificacin.- Son un conjunto de reglas quien determinan como SQL Server ordena y presenta los datos en respuesta a las consultas de la base de datos dependiendo del conjunto de caracteres que hayan escogido Si cambia el orden la clasificacin despus de instalar SQL Server debe recrear todas las bases de datos El directorio de instalacin.- Ud puede seleccionar un directorio por defecto para la instalacin de SQL Server o cambiar para los archivos, datos o ambos Autentificacin Del Login: Un usuario debe tener una cuenta para conectarse al SQL Server. Este reconoce 2 mecanismos de autentificacin: Autentificacin de SQL Server y de Windows NT. Cada uno tiene un diferente tipo de cuenta.
Cuenta de Acceso SQL Server.Despus de que los usuarios han sido autentificados, y se les ha permitido conectarse al SQL Server, deben tener cuentas en la Base de Datos. Las cuentas de usuario y los roles, identifican permisos para ejecutar tareas.
Ejecucin de SQL Server.Puede ser de modo manual (al dar clic para levantar la base de datos) o automtico (los servicios arrancan automticamente para Windows sin necesidad que el usuario ingrese al sistema) Introduccin a la instalacin de SQL Server 2000 El programa de instalacin de Microsoft SQL Server 2000 crea una nueva instancia de SQL Server 2000 o actualiza una versin anterior. Antes de instalar o actualizar a SQL Server 2000 conviene que lea los siguientes temas. Tema Preparar la instalacin de SQL Server 2000 Descripcin Indica los pasos que se deben seguir antes de ejecutar el programa de instalacin de SQL Server 2000
SQL Server 2000: Ediciones y componentes Presenta una vista general de las ediciones de SQL Server 2000, las opciones de instalacin y los componentes Actualizar una instalacin existente de SQL Resume las opciones para actualizar a SQL Server Server 2000 a partir de una versin anterior Para obtener ms informacin, consulte los temas relacionados en la siguiente tabla. Para instalar Consulte
SQL Server 2000 (instalacin tpica del Cmo instalar SQL Server 2000 (programa de motor de bases de datos relacional, las instalacin) herramientas cliente y los componentes de conectividad del cliente) Las herramientas cliente de SQL Server Cmo instalar slo las 2000 (programa de instalacin) (incluye las herramientas de administracin y componentes de conectividad del cliente, no requiere un servidor) herramientas cliente
Slo la conectividad de SQL Server 2000 Cmo instalar slo la conectividad (programa de (instala nicamente los componentes de instalacin) conectividad del cliente, sin otras opciones) Una instancia con nombre o varias Cmo instalar una instancia con nombre de SQL
Un servidor virtual SQL Server 2000 para el Antes de instalar el clster de conmutacin por error clster de conmutacin por error Analysis Services English Query Instalar Analysis Services Instalar English Query
Instalar Servidor de Base de Datos.El SQL Server 2000 proporciona el soporte robusto para soluciones escalables de Base de Datos.
Instalar Servicio de Anlisis.El Analysis Services de SQL Server 2000 est diseado para facilitar las aplicaciones de procesamiento analtico en lneas y de minera de datos.
Instalar English
Query.-
SQL Server 2000 English Query ayuda a los programadores a generar aplicaciones que permiten que los usuarios puedan realizar preguntas en ingls en lugar de construirlas con una instruccin SQL.
Con el asistente de instalacin permite instalar una instancia nueva de SQL Server a modificar una instancia ya existente.
Despus debemos colocar si el equipo a crear la instancia ya existe algn tipo de servidor SQL virtual ya existe para escoger el tipo de equipo a utilizar, entre estos tenemos: Equipo Local, Equipo remoto, Servidor Virtual. Informacin de instalacin remota La informacin de instalacin remota se necesita para definir la seguridad en dos situaciones de instalacin distintas: Cuando opta por instalar Microsoft SQL Server 2000 en un equipo remoto. Cuando se ejecuta el programa de instalacin en un equipo que forma parte de un clster, aunque no se est creando ni manteniendo una instalacin de clsteres de conmutacin por error de SQL Server. En una instalacin remota, la instalacin de SQL Server recopila la informacin que ha especificado en los cuadros de dilogo de la instalacin y registra las entradas en el archivo SETUP.ISS. Al mismo tiempo, este proceso de instalacin remota inicia un servicio remoto, copia archivos en el directorio compartido \ADMIN$ y ejecuta una instalacin desatendida en el equipo remoto mediante las opciones especificadas en SETUP.ISS. Para los equipos agrupados, se muestra el cuadro de dilogo Informacin de instalacin remota, ya que cualquier instalacin en un sistema de clster de conmutacin por error necesita la cuenta de administrador para instalar el Coordinador de transacciones distribuidas de Microsoft en ambos nodos o bien para comprobar la presencia de MS DTC. Se debe especificar informacin del administrador que sea vlida para todos los nodos seleccionados en el sistema de clster de conmutacin por error. Opciones Nombre de usuario, contrasea y dominio Especifique la cuenta de usuario con la que el programa de instalacin de SQL Server inicia un servicio en el equipo remoto. Esta cuenta de usuario debe ser de administrador del equipo remoto y tener acceso de lectura al directorio de archivos de origen de la instalacin. La cuenta de usuario que se especifica en esta pantalla no debe confundirse con: La cuenta de usuario con la que se inicia la sesin en el equipo local. La cuenta de usuario asignada a los servicios SQL Server y Agente SQL Server durante la instalacin de SQL Server.
Todas estas cuentas de usuario se especifican por separado. Sin embargo, puede utilizar la misma informacin de usuario en ambos casos. Es decir, puede usar el mismo nombre, contrasea y dominio de Windows para cada cuenta. Equipo de destino El nombre del equipo remoto, especificado en el cuadro de dilogo Nombre del equipo, se muestra en texto esttico. Ruta de acceso de destino El nombre del equipo remoto y el directorio, en el formato de la Convencin de nomenclatura universal, del equipo remoto en el que se va a instalar SQL Server. Por ejemplo: \\target_computer\C$\Program Files\Microsoft SQL Server Archivos de origen de la instalacin Ubicacin de los archivos del programa de instalacin que se utiliza para la instalacin remota.
En esta parte de la instalacin se debe seleccionar si se va a crear una nueva instancia SQL Server; o si desea Actualizarla, Quitarla o Agregarla componentes o elegir una opcin avanzada para la instalacin.
Aqu debe escribirse el nombre del usuario y su compaa a la que representa. Por lo general se debe dejar por defecto.
Aqu nos indica las condiciones de contrato de licencia para el usuario al momento de instalar SQL Server 2000 el cual esta sometido el usuario a cumplir en el momento de aceptar el software.
Se debe elegir una instancia de instalacin. Para lo cual en nuestro caso tendremos que escoger Herramientas Clientes y Servidor puesto que necesitamos ver la informacin de las dems estaciones de trabajo que a su vez tambin son servidores.
Para el nombre de la instancia escogeremos la predeterminada para la instalacin pues mantiene instancias de SQL Server anteriormente predefinidas.
En el tipo de instalacin escogeremos Tpica pues estos son opciones que en el transcurso del uso son las ms frecuentes y recomendados para el usuario.
Configuraremos las cuentas de servicios que servirn de acceso a SQL Server. Al escoger la utilizacin de la misma cuenta para el servicio al iniciar se tendrn como servicio a SQL Server y al Agente SQL Server
Para el modo de autenticacin escogeremos el modo mixto y en este caso escogeremos contrasea en blanco puesto que los dems usuarios que vayan a ocupar no tengan problemas al ingresar (No se recomienda dejar sin contrasea).
Empezar a copiar los archivos necesarios para la instalacin y luego para su uso.
Empezar a instalar en la direccin definida por el usuario o por defecto anteriormente especificada.
Luego nos aparecer un mensaje que esta actualizndose en el sistema operativo de nuestro cliente - servidor
Para finalizar nos aparece un dilogo que la instancia a realizado con xito.
Se recomienda reiniciar la mquina para que se actualice la nueva instalacin realizada. SOPORTE DE RED Usa los herramientas de red para comunicarse con un protocolo especifico entre los cuales tenemos : TCP/IP. \\servidor\R REDES NET BUI \\canalizacion de nombre MICROSOFT IPX/SPX NOVEL Apple Talk MAC BAYAN VINES Nota: Para aadir una librera de red a SQL Server Uds. deben volver a ejecutar el instalador. CONJUNTO DE CARACTERES Durante la instalacin se debe escoger el cdigo de pgina que contiene el conjunto de caracteres que su lenguaje utiliza y se empleara en todas las bases de datos Nota: Si Uds. cambia el conjunto de caracteres deben recrear la base de datos master y toda la base de datos de los usuarios. SENTIDO DE ORDENAMIENTO. Son el conjunto de reglas que determina como SQL Server recupera y presentan los datos en respuesta a una consulta ADMINISTRADOR CORPORATIVO Es el administrador de la base de datos de SQL Server y es una herramienta grafica que nos permite administrar la herramienta de SQL Server Todas las tablas que empiecen con sys. Son del diccionario de datos.
Podemos visualizar en lado izquierdo los objetos y a la derecha los contenidos Registro del Servidor
Servidores de Microsoft.- Ingresamos a un asistente que ayudar a registrar uno o ms servidores SQL Server.
TIPOS DE BASE DE DATOS Tenemos dos tipos de Base de Datos de Sistema y de Usuario. En la Base de Datos de Sistema tenemos a: MASTER, MODEL, MSDB, TEMPDB y en el de Usuario tenemos: NORTHWIND, PUBS y OTROS
Base de Datos NORTHWIND.En una Base de Datos podremos encontrar: Diagramas (Visualizacin de relaciones que tiene la base de datos con respecto a sus tablas), Tablas (contenido de filas y columnas), Vistas, Procedimientos almacenados, Usuarios, Funciones, Reglas, Valores predeterminados, Tipos de datos definidos por el usuario, Funciones definidos por el usuario.
En las TABLAS podremos visualizar el contenido de cada uno de ellos con tan seleccionar la tabla y solo dar clic derecho sealar abrir tabla y devolver todas las filas.
PERMISOS.- Aqu muestra el permiso que se da a la base de datos desde el servidor ya que sin estos permisos no se podr realizar ninguna consulta. Para lo cual cogeremos la Base de Datos MASTER como ejemplo.
Tambin podremos visualizar las claves, tipos de variables, etc como si visualizaremos el contenido de una tabla en Microsoft Access. Para esto tomaremos la Base de Datos NORTHWIND y en la TABLA ORDERS.
CREACIN DE BASE DE DATOS Cuando se crea la base de datos se debe conocer la estructura de la misma, esta estructura debe ser:
DATABASE
Cuando crea una base de datos es importante que comprenda como se almacena los datos para calcular y especificar el tamao que tendr una base de datos. Al momento de crear considere los aspectos: 1. Todas la bases de datos tienen un archivo primario de datos con extensin MDF y uno o ms archivos de transacciones. Tambin pueden tener varios archivos secundarios de datos con la extensin MDF. Los archivos tienen un nombre lgico que se utiliza en TRANSACT SQL y un nombre fsico que utiliza el sistema operativo 2. Cuando crea una base de datos una copia de la base de datos MODEL que incluye las tablas del sistema se copia a la nueva base de datos. 3. Los datos son almacenados en paginas y cada pagina tiene 8 Kb .esto significa que una base de datos tiene 128 paginas por Mg. 4. Cada pagina arranca con un encabezado de 96 bits que es usado para almacenar el sistema, mximo se puede almacena 8060 bits por registro. 5. Las tablas y los ndices se almacenan en EXTENTS. Un EXTENT est compuesto de 8 paginas y tiene 16 EXTENTS por Mb. 6. Los archivos de transacciones mantienen la informacin necesaria para recobrar la base de datos en caso de falla. Por default es el 25% del tamao de los datos , y se recomienda que se instale en un disco separado al de la base 7. Los archivos de transacciones graba las modificaciones a los datos INSERT, UPDATE, DELETE. CREACION DE LA BASE DE DATOS 1. Nombre de la base de datos 2. Archivos en los cuales la base de datos va a recibir 3. Porcentaje de espacio requerido en cada dispositivo archivo en MG 4. Ubicacin y tamao de archivos de transacciones. CREATE DATA BASE nombre [ on {[PRIMARY](NAME=nombre_logico, FILENAME=NOMBRE_FISICO_DATA.MDF [,SIZE=tamao] [,MAXSIZE=tamao_maximo] [,FILEGROWTH=incremento]) ] [LOG ON NAME=nombre_logico_log, FILENAME=NOMBRE_FISICO_LOG .LDF [,SIZE=tamao] [,MAXSIZE=tamao_maximo] [,FILEGROWTH=incremento]) ]
Tambin podemos crear Base de Datos escogiendo en el MENU HERRAMIENTAS y dentro del ANALIZADOR DE CONSULTAS y realizar la sintaxis para crear la Base de Datos.
EJERCICIO Cree una base de datos llamado Librera 2 Mb en archivo de datos y 1 Mb en archivo log considere 1 mega de incremento en ambos casos y sin limite de tamao Considere los siguientes aspectos al momento de crear una Base de Datos. Ejecutar el Analizador de Consultas de Consultas en el Men Herramientas. Conectarse con el servidor. Dirigirse ala Base de Datos. Clic derecho en nueva Base de Datos. En el proceso de creacin darle un nombre a la Base de Datos nueva (librera). En la parte de arriba de la solapa Archivo de datos y Registro de transaccin. En el Archivo de datos nos aparece el nombre del archivo aadido con data esto es el modo fsico (librera_data) con extensin ndf por defecto. A un archivo primario si se desea tener la de fragmentacin no es recomendable llenar los archivos secundarios. El tamao de la base de datos es de 1Mb. Existen dos secciones: al lado izquierdo esta en funcin de porcentajes o Megabytes. En una base de datos no se necesita el crecimiento. En el registro de transaccin es igual y por defecto es el 25% no menos de 1 Megabytes. En el registro de transaccin nos aparece el nombre del archivo aadido con log esto es el modo lgico (librera_log) CREATE DATABASE LIBRERIA ON PRIMARY (NAME=LIBRO1, FILENAME='D:\MIS_DOC\TONY\SGBD\LIBRO1.MDF', SIZE = 1, MAXSIZE=2, FILEGROWTH=0) LOG ON (NAME=LIBRO2, FILENAME='D:\MIS_DOC\TONY\SGBD\LIBRO2.MDF', SIZE = 1, MAXSIZE=1, FILEGROWTH=0) El proceso CREATE DATABASE est asignando 1.00 MB en el disco 'LIBRO1'. El proceso CREATE DATABASE est asignando 1.00 MB en el disco 'LIBRO2'.
134
CONSTRAINTS
Son el mtodo preferido para asegurar la integridad de los datos y pueden ser definidos por los comandos CREATE TABLE o ALTER TABLE. Consideren los siguientes puntos cuando implemente o modifique constraints: 1. 2. 3. 4. SQL Server verifica la existencia de datos cuando aade un constraints. Los constraints son mantenidos separadamente de la estructura de la tabla. Cualquier violacin de un constraints termina el comando actual Para ayuda de constraints pueden ejecutar los procedimientos almacenados llamados SP_helpconstraint y SP_help
INDICES SQL Server accesa a los datos de dos formas: Secuencialmente o por medio de ndices. El optimizador de consultas determina cuando utilizar el acceso secuencial o el indexado. Por que Indexar: 1. Los ndices pueden acelerar consultas que unan tablas y se ejecutan operaciones de clasificacin o agrupamiento. 2. Permiten que los registros sean nicos. 3. Los ndices son creados y mantenidos en orden ascendente. 4. Son mejor creados en columnas con alto grado de selectividad. Por que no Indexar: 1. Cuando modifica los datos en la columna indexada. 2. El mantenimiento de los ndices requiere de tiempo y de recursos. 3. Los ndices en pequeas tablas producen poco beneficio. Para crear un ndice lo puede hacer dentro del Administrador Corporativo o con el Analizador de Consultas con la instruccin CREATE INDEX. Sintaxis: CREATE [UNIQUE][CLUSTERED][NONCLUSTERED] INDEX nombre_indice ON tabla.columna,
Para la eliminacin de ndices con la instruccin DROP INDEX. Sintaxis: DROP INDEX nombre TIPOS DE INDICES (EXCLUSIVO SQL SERVER) Existen dos tipos : 1. CLUSTERED. 2. NON CLUSTERED. CLUSTERED.-
135
Reflejan el ordenamiento fsico de los registros en una tabla. Cree un ndice CLUSTERED en columnas de tablas que frecuentemente son basados por rangos: 1. Cada tabla solo puede tener un solo ndice CLUSTERED. 2. El ordenamiento fsico de las tablas y el orden del ndice son los mismos. 3. Los campos nicos son mantenidos explcitamente usando la palabra UNIQUE o implcitamente usando el identificador nico. 4. El tamao promedio de un ndice CLUSTERED es el 5 % del tamao de la tabla. 5. Durante la creacin del ndice se utiliza espacio de la base de datos, mas no la del temporal (TEMPDB) requeriendo de un 20 % de espacio libre. NONCLUSTERED.Representan el ordenamiento lgico de las filas y son necesarios como una forma de un medio alternativo para bsqueda de datos (por ejemplo pascal, c, ). Debe crear un ndice CLUSTERED antes de crear ndices NONCLUSTERED. Considere los siguientes aspectos: 1. Este tipo de ndices es utilizado por DEFAULT. 2. Puede tener hasta 256 ndices por tabla. 3. Son creados en columnas los cuales tienen un alto grado de selectividad de ser nicos. Relacin entre CLUSTERED y NONCLUSTERED
a x z w y 1 a 4 x 2 z 5 w 3 y
La diferencia que se puede dar es primero observar el mtodo de ordenamiento, si no existe para luego crearlo mediante un ndice que lgicamente ordene y al relacionarlo el nmero de seleccin con el datos es el que indicar al momento de posicionarse.
TRIGGERS DE BASE DE DATOS.Un TRIGGER es un objeto de Base de datos que se usa para reforzar las reglas del negocio y controlan la integridad de los datos. Un TRIGGER se define en una tabla especfica. CARACTERSTICAS.-
Son invocados automticamente en respuesta a un evento que puede ser: Insert, Delete, Update.
I N T R I G G E R D U E P S L D E E A R T T T E E
Un TRIGGER no puede ser llamado directamente y no pasa ni acepta parmetros. Un TRIGGER es una TRANSACCIN.
Transaccin.- Es el conjunto de comandos que son tratados como uno solo (O se ejecutan todos los comandos o no se hacen ninguno el mejor ejemplo es al dar un COMMIT). USO DE LOS TRIGGERS.-
136
El beneficio principal del uso de los TRIGGERS es que ellos pueden tener una lgica compleja de procesamiento que use cdigo TRANSACT SQL. Asegurar cambios en cascada a travs de tablas relacionadas en una Base de Datos Refuerzan las capas de negocio ( Establecen como va a funcionar el sistema el mejor ejemplo es el IVA). Mantiene datos desnormalizados (Ejemplo el total de una factura). Comprara los estados de antes y despus de que los datos sean modificados.
CONSIDERACIONES CUANDO USE TRIGGERS.Los TRIGGERS son reactivos, en cambio los CONSTRINT son pro-activos Los CONSTRAINT son verificados primero. Las tablas pueden tener mltiples TRIGGERS Los propietarios de la tablas deben tener permisos para ejecutar todos los comandos en el TRIGGER Los TRIGGERS no deben ser disparadores o creados en tablas temporales o vistas. Se recomienda que no se incluya comandos SELECT.
E M P o e T R ( S I G G Q L ) E I N R D U E P S L D
e m p n d n a m j o b s a l
E M P e m p n o d n a m e j o b s a l e m 2 1 0 4 0 2 p nd on 0 P 0 A a m jeo b s a
R ( S
rt in s e fo r_ I G G E Q L )
I e d j s p
N m n o b a l a
S p a
E n m
R o e
l 8 0 0 e0 t
e m 2 0 4 e m 1 0 2
nd on 0 P
j eo b
s a
l 8 0 l 0t e 0
e p n
i t Jo e f e 1 i t Ga e r e n3
e p a n
i tJo e f e 1 m i tGa j eo b s a
nd on 0 A
e r e n3
INSERT INTO EMP VALUES (2040,PEPITO,JEFE,180); Al insertar datos en la tabla INSERTED tambin se insertarn datos pero con la diferencia es que son temporales. INSERT INTO EMP VALUES(1020,ANITA,GERENTE,300); Al ingresar ms informacin, el anterior dato que estaba se elimina y se actualiza la tabla INSERTED con los nuevos datos ingresados.
137
P o e T R ( S
e m p n d n a m j o b s a l e m 2 1 X Y 0 4 0 2 p nd on 0 P 0 A A B a m
rt in s e fo r_ I G G E R Q L )
I N
R o e
e m p n d n a m j o b s a l p nd on 0 P p a m
jeo b
s a
l 8 0 t0 e 0 0 0
e m 2 0 4 e m 1 0 2 e m X Y
jeo b
s a
l 8 0 l 0t e 0 l 0 0
e p n
i t Jo e f e 1 i t Ga C D e r e n3 1 2
e p a n a
i t Jo e f e 1 m i tGa m C D jeo b s a
nd on 0 A
e r e n3 jeo b s a 1 2
nd on A B
Si se insertan ms de dos datos a la vez pues estos ser tomados como una sola insercin en el comando insertar y se almacenaran en el INSERTED en este caso los dos ltimos. DELETE FROM EMP WHERE SAL <100
E M P e m p n o d n a m e j o b s a l e m 2 1 0 4 0 2 p nd on 0 P 0 A a m jeo b s a
te d e le fo r_ I G G E Q L )
R ( S
I e d j s p
N m n o b a l a
S p a
E n m
R o e
l 8 0 0 e0 t
e m X Y
nd on A B
m C D
j eo b
s a 1 2 0 0
e p n
i t Jo e f e 1 i t Ga e r e n3
El DELETED crea una tabla virtual y se guarda los ltimos datos eliminados. OTRO UPDATE EMP SET SAL = SAL*1.20 WHERE SAL <300
ate upd for_ I G G E R Q L )
E M P e m p n o d n a m e j o b s a l e m 2 1 0 4 0 2 p nd on 0 P 0 A a m j eo b s a
R ( S
I e d j s p
N m n o b a l a
S p a
E n m
R o e
D e d j s l e m 2 0 4 p
E m n o b a l p a
L n m
E o e
l 8 0 0t e 0
e m 2 0 4
nd on 0 P
jeo b
s a
nd on 0 P
a m
j eo
s a
l 8 0
e p n
i t Jo e f e 1 i tGa e r e n3
e p
i t Jo e f e 2
1 6
e p
i t Jo e f e 1
El TRIGGER crea en las dos tablas INSERTED y DELETED. Crear una Base de Datos llamado LIBRERIA y dentro de l van a crear las tablas DETALLE con los venta_id, cantidad y precio; y en la tabla VENTA los campos venta_id y total create table venta (
138
venta_id char(10), total numeric(5), constraint pk_venta primary key(venta_id) ); create table detalle ( venta_id char(10), cantidad numeric(5), precio numeric(5), );
Aqu nos muestra las tablas recientemente creadas que son VENTA y DETALLE. TRIGGERS.- Son usados para reforzar la integridad referencial. Los TRIGGERS son definidos sobre una tabla. Los TRIGGERS son bloques de cdigo T-SQL que responden a un evento (INSERT, UPDATE, DELETE). INSERT TRIGGER UPDATE DELETE TRIGGER (INSERT)
TOTAL
DETALLE
INSETED
UNAQ VENTA PRECIO CANTIDAD Se deber primero enserar con: ------------------------------------------------------------------------------------TOTAL -------------------------------------------
139
insert into detalle (venta_id,cantidad,precio) values (1,3,10); TABLA VENTA CON TRIGGER DE INSERCION
TABLA DETALLE
UPDATE VENTA SET TOTAL=TOTAL+(SELECT SUM(CATIDAD*PRECIO)FROM INSERTED WHERE INSERTED.VENTAID=TOTAL.VENTAID) INSERT INTO VENTA VALUES SELECT VENTAID, SUM(CANTIDAD * PRECIO) AS TOTAL FROM INSERTED (*) GROUP BY VENTA_ID DELETE DETALLE WHERE PRECIO=2
DELETED.- Almacena todos los registros que se han eliminado en el ltimo DELETE UPDATE VENTA SET TOTAL=TOTAL (SELECT SUM(CANTIDAD*PRECIO)FORM DELETED) WHERE DELETED.VENTAID=TOTAL.VENTAID
140
UPDATE VENTA SET TOTAL=TOTAL TOTAL + INSERTED (SELECT SUM(CANTIDAD*PRECIO)FROM DELETED) + (SELECT SUM(CANTIDAD*PRECIO) FROM INSERTED) WHERE (INSERTED.VENTAID=TOTAL.VENTAID) EJEMPLO DE TRIGGERS /*CREACION DE BASE DE DATOS*/ DROP DATABASE LIBRERIA CREATE DATABASE LIBRERIA ON PRIMARY ( NAME=LIBRO_DATA_MDF, FILENAME='D:\LIBRERIA\LIBRO_DATA.MDF', SIZE = 1, MAXSIZE=2, FILEGROWTH=0 ) LOG ON ( NAME=LIBRO_LOG_LDF, FILENAME='D:\LIBRERIA\LIBRO_LOG.LDF', SIZE = 1, MAXSIZE=1, FILEGROWTH=0 ) /*CREACION DE TABLAS: VENTA Y DETALLE*/ DROP TABLE VENTA DROP TABLE DETALLE CREATE TABLE VENTA ( VENTA_ID NUMERIC(5), TOTAL NUMERIC(5), CONSTRAINT PK_TOTAL PRIMARY KEY (VENTA_ID) ); CREATE TABLE DETALLE ( VENTA_ID NUMERIC(5), CANTIDAD NUMERIC(5), PRECIO NUMERIC(5), ); /*CREACION DE TRIGGER CALCULO_INSERT*/ CREATE TRIGGER calculo_insert ON detalle FOR INSERT AS UPDATE venta SET total=total+(select sum(cantidad*precio) as venta
141
FROM inserted WHERE inserted.venta_id=venta.venta_id) /*CREACION DE TRIGGER CALCULO_DELETE*/ CREATE TRIGGER calculo_delete ON detalle FOR DELETE AS UPDATE venta SET total=total-(select sum(cantidad*precio) FROM DELETED WHERE deleted.venta_id=venta.venta_id) /*COMPROBACIN DE INSERCIN DE DATOS*/ insert into vneta(venta_id,total) values('10',30); insert into detalle(venta_id,cantidad,precio) values('20',5,3) select * from venta /*Selecciona la tabla venta*/ update venta set total = 0 /*Sirve para inicializar en cero al total*/ TIPOS DE VARIABLES Variables local .- son los crean los usuarios y empiezan con una @ y registro Variables Globales.- son la variables que interactan con los del sistema y empieza con doble @@. Para validar un TRIGGER CREATE TRIGGER CALCULO ON DETALLE FOR INSERT, UPDATE, DELETE AS If UPDATE(TOTAL) (SELECT COUNT(*)CONTAR FROM VENTA, INSERTED WHERE (VENTA.VENTA_ID=INSERTED.VENTA_ID)) If UPDATE(TOTAL) (SELECT COUNT(*)CONTAR FROM VENTA, DELETED WHERE (VENTA.VENTA_ID=DELETED.VENTA_ID)) If UPDATE(TOTAL) (SELECT COUNT(*)CONTAR FROM VENTA, UPDATED WHERE (VENTA.VENTA_ID=UPDATED.VENTA_ID)) GO PROCEDIMIENTOS ALMACENADOS STORED PROCEDURE.- Son un conjunto de comandos SQL que se almacena en el servidor y son un mecanismo de encapsular las tareas repetitivas que se ejecutan eficientemente Existen cinco tipos de SPs:
1. SPs del Sistema .- Permite a los administradores ejecutar consultas que involucran 2. 3. 4.
las tablas del diccionario de datos solo para tablas del sistema ejecuta solo los administradores. SP_HELP nombre de la tabla SPs Locales.- Son los creados por los usuarios SPs Temporales.- Son procedimientos que se ejecutan temporalmente que pueden ser locales cuando empiezan con el smbolo de numeral , o globales empiezan con dos numerales se activan cuando ingresa a la seccin SPs Remotos .- Son SP llamados desde un servidor remoto o desde un cliente que esta conectado a un diferente servidor
142
Calcular la sumatoria total para vinet select sum(freight) from orders where customerid= 'VINET' Para poder hacer las consultas de todos los clientes. create procedure total_peso (@cliente nchar) as select sum(freight) from orders where customerid= @cliente
143
create procedure total_peso (@cliente nchar(5)) as select sum(freight) from orders where customerid= @cliente exec total_peso 'VINET' drop procedure total_peso
Para ejecutar un SP se utiliza el comando: EXEC nombre_SP seguido de los parmetros. Para ver informacin de los SP se utiliza lo siguiente: SP_HELP_SQL SP_HELP SP_HELPTEXT SP_DEPENDS SP_STORE_PROCEDURES Para ver todo el enlistado Herramientas Orientadas a la Web.Usted puede crear pginas web utilizando el asistente de SQL FOR Web o procedimientos almacenados. Herramientas para crear sitios web.-
1.
El Asistente de SQL Server FOR WEB.- Es una herramienta grfica para crear archivos HTML desde los datos de SQL Server que pueden actualizarse automticamente. 2. Procedimientos almacenados.- Usted puede usar para crear y manejar la generacin de pginas web desde los datos en SQL Server haciendo uso de los siguientes SPs: sp_makewebtask, sp_runwebtask, sp_dropwebtask. Ejecutar una consulta de Base de Datos para el WEB.-
144
Se debe seguir: Escoger la Base de Datos (Nortwind) Ir a Men Herramientas y Asistentes Dentro de Asistentes escogemos Administracin En Administracin escogemos el Asistente para Ayudante de Web y Aceptamos Este Asistente para Ayudante de Web nos permite publicar datos de una tabla SQL Server en una pgina Web. Luego damos un clic en siguiente Escogemos el nombre de la Base de Datos en este caso Nortwind. Luego damos un clic en siguiente. Damos un nombre al trabajo del ayudante de web. Adems seleccionamos que datos deseamos seleccionar en la tabla de la pgina web. En nuestro caso seleccionamos Datos de las tablas y columnas seleccionadas. Luego damos un clic en siguiente Seleccionamos la tabla y columna que deseamos publicar en la pgina web. En nuestro caso escogeremos la tabla EMPLOYEES y las columnas LASTNAME, FIRSTNAME, BIRTHDATE. Luego damos un clic en siguiente Debemos escoger que filas de la tabla deseamos publicar. En nuestro caso como escogimos solo tres daremos en todos. Luego damos un clic en siguiente Para actualizar la pagina en frecuencia de los datos y generacin de la pgina escogeremos en Intervalos regulares programados. Luego damos un clic en siguiente Despus escogeremos el periodo que se desea crear la pagina (semanas, das, horas, minutos) as como la fecha y hora de inicio. Luego damos un clic en siguiente Especificamos el nombre de archivo que deseamos publicar. Luego damos un clic en siguiente Para el formato de la pgina escogemos que si necesitamos dar este formato. Luego damos un clic en siguiente Luego especificamos el ttulo para la pgina web as como el ttulo de la tabla donde contendrn los datos de la pgina web. Luego damos un clic en siguiente Adems escogemos los formatos para los nombres de las columnas con sus caractersticas. Luego damos un clic en siguiente Si deseamos agregar un hipervnculo as como la etiqueta dentro de la pgina web siendo Opcional. Luego damos un clic en siguiente Limitaremos las filas que contendr est pgina. En nuestro caso colocaremos como 20. Luego damos un clic en siguiente Nos aparecer con el asistente que se a completado y adicionalmente nos permite escribir el TRANSACT-SQL que ser guardado en la direccin deseada por el usuario. Luego damos un clic en finalizar. Y para finalizar nos aparecer un mensaje que fue exitoso la ejecucin de la Base de Datos.
Creacin de Usuarios:
145
Nos vamos al Enterprise Manager. Dentro de una base de datos creada, botn derecho, New Database User. En Login Name, desplegamos la ventana que hay, y le damos a nuevo. Sale la ventana de (nuevo usuario) Le damos a new. Sale la pantalla (nuevo login)
Asignacin de permisos Te sitas sobre el usuario y le das clic al botn derecho del ratn propiedades, y entonces aparece una ventana y si le das al boton `Permissions...' te aparece la ventana (permisos). En esa ventana puedes ponerle a cada objeto de la base de datos los permisos que tu creas oportunos que deban tener (SELECT, INSERT, UPDATE, DELETE, EXEC, DRI )
146
En la parte posterior podemos elegir conectarnos a travs de Windows authentication (Autentificacin de Windows) o a travs de SQL Server authentication (Autentificacin de SQL Server). En la primera, cuando un usuario se conecta a SQL Server, ste ltimo verifica que el nombre y la clave se han validado cuando el usuario se ha conectado a Windows NT/95/98. Si no se encuentra ninguna correspondencia entre las cuentas de NT y los logins de SQL Server, entonces se usa la cuenta guest (invitado). Este usuario no se crea por defecto sino que debe ser aadido para que cualquier usuario que se conecte a SQL y no tenga un usuario asignado ingrese con este usuario. Ahora bien este usuario guest debe tener permisos limitados. Este usuario siempre tiene un uid igual a 2 y contiene los privilegios del grupo public. Copias de Seguridad. Realizacin. Principales parmetros a tener en cuenta. El guardado de una base de datos debe incluir todos los archivos, incluyendo el registro de transacciones, necesarios para la restauracin de los datos en un estado coherente. Las operaciones de guardar y restaurar deben planificarse para responder a todos lo casos. Los puntos ms importantes son: - Guardar las bases de datos de sistema (master, msdb..) y de usuario. La frecuencia de las copias estar en funcin del uso de las bases. - Intentar guardar siempre reduciendo al mnimo el tiempo de restauracin. - Probar la restauracin para validar el guardado. Las copias pueden hacerse de manera dinmica durante el trabajo de los usuarios; con Enterprise Manager o con la instruccin BACKUP. Las copias pueden hacerse sobre las unidades de copia: - Disco - Cintas - Canales con nombre Las unidades de copia pueden ser gestionadas por Enterprise Manager, o por el procedimiento almacenado sp_adddumpdevice. Procesos de backup y restore Polticas de copia de seguridad Los procesos de backup escriben conjuntos de pginas en principio inconsistentes. Para hacerlos consistentes, los backup incluyen el Transaction Log. Las posibles metodologas de copia de seguridad son las siguientes: Backups completos peridicos Se realizan backups peridicos de la base de datos completa. La ventaja es la facilidad de administracin, el inconveniente es que no se garantizan los cambios desde el ltimo backup. Backups completos peridicos con Transaction Log Se realizan backups peridicos de la base de datos completa y con mayor frecuencia, backups del Transaction Log. La realizacin de copias de seguridad del Transaction Log proporciona una gran flexibilidad en la restauracin de bases de datos, ya que permite restaurar la base de datos hasta el instante anterior a que se produjese un error, o hasta un instante determinado del tiempo.
Rendimiento de los procesos de backup Los benchmarkings de SQL Server proporcionan los siguientes resultados en cuanto a procesos de backup:
147
Un backup online consume aproximadamente un 15% de recursos de procesador. Un restore consume un 8%. El ancho de banda utilizado por el backup apenas se ve penalizado por la carga del servidor.
Para incrementar el rendimiento de los procesos de backup pueden tomarse las siguientes medidas: - Incrementar el paralelismo, es decir aumentar el nmero de unidades de cinta. - Balancear velocidades de discos y dispositivos de backup. La velocidad de lectura de disco puede medirse realizando un backup a nul. - No debe compartirse la controladora SCSI entre la unidad de cinta y el disco. - No debe utilizarse compresin hardware si los datos no son comprimibles (p.ej. una base de datos de imgenes) Como realizar una copia de seguridad. Nos vamos al Enterprise Manager. Nos situamos en la base de datos en la cual deseamos realizar una copia de seguridad. Botn derecho del ratn sobre ella, y realizar el procedimiento que aparece a continuacin.
Una vez hecho este proceso, aparece la ventana que se muestra a continuacin.
En dicha ventana, en la pestaa General, detallaremos las opciones que tiene. La Base de Datos a la cual procederemos a realizar una copia de seguridad, que ya viene dada lgicamente, pero que la podemos cambiar.
148
Su nombre, y su descripcin. En Backup seleccionamos el tipo de copia de seguridad, que puede ser completa o diferencial, del transaction log, y file and filegroup, en la cual se eligen las tablas deseadas nicamente. En Destination elegimos la ruta donde queremos guardar la copia. Para este proceso le damos al botn Add . Las opciones que tiene posteriormente es sobrescribir la copia existente, o hacer una nueva. La opcin Schedule es un programador, para realizar las copias cada cierta fecha indicada en el edit. En la pestaa Options detallaremos ahora sus opciones. Su primera casilla es verificar la copia de seguridad una vez completa. La segunda casilla est oculta, y es porque no hay unidades de cinta instaladas. La tercera casilla es que no copie las entradas inactivas o que han sido borradas del transcation log La cuarta casilla es que chequee el nombre y la fecha de expiracin de la copia de seguridad. Su ultima opcin es inicializar y poner una etiqueta a la cinta.
Restauracin de la BD a partir de la copia de seguridad. El proceso de restauracin es el siguiente. En el Enterprise Manager con el botn derecho del ratn, todas las tareas, restore database . Realizada esta accin, aparece la ventana que se muestra aqu.
149
150