UNIVERASIDAD TECNOLOGICA AMERICA UNIDAD DE APOYO IBARRA TRABAJO DE: BASE DE DATOS TEMA: ORACLE y BASE DE DATOS DISTRIBUIDA NOMBRE: Marco Ramos FECHA: 29-05-2010 NIVEL: Undécimo Inf. IBARRA - ECUADOR OBJETIVO: Conocer las características principales del SMBD Oracle, su importancia, ventajas y desventajas, mediante la investigación bibliográfica con el fin de tener un concepto más claro y el alcance que tiene el utilizar este SMBD. FUNDAMENTO TEORICO: 1. Concepto Oracle Es un sistema de gestión de base de daos relacional fabricado por Oracle corporation, es un administrador de datos en base a estructuras. Aplica normas de algebra relacional y utiliza la arquitectura cliente servidor, donde en un lado de la red esa el servidor con los datos, y del otro lado están los clientes que consultan al servidor. 2. Productos Oracle Oracle es una empresa que fabrica diversos productos. Su idea es aportar un producto autosuficiente para el mantenimiento de datos y la creación de aplicaciones basadas en estos. Sus tres productos más importantes son: Oracle DataBase. El DBMS Oracle, junto con las herramientas fundamentales para hacer de servidor y los programas clientes necesarios para conectar clientes. Oracle Application Server. Servidor de aplicaciones para la creación de programas distribuidos. Oracle Developer Suite. Programas para la generación de aplicaciones rápidas basadas en bases de datos Oracle. 2.1. Programación PL/SQL SQL es un lenguaje de comandos, no un lenguaje de programación con todas las estructuras de control típicas, SQL contempla instrucciones simples. Oracle definió un lenguaje de programación de tercera generación, que admite sentencias SQL embebidas, este lenguaje se conoce como PL/SQL (Programming Languaje/SQL). La idea es aplicar las estructuras típicas de un lenguaje de programación (bifurcaciones, bucles, funciones, etc.)a las sentencias SQL típicas. 2.2. Estructura básica en PL/SQL Cuando se escribe código en PL/SQL, esta debe estar agrupada en unidades denominadas “bloques de código”. Un bloque de código puede contener otros sub bucles de código y así sucesivamente, este queda delimitado por las palabras reservadas BEGUIN y END. BEGIN Sentencia… Sentencia… Sentencia… BEGIN Sentencia… Sentencia… Sentencia… END Sentencia… Sentencia… Sentencia… END En el ejemplo se puede observar un bloque externo que contiene un bloque interno. Un bloque de código opcionalmente puede contar con las siguientes secciones: DECLARE Declaración de variables BEGIN Sentencias SQL y PL/SQL EXCEPTION Manejadores de excepciones END; La única sección obligatoria es la que se encuentra dentro de BEGIN y END. 2.3. Comentarios Los comentario pueden ser multi línea /* */ o mono línea – 2.4. Declaración de variables Las variables deben declararse dentro de la sección DECLARE según la sintaxis: Nombre_de_variable {CONSTANT} TIPO {:=inicialización} Los tipos posibles son todos aquellos validos para SQL añadiendo algunos propios de PL/SQL. Ejemplo: Interés NUMBER (5,3); Descripción VARCHAR2 (50):=`inicial´; Fecha_max DATE; Contabilizado BOOLEAN :=TRUE; PI CONSTANT REAL :=3.14159 2.5. Estructura básica de control Bifurcaciones condicionales IF condición_1 THEN Se ejecuta si se cumple condición_1 ELSIF condición_2 THEN Se ejecuta si no se cumple condición_1 y se cumple condición_2 ELSE Se ejecuta si no se cumple condición_1 ni condición_2 END IF; La estructura IF se puede anidar unas dentro de otras como en cualquier lenguaje de programación. Bucles Entre las más conocidas tenemos: LOOP Sentencia END LOOP; Las sentencias dentro de un bucle se ejecutan un número indefinido de vueltas, hasta que aparezca la instrucción EXIT; que finalizara el bucle. Este tipo de bucle se denomina bucle incondicional. También se puede incluir la estructura EXIT WHEN condición, se terminara el bucle cuando la condición se cumpla. LOOP Sentencia EXIT WHEN condición; Sentencias END LOOP; También se puede escribir: LOOP Sentencia IF condición WHEN; EXIT; END IF; Sentencias END LOOP; Bucles condicionales: WHILE condición LOOP Sentencias END LOOP; Y finalmente el bucle FOR: FOR contador IN {REVERSE} limite_inferior.. limite_superior LOOP Sentencias END LOOP; Contador deberá ser una variable de tipo numérico que sea capaz de contener los valores comprendidos entre limite_inferior y limite_superior. limite_inferior y limite_superior deberán ser expresiones numéricas, ya sean constantes (1,10…) o funciones (ROUND (max,0), ASCII(‘A’)…). Si la variable contador no esta definido, PL/SQL definirá una variable de tipo INTEGER al iniciar el bucle y la liberara al finalizar el bucle. Registros y tablas Existen dos tipos de datos que aun no se han mencionado, los registros (estructuras) y las tablas (arrays o vectores). El modo de definir nuevos tipos de variables en PL/SQL es utilizando la palabra reservada TYPE: TYPE nuevo_tipo IS tipo_original. Una vez definido procedemos a definir variables de ese nuevo tipo. Una_variable nuevo_tipo; o Registros Son agrupaciones de tipos de variables que se acceden con el mismo nombre. La sintaxis es: TYPE nombre_registro IS RECORD( Campo1 tipo, Campo2 tipo, Campo3 tipo); EJEMPLO: TYPE alumno IS RECORD ( n_alumno VARCHAR (5), nombre VARCHAR(25), apellido_1 VARCHAR (25), apellido_2 VARCHAR (25)); o Tablas Es una colección de elementos identificados cada uno por un índice, también se denominan arrays. Sintaxis: TYPE nombre_tabla IS TABLE OF tipo_de_elementos; El tamaño de la tabla se define durante la declaración de la variable. Nombre_variable nombre_tabla :=nombre_variable (lista_elementos); EJEMPLO: DECLARE TYPE array_enteros IS TABLE OF INTEGER; Un_array array_enteros :=array_enteros (0,0,0,0); BEGIN .... END; En el ejemplo se define un array de tipo entero y después se declara una variable de ese tipo inicializándola con 4 elementos, todos con cero. Excepciones Esta sección es la encargada de recoger todas las anomalías que se pueden producir dentro del bloque de código. Una excepción es una situación especial dentro de la ejecución de un programa, que puede ser capturado para darle un nuevo comportamiento. Una excepción puede ser un error de ejecución, una división entre cero o cualquier otro tipo de suceso. Las excepciones deben ser declaradas dentro de l sección declare. DECLARE e_sin_alumnos EXCEPTION; Una vez definida, esta debe ser lanzada, ya sea automáticamente por ORACLE o manualmente a través de la instrucción RAISE. Select count (*) Into num_alumnos; If num_alumnos =0 then RAISE e_sin_alumnos; En if; Una vez lanzada la excepción, la ejecución continúa en la sección EXCEPTION, en el manejador apropiado. Una manejador de excepcioneses una sub sección dentro de la sección EXCEPTION que se encarga de capturar una excepción concreta. La sintaxis para escribir manejadores es: EXCEPTION WHEN <excepción> THEN .... WHEN <excepción> THEN .... WHEN OTHERS THEN ..... END; La línea de código debajo del manejador específico se ejecutara cuando esa excepción se produzca. 3. USUARIOS Y PRIVILEGIOS Los usuarios son las personas que acceden de una forma o de otra a la base de datos. Cada usuario tiene una vista determinada de la base de datos. Hay varios conceptos sobre los usuarios a tener en cuenta. Los privilegios Controlan el permiso que posee un usuario de ejecutar una determinada instrucción SQL. Un usuario que quiera crear una tabla, deberá tener el privilegio (o permiso) adecuado para ello. Además se pueden colocar privilegios en los objetos, es decir, un usuario propietario de una tabla puede otorgar privilegios a esa tabla (se trataría de un privilegio a nivel de objeto) para que haya otros usuarios que la puedan usar. Roles Son agrupaciones de privilegios que facilitan la tarea de gestionar a los usuarios. Así cuando una serie de usuarios van a tener los mismos privilegios, se crea un rol que contenga esos privilegios y a esos usuarios se les asigna el rol. Oracle proporciona varios roles ya preparados, por ejemplo el rol DBA da privilegio absoluto a un usuario. 4. BASE DE DATOS DISTRIBUIDA La base de datos distribuida consiste en un almacén de datos, es un conjunto de datos almacenado de manera sistemática siempre dispuesto a ser utilizado. Con la particularidad de que los datos están almacenados en distintas máquinas que integran un sistema y que tienen conexión entre si. Cada uno de los procesadores que integran dicho sistema se conoce con el nombre de localidad o nodo, y por lo tanto la información va a estar distribuida en las distintas localidades y no en una sola localidad, que es lo que ocurre con las bases de datos centralizadas. Cada localidad tiene una base de datos local aunque la información que se necesite puede provenir tanto de la base de datos local como de otras localidades, lo que se conoce como transacciones locales o transacciones globales respectivamente. En cuanto al las formas que pueden conectarse las localidades, las más comunes son: la red totalmente conectada, la red prácticamente conectada, la red con estructura de árbol, la red de estrella o la red de anillo. 4.1. VENTAJAS Debido a que la información está distribuida en localidades, los resultados a las consultas se pueden obtener de manera rápida, ágil y fiable. Asimismo, en caso de que alguna de las localidades falle, como todas tienen autonomía local, el resto sigue trabajando sin que se desactive el sistema, existe autonomía e independencia entre nodos, permite crecimiento, tolerancia a fallas, nuevos nodos se pueden agregar fácil y rápidamente. La comunicación entre nodos se mejora, los costos de cooperación se reducen, son amigables al usuario, la probabilidad de una falla es baja. 4.2. DESVENTAJAS La principal se refiere al control y manejo de los datos, ya que residen en muchos nodos diferentes y se pueden consultar por nodos diversos de la red, la probabilidad de violaciones de seguridad es creciente si no toman las precauciones debidas, seguridad de integridad compleja, complejo control de concurrencia ya que podemos encontrar replicación de información. La instalación de este sistema es mucho más compleja que el de una base de datos centralizada. 4.3. DOCE REGLAS DE LAS BASES DE DATOS DISTRIBUIDAS: Principio fundamental: Para el usuario un sistema distribuido debe ser igual que uno centralizado. • Autonomía Local: Los sitios distribuidos deben ser autónomos, es decir que todas las operaciones en un sitio dado se controlan en ese sitio. • No dependencia de un sitio central: No debe de haber dependencia de un sitio central para obtener un servicio. • Operación Continua: Nunca debería apagarse para que se pueda realizar alguna función, como añadir un nuevo sitio. • Independencia con respecto a la localización: No debe de ser necesario que los usuarios sepan dónde están almacenados físicamente los datos, sino que más el usuario lo debe de ver como si solo existiera un sitio local. • Independencia con respecto a la fragmentación: La fragmentación es deseable por razones de desempeño, los datos, pueden almacenarse en la localidad donde se utilizan con mayor frecuencia de manera que la mayor parte de las operaciones sean sólo locales y se reduzca el tráfico en la red. • Independencia de réplica: Si una relación dada (es decir, un fragmento dado de una relación) se puede presentar en el nivel físico mediante varias copias almacenadas o réplicas, en muchos sitios distintos. • Procesamiento Distribuido de Consultas: El objetivo es convertir transacciones de usuario en instrucciones para manipulación de datos, y así reducir el tráfico en la red implica que el proceso mismo de optimización de consultas debe ser distribuido. • Manejo Distribuido de Transacciones: Tiene dos aspectos principales, el control de recuperación y el control de concurrencia, cada uno de los cuales requiere un tratamiento más amplio en el ambiente distribuido. • Independencia con respecto al equipo: El SGBDD debe ser ejecutable en diferentes plataformas hardware. • Independencia con respecto al Sistema Operativo: El sistema debe ser ejecutable varios diferentes SO. • Independencia con respecto a la red: El sistema debe poder ejecutarse en diferentes redes. • Todos los usuarios accesan a la BDD a través de un esquema global en forma transparente al usuario. Debe ser posible ejecutar diferentes SGBDD locales que utilicen distintos modelos de datos. 4.4. Copias de seguridad Es una de las herramientas fundamentales de toda base de datos. Al hacer la copia de seguridad se nos permite recuperar la información de esa copia. Eso hace que perdamos definitivamente los datos perdidos desde la última copia de seguridad, de ahí la importancia de hacer copia a menudo. Hay una posibilidad de perder menos información y es hacer que la base de datos se ejecute en modo Archivo Log, lo que significa que se almacena en un archivo de datos especial, los datos que se van rechazando en los registros rehacer por estar llenos. Lo malo de esta opción, es que el servidor funciona más lento; lo bueno es que en caso de desastre se pueden recuperar los datos almacenados. Hay dos tipos de copia de seguridad: En frío. La copia se realiza tras cortar la instancia de Oracle. La copia de seguridad almacena todos los datos de la base (incluidos los archivos de control y de rehacer). En caliente. Ya que en muchos casos no se puede parar la instancia tan fácilmente (por estar 24 horas al día funcionando). En ese caso es una indicación la que se hace a la base de datos y la copia se realiza desde el sistema operativo (copiando sin más). Otras posibilidades de copias son: Catálogos de copia de seguridad. Que almacenan información sobre las copias realizadas, fechas, datos, estructura, etc. Copias de seguridad incrementales. Un problema de las copias es que en bases extensas, la copia tarda muchas horas. Cuando la copia termina la información ya está desfasada. Las copias incrementales sólo almacenan los datos que han cambiado recientemente. 5. Características de Oracle Oracle corre en computadoras personales, microcomputadoras, mainframes y computadoras con procesamiento paralelo masivo. Soporta 17 idiomas. Corre automáticamente en más de 80 arquitecturas de hardware y software distintos sin necesidad de cambiar el código. Ofrece una gran variedad de herramientas. 6. CONCLUSIONES Existen muchas bases de datos para cualquier tipo de empresa, Oracle puede ser una base de datos ideal para el desarrollo de aplicaciones con arquitectura cliente servidor. Es compatible casi con todo el hardware existente y utiliza código SQL para la comunicación. 7. BIBLIOGRAFIA Internet: www.monografias.com/trabajos11/basda/basda.shtml Iternet: http://www.programatium.com/oracle.htm Guía de estudio del CD proporcionado por la UNITA. Año 2007