0 calificaciones0% encontró este documento útil (0 votos)
676 vistas78 páginas
Proyecto Final Oracle
Oracle es un RDBMS que se basa en la arquitectura cliente-servidor. Puede instalarse en múltiples plataformas como Windows, Unix y Linux. Requiere la instalación del motor de base de datos Oracle en un servidor, mientras que las aplicaciones pueden ejecutarse localmente o de forma remota a través del servidor. Incluye numerosas herramientas para el desarrollo y administración de bases de datos.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0 calificaciones0% encontró este documento útil (0 votos)
676 vistas78 páginas
Proyecto Final Oracle
Oracle es un RDBMS que se basa en la arquitectura cliente-servidor. Puede instalarse en múltiples plataformas como Windows, Unix y Linux. Requiere la instalación del motor de base de datos Oracle en un servidor, mientras que las aplicaciones pueden ejecutarse localmente o de forma remota a través del servidor. Incluye numerosas herramientas para el desarrollo y administración de bases de datos.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 78
UNIVERSIDAD LA SALLE
Maestra en Tecnologas de informacin
Diseo de Base de Datos. Proyecto Final. RDBMS ORACLE Yolanda Estrada Hernndez Mauricio Casillas 05/07/2014 - 1 - NDICE ORACLE.. .3 DESCRPCN GENERAL DEL RDBMS 3 REQUERMENTOS PARA SU NSTALACN Y PLATAFORMAS EN LAS QUE SE PUEDE NSTALAR .5 ESTRUCTURA DE LA BD (LGCA Y FSCA) 7 ESTRUCTURA DE LA MEMORA 12 MTODOS DE NTEGRDAD, CONCURRENCA, CONSSTENCA Y MANEJO DE TRANSACCONES DE DATOS .. 17 NDZACN..20. MPLEMENTACN DEL DSEO CONCEPTUAL (MODELO ENTDAD - RELACN) 25 .ADMNSTRACN DE LA SEGURDAD DE LA BASE DE DATOS 27 ADMNSTRACN DE OBJETOS.39 UTLERAS DE RDBMS 47 DESCRPCN DE FRONTENDS Y BACKENDS...57 EJEMPLO PRCTCO DE UNA APLCACN63 EXPLCAR SU LENGUAJE DE PROGRAMACN NATVO CON EJEMPLOS PRCTCOS EN EL CASO DE SQL LSTAR SUS EXTENSONES Y AGREGADOS65 BBLOGRAFA..78 Tecnologa olap ORACLE - 2 - Oracle surge a finales de los 70 bajo el nombre de Relational Software a partir de un estudio sobre SGBD (Sistemas Gestores de Base De datos) de George Koch. Computer World defini este estudio como uno de los ms completos jams escritos sobre bases de datos. Este artculo inclua una comparativa de productos que eriga a Relational Software como el ms completo desde el punto de vista tcnico. Esto se deba a que usaba la filosofa de las bases de datos relacionales, algo que por aquella poca era todava desconocido. Oracle es un sistema de administracin de base de datos (o RDBMS por el acrnimo en ingls de Relational Data Base Management System), fabricado por Oracle Corporation. Se considera a Oracle como uno de los sistemas de bases de datos ms completos, destacando su: Soporte de transacciones. Estabilidad. Escalabilidad. Es multiplataforma. Su mayor defecto es su enorme precio, que es de varios miles de euros (segn versiones y licencias). Otro aspecto que ha sido criticado por algunos especialistas es la seguridad de la plataforma, y las polticas de suministro de parches de seguridad, modificadas a comienzos de 2005 y que incrementan el nivel de exposicin de los usuarios. En los parches de actualizacin provistos durante el primer semestre de 2005 fueron corregidas 22 vulnerabilidades pblicamente conocidas, algunas de ellas con una antigedad de ms de 2 aos. Aunque su dominio en el mercado de servidores empresariales ha sido casi total hasta hace poco, recientemente sufre la competencia del Microsoft SQL Server de Microsoft y de la oferta de otros RDBMS con licencia libre como PostgreSQL, MySql o Firebird. Las ltimas versiones de Oracle han sido certificadas para poder trabajar bajo Linux. 1. DESCRPCN GENERAL DEL RDBMS ORACLE es un RDBMS (Sistema de Gestin de Bases de Datos Relacionales), y se basa en la tecnologa cliente/servidor, para su utilizacin primero sera necesario la instalacin de la herramienta servidor (Oracle 8i) y posteriormente podramos atacar a la base de datos desde otros equipos con herramientas de desarrollo como Oracle Designer y Oracle Developer, que son las herramientas bsicas de programacin sobre Oracle. Para desarrollar en Oracle adems del lenguaje SQL utilizamos el llamado PL/SQL un lenguaje de 5 generacin, bastante potente para tratar y gestionar la base de datos, tambin por norma general se suele utilizar SQL al crear un formulario. PL/SQL, que es propio de ORACLE prcticamente, en cualquier herramienta ORACLE donde se pueda usar SQL podemos tambin utilizar PL/SQL. - 3 - Todas las aplicaciones ORACLE se ejecutan contra el motor ORACLE que interacta directamente con la base de datos, y que debe estar activo en todo momento. El acceso a la base de datos est controlado por nombre de usuario y clave (normalmente distintos de los del sistema operativo). Las aplicaciones ORACLE se pueden ejecutar en el mismo servidor donde est instalada la base de datos y corre el motor ORACLE o en otro, conectado con el anterior, y que puede tener un sistema operativo distinto; por ejemplo, un PC (modo cliente/servidor). Algunas de las aplicaciones pueden funcionar sobre X-Window. Utilizacin La utilizacin de las aplicaciones en modo cliente/servidor o en modo normal no vara apenas. La nica diferencia es que en modo normal hay que conectarse al servidor lucano (con rlogin, rsh o telnet). Si adems se van a ejecutar aplicaciones X-Window (OPEN LOOK o MOTF) en modo normal, una vez conectado a lucano habr que hacer: % setenv DSPLAY servidor:0 (C-Shell) donde "servidor" es el nombre de la computadora del usuario. Antes que nada, hay que cargar una serie de variables. Esto se hace de la siguiente manera (hay que estar en la C-Shell): % source /usr/app/oracle/oravar (Est pendiente hacer una versin para Bourne-Shell). Dentro de oravar se comprueba si la computadora del usuario es lucano. Si no lo es, se activa el modo cliente/servidor. Tras esto, y suponiendo que el motor ORACLE est funcionando en el servidor lucano, ya se pueden ejecutar directamente las aplicaciones. Para comprobar si en el servidor lucano est activo el motor ORACLE, debe teclear lo siguiente: % ps -aux | grep ora Deben aparecer cuatro procesos con nombres ora_????_orac y el proceso orasrv, que permite la ejecucin en modo cliente/servidor. Tal y como se ha explicado aqu, para la ejecucin en modo cliente/servidor el servidor de usuario debe ser algn tipo de SUN 4. ORACLE incluye una gran cantidad de herramientas de programacin y desarrollo de aplicaciones Requerimientos El motor de ORACLE y la base de datos reside en el servidor, pero las aplicaciones pueden ejecutarse en ese servidor o en otra computadora, en modo cliente/servidor. Documentacin ORACLE RDBMS Utilities User Guide. CASE Designer User's Guide and Tutorial. PL/SQL User's Guide and Reference. SQL*Menu User's Guide and Reference. - 4 - SQL*ReporWriter Reference Manual. SQL Language and Reference. SQL*Plus User's Guide and Reference. SQL*Forms Designer's Reference. SQL*Forms Designer's Tutorial. PRO*C Supplement to the ORACLE Precompilers Guide. 2. REQUERMENTOS PARA SU NSTALACN Y PLATAFORMAS EN LAS QUE SE PUEDE NSTALAR Oracle posee igual interaccin en todas las plataformas (Windows, Unix, Macintosh y Mainframes). Esto porque ms del 80% de los cdigos internos de Oracle son iguales a los establecidos en todas las plataformas de Sistemas Operativos. Oracle soporta bases de datos de todos los tamaos, desde severas cantidades de bytes y gigabytes en tamao. Oracle provee salvar con seguridad de error lo visto en el monitor y la informacin de acceso y uso. Oracle soporta un verdadero ambiente cliente servidor. Este establece un proceso entre bases de datos del servidor y el cliente para la aplicacin de programas. Una ventaja importante de tecnologa del ORACLE sigue siendo su disponibilidad incomparable por el rango ms ancho de plataformas y sistemas operativos. ORACLE tiene una arquitectura integrada. La misma tecnologa de ORACLE que corre en PCs, corre inalterado en el SMPs ms avanzado y MPPs. ORACLE 7 es soportado en PCs como en los sistemas masivos en paralelo, clusters y mainframes. Oracle 7 est disponible en ms de 140 plataformas diferentes. El underlying de Oracle7 se adapta fcilmente a la arquitectura de las nuevas plataformas del hardware y sistemas operativos Oracle sobre Linux. La Base de Datos (BD) Oracle 9i ver. 2, pretende ofrecer a los desarrolladores de Linux no solo una plataforma de bajo costo, sino tambin una arquitectura de cdigo abierto que puede ofrecer control sobre el performance, viabilidad y manejabilidad en el desarrollo en misiones criticas en el ambiente de la empresa. La versin Oracle 9i ver. 2 est disponible hoy en da en la liga de Oracle with Linux. Orale 9i Server corre aplicaciones J2EE y servicios Web sobre Red Hat y SuSe de Linux, lo cual activa un gran performance a la BD por el uso de J2EE en servicios Web desarrollado para Linux. - 5 - Oracle provee soporte tcnico para Red Hat Linux Advanced Server Oracle, trabajando con Red Hat cerrado provee de soporte tcnico directo para el software, incluyendo el sistema operativo. Los clientes de Oracle pueden observar la pronta respuesta y la resolucin a casos crticos. La liga a FAQ es una estrategia de soporte de linux, el mtodo es leer mientras que millones de desarrolladores estn desarrollando con Oracle sobre Linux. Con el kernel de Red Hat Advanced Server, el shortcomings de la arquitectura de la memoria virtual de linux ha sido direccionada y el resultado es que Oracle y Linux ofrecen una combinacin de gran performance y una plataforma altamente segura. La comparacin funcional en la administracin de volmenes lgicos de Linux y el software metadisk de linux RAD para su uso con Oracle 9i en una aplicacin real de clusters es viable y aplicable para aplicaciones en ambientes crticos. Existe ya una lista completa de productos certificados sobre las distribuciones populares de Linux, esa lista puede ser revisada en http://metalink.oracle.com La introduccin de la BD Oracle revoluciona la economa mundial en Tecnologas de nformacin, hay aplicaciones reales con una nueva arquitectura de compartir memoria cache que sobrepasas las limitaciones tradicionales de compartir memoria en sistemas de bases de datos. Existen barios tpicos para el uso de la BD Oracle sobre la plataforma Linux, aunado a su respectiva documentacin: iDevelop Online Training - Getting Started with Oracle9i Learn about the Oracle9i products Oracle9i Database Oracle9iAS Application Server See how Oracle9i supports application development Oracle9i JDeveloper Application Development on Oracle9i Oracle9i Development Platform: Java Oracle9i Development Platform: XML Business Components for Java Oracle9iAS Best Practices white papers recomienda las mejores prcticas para Areas que utilizan Oracle 9i, lo cual incluye seguridad, performance y escalabilidad, globalizacin y aplicaciones de Java. La evolucin de las BD en E-Business: A los desarrolladores de Oracle que regresan a la BD Oracle 9i se les hace mucho ms fcil su administracin y realizan ingenieras mas robustas de e-business. Oracle 10g - 6 - La versin 10 g plantea un nuevo concepto, Grid computing, que consiste en utilizar la mayor cantidad de infraestructura disponible que tiene la empresa. "La "g" del nombre, hace referencia a Grid, un concepto acadmico de larga data, que supone que varios recursos (especialmente computadoras) puedan ser utilizados como un todo, como uno slo. Ya sea para dar servicios de base de datos o servidores de aplicaciones y se puede administrar como uno slo tambin. Es decir, son varias computadoras agrupadas como si fueran una, por lo que se suma la memoria de cada una de ellas y la potencia de procesamiento de CPU. As, son vistas por el consumidor como si fueran la potencia y memoria de una nica computadora, no individualizando cada uno de los servidores como entidades nstalacion de Oracle 10g Release 1 (10.1), Mac OS X Server para la versin 10.3.6 (Panther), las libreras de ese entonces utilizaban gcc versin 3.3 mientras que la versin 10.4 (Tiger) utiliza libreras gcc con la versin 4.0. Esta particularidad es la causante de una instalacin errnea cuando se corre v10.4 o superior de Mac OS X Server. Por otro lado, Oracle ha certificado el Release 1 (10.1) nicamente para la versin Server del Mac OS X, sin embargo, siguiendo el mismo procedimiento descrito se ha podido instalar satisfactoriamente en un Mac OS X v10.4.3, es decir no-Server. Los requerimientos de hardware son los que simultneamente se piden para el Sistema Operativo como para la Base de Datos; para efectos ilustrativos se puntualiza que se ha podido instalar en un iMac G5, en un PowerBook G4, en un Macintosh Server G4 y en un Xserve G5. En cuanto al software, como mnimo se necesita la versin 10.4 (Tiger) Server, salvando lo descrito en el prrafo anterior para las versiones no-Server. 3. ESTRUCTURA DE LA BD (LGCA Y FSCA) Niveles de Almacenamiento La BD Oracle est constituida a nivel 1. fsico: de archivos (al menos 1) 2. lgico: de tablespaces (al menos 1) El tablespace SYSTEM se crea automticamente al hacer la instalacin de Oracle, o al crear una BD. Este Tablespace contiene el diccionario de datos. Tablespaces Unidad de accesibilidad a los datos. Uno o ms tablespaces por BD. Uno o ms archivos por tablespace. Puede quedarse offline debido a un fallo de disco, permitiendo que el SGBD contine funcionando. Pueden estar montados sobre dispositivos pticos si son tablespaces de slo lectura. - 7 - Permiten distribuir a nivel lgico/fsico los distintos objetos de las aplicaciones. Son una unidad lgica de almacenamiento, pueden usarse para aislar completamente los datos de diferentes aplicaciones. Oracle permite realizar operaciones de backup/recovery a nivel de tablespace mientras la BD sigue funcionando. Creacin de un nuevo Tablespace Creacin: Oracle se reserva una cantidad de espacio en disco para su manejo, la utilice o no. svrmgr>create tablespace tbs1 datafile 'nombre_archivo.dbf' size 10m default storage (initial 50k next 25k pctincrease 0) online; Modificacin: aadiendo otro archivo. svrmgr>alter tablespace tbs1 add datafile 'otro_archivo.dbf' size 10m; Crecimiento Automtico de Archivos Usando las posibilidades del Sistema Operativo, Oracle puede gestionar el crecimiento dinmico de los archivos de los tablespaces. Elimina la posibilidad de error en las aplicaciones por fallos de dimensionamiento. Solo disponible para archivos montados sobre sistemas de archivos gestionados por el SO. Problema: la no utilizacin del espacio reservado para un tablespace. Se puede solucionar mediante el proceso export/import o de manera transparente svrmgr>alter database datafile 'archivo.dbf' resize 150m; ntroduccin a los Segmentos Todos los datos de la BD estn almacenados en Segmentos. Existen 5 tipos de segmentos: de datos. de ndices. de rollback. temporales. de bootstrap. Se pueden almacenar ms de un segmento por tablespace. Un segmento est contenido en su totalidad en un tablespace. - 8 - Un segmento es un conjunto de extensiones de bloques Oracle que pueden estar en varios archivos de un tablespace. Cuando se borra un segmento, el espacio es devuelto al tablespace. Oracle guarda una lista de bloques libres por segmento. El primer bloque asignado a un segmento contiene la cabecera del segmento donde se almacena informacin de control para el kernel Oracle. Cada segmento tiene un conjunto de parmetros de almacenamiento que controla su crecimiento: initial: tamao de la extensin inicial (10k). next: tamao de la siguiente extensin a asignar (10k). minextents: nmero de extensiones asignadas en el momento de la creacin del segmento (1). maxextents: nmero mximo de extensiones (99). pctincrease: Porcentaje en el que crecer la siguiente extensin antes de que se asigne, en relacin con la ltima extensin utilizada (50). pctfree: porcentaje de espacio libre para actualizaciones de filas que se reserva dentro de cada bloque asignado al segmento (10). pctused: porcentaje de utilizacin del bloque por debajo del cual Oracle considera que un bloque puede ser utilizado para insertar filas nuevas en l. tablespace: nombre del tablespace donde se crear el segmento. Segmentos de Datos Tablas Las filas pueden extenderse en ms de un bloque (filas encadenadas). create table t1 (...) tablespace tbs1; soportan los siguientes tipos de datos: char: cadenas de caracteres de longitud fija (<255). varchar2: cadenas de caracteres de longitud variable (<2000) number: enteros y reales de hasta 38 dgitos. date: fecha y hora. long: cadena de caracteres de longitud variable (<2Gb). raw: versin binaria de varchar2. long raw: versin binaria de long (datos multimedia). rowid: dato interno (7 bytes) para direccionar filas. Segmentos de ndices Acceso rpido a los datos dependiendo de la cantidad de los mismos (rboles B) . Las consultas que slo referencian a columnas indexadas se resuelven en el ndice. Control de unicidad (automticos con clave primaria). - 9 - Cada ndice ocupa un segmento independiente del segmento de datos. Deberan estar en tablespace distinto al de los datos, para mejorar el rendimiento. Segmentos de oll!ac" Son objetos internos de la BD. Permiten efectuar la restauracin de las transacciones no validadas. Aseguran la consistencia en lectura. Estructura de los registros: dentificador de la transaccin. Direccin del bloque. Nmero de fila. Nmero de columna. Valor del dato antiguo (antes de ser modificado). Una BD no puede arrancar si no puede acceder al menos a un segmento de rollback. Si la BD tiene mltiples tablespaces, deben existir al menos dos segmentos de rollback. Cada segmento de rollback debe tener al menos dos extensiones, reutilizables de manera cclica. Los segmentos de rollback son un objeto compartido de la BD, aunque se puede asignar un segmento de rollback particular a una transaccin dada. Segmentos Tem#orales Creados por Oracle para un uso temporal cuando debe realizar una ordenacin que no le cabe en memoria, en las operaciones: create index, order by, group by, distinct, union, intersect, minus. Son eliminados cuando la sentencia finaliza. Segmentos de $ootstra# Se crea en SYSTEM. Contiene definiciones del Diccionario para sus tablas, que se cargan al abrir la BD. No requiere ninguna accin por parte del DBA. No cambia de tamao. - 10 - %omando Tr&ncate Permite borrar todas las filas de una tabla sin borrar la estructura del objeto. No requiere proceso de rollback ni redolog. Los ndices son tambin truncados. %omando 'nali(e Permite recoger estadsticas sobre tablas, ndices y otros objetos de la BD que luego utilizar el optimizador. Almacena estadsticas en el Diccionario. Debe ser ejecutado peridicamente por el dba. Se pueden analizar todos los objetos de un usuario dado. - 11 - 4. ESTRUCTURA DE LA MEMORA Estructuras internas de memoria La base de datos Oracle utiliza dos tipos distintos de estructuras de memoria: Areas globales y Areas de proceso. Area Global de Sistema Se iniciar sta seccin ejemplificndolo con la lectura de un libro: Una vez ledo un captulo Cul sera la forma ms rpida de pasar esa informacin a otra persona?, se podra hacer que dicha persona leyera tambin ese capitulo, pero sera mas rpido si se pudiera conservar la informacin en la memoria y pasar despus la informacin de la memoria a la segunda persona. El Area Global de Sistema (System Global Area: SGA) de una base de datos Oracle sirve para lo mismo (facilita la transferencia de informacin entre usuarios). Tambin mantiene la informacin estructural ms consultada sobre la base de datos. Tamao del SGA SHARED_POOL_SZE: tamao en bytes del rea dedicada a sentencias SQL y PL/SQL. DB_BLOCK_SZE: tamao en bytes del bloque Oracle. DB_BLOCK_BUFFER: el nmero de buffers, cada uno del tamao de DB_BLOCK_SZE, reservados para la SGA. El tamao total de espacio "alocado para el "database buffers cach en la SGA es el producto de DB_BLOCK_SZE por DB_BLOCK_BUFFERS. LOG_BUFFERS: El nmero de bytes reservados para los Redo Log Buffers. La estructura del SGA es: )os !&fers del !lo*&e de datos Los bufers del bloque de datos (data block buffers) son un cach del SGA que se utiliza para contener los bloques de datos que se leen de los segmentos de datos de la base de datos, tales como tablas, ndices y grupos. El tamao del cach del bufer del bloque de datos viene determinado por el parmetro DB_BLOCK_BUFFERS del archivo N.ORA de dicho servidor de base de datos. - 12 - Buffers del Bufers del Cach Almacn Bloque registro del SQL De datos de rehacer diccionario compartido La gestin del tamao del cach del bufer del bloque de datos juega un importante papel en la gestin y ajuste de la base de datos. Como ste tamao es fijo, y suele ser inferior al espacio utilizado por los segmentos de la base de datos, no se pueden conservar todos los segmentos de la base de datos en memoria simultneamente. Oracle gestiona el espacio disponible mediante un algoritmo de menos utilizado recientemente (LRU: Least Recently Used). Cuando se necesita espacio libre en el cache, se escriben al disco los bloques menos utilizados recientemente, siendo sustituidos por nuevos bloques de datos. De esta forma en la memoria se conservan los datos utilizados con mas frecuencia. No obstante si el SGA no es lo suficientemente grande, distintos objetos competirn por el espacio del cach del bufer del bloque de datos. Esto es particularmente probable cuando varias aplicaciones comparten el mismo SGA. En dicho caso los segmentos ms utilizados recientemente de cada aplicacin compiten constantemente por el espacio del SGA con los segmentos ms utilizados recientemente de otras aplicaciones. Como consecuencia de ello, las solicitudes de datos del cach del bufer del bloque de datos tendrn una baja relacin de aciertos a fallos. %ach+ del diccionario La informacin sobre los objetos de la base de datos se almacena en las tablas del diccionario de datos. En sta informacin se incluyen los datos de las cuentas de usuario, los nombres de los archivos de dato, los nombres de los segmentos, la ubicacin de las extensiones, las descripciones de las tablas y los privilegios. Cuando la base de datos necesita sta informacin (por ejemplo para comprobar la autorizacin de un usuario para consultar una tabla), se leen las tablas de diccionario de datos y los datos devueltos se almacenan en el SGA, en el cach del diccionario (dictionary cach). Este cach tambin se gestiona mediante un algoritmo LRU, el tamao se establece mediante el parmetro SHARED_POOL_SZE del archivo NT.ORA de la base de datos. Si el cach del diccionario es demasiado pequeo, la base de datos tendr que consultar reiteradamente la informacin que necesita en las tablas del diccionario de datos. Estas consultas se llaman aciertos recursivos, y se resuelven mas lentamente que las consultas que pueden manejarse solo mediante el cach del diccionario de sta memoria. $&fer del registro de rehacer En las entradas de rehacer se describen los cambios realizados en la base de datos. Se escriben en los archivos de registro de rehacer en lnea de forma que pueden utilizarse en las operaciones de reconstruccin durante la operacin de la base de datos. No obstante, antes de escribirse en los archivos de registro de rehacer en lnea, se almacenan primero en el SGA, en un rea llamada bufer de - 13 - registro de rehacer (redo log buffer). La base de datos escribe despus de forma peridica series de entradas de rehacer los archivos de registro de rehacer en lnea, optimizando as sta operacin. El tamao en bytes de los bufers de registro de rehacer se define mediante el parmetro LOG_BUFFER del archivo N.ORA. ,ondo com-n S.) com#artido En el cach del diccionario se almacena un rea denominada fondo comn del SQL compartido (shared SQL pool). En sta rea de memoria tambin se incluye informacin sobre sentencias ejecutadas sobre la base de datos. As, mientras que el bufer del bloque de datos y el cach del diccionario permiten la comparticin de informacin estructural y de los datos entre los usuarios, el modo comn SQL compartido permite compartir las sentencias SQL mas utilizadas El fondo comn SQL compartido contiene le plan de ejecucin y el rbol de anlisis de las sentencias SQL que se ejecutan sobre la base de datos. La segunda vez que cualquier usuario ejecuta una sentencia SQL idntica, puede aprovecharse la informacin de anlisis disponible en el fondo comn SQL compartido para acelerar la ejecucin. Area Global del Programa El rea global del programa (PGA) es un rea de la memoria utilizada por un nico proceso de usuario de Oracle. En las ltimas versiones de Oracle parte del PGA puede almacenarse en el SGA. Esto ocurre cuando se utiliza el servidor multiproceso (multi-threaded). La arquitectura multiproceso del servidor permite que varios procesos de usuario utilicen el mismo proceso del servidor, reduciendo as los requisitos de memoria de la base de datos. Si se utiliza sta opcin, la informacin sobre la sesin del usuario se almacena en el SGA en lugar de en el PGA. Las relaciones entre las estructuras fsicas y de la memoria de la base de datos se mantienen y aplican mediante estructuras de proceso, que son los procesos de fondo propios de la base de datos, y cuyo nmero vara en funcin de la configuracin de la base de datos. Estos procesos los gestiona la base de datos y apenas necesita trabajo administrativo. Memoria de la nstancia La instancia la componen Procesos (programas ejecutables con interfaz o servicios) y recursos (estructuras de memoria RAM, buffers, datos). El mensaje devuelto por show SGA muestra el tamao total de la memoria compartida SGA. SVRMGR> show sga Total System Global Area 15077376 bytes - 14 - Fixed Size 49152 bytes Variable Size 12906496 bytes Database Buffers 2048000 bytes Redo Buffers 73728 bytes Estructuras de Memoria SGA System Global Area 49Kb rea Fija. nformacin adicional sobre procesos Contiene informacin sobre: Usuarios conectados Bloqueos Nmero mximo de bloqueos para DDL y DML Colas de Entrada/Salida. Nmero de db_links permitidos 12Mb rea de memoria compartida. Shared Pool. rea Variable. (Shared SQL Area). Se dimensiona con el parmetro shared_pool_size en init<sid>.ora, por ejemplo shared_pool_size = 11534336 Contiene: Sentencias SQL preanalizadas (parsed) Procedimientos, libreras Diccionario de datos rea compartida para sentencias SQL Cach del diccionario (Dictionary Cach o Row Cach) 2 Mb Cach de datos (buffer cach) Buffers de BD. Database Buffers Contiene los datos y bloques de rollback en uso. Se dimensiona con el parmetro db_block_buffers en init<sid>.ora, por ejemplo db_block_buffers = 1000 73 Kb Cach de redo logs (Redo log buffers) Contiene los datos que son modificados para pasarlos a archivos histricos y mantener un histrico capaz de reconstruir la BD en caso de fallo PGA Cursores (reas privadas para sentencias SQL) Pila de variables reas de ordenacin reas de ordenacin de sentencias. Sort Area Ejecutables - 15 - de Oracle Procesos e la Instancia Procesos Background Estndar DBWR. DataBase Writer Escribe en los archivos de la BD los buffers de datos modificados en memoria LGWR. LoG Writer. Escribe en los archivos histricos de la BD (redo log files) cuando los redo log buffers se han llenado o cuando se produce un commit. Esto permite el recovery. SMON. System MONitor. Trata las recuperaciones en caso de fallo. Limpia los segmentos temporales cuando no estn en uso. Realiza el Coalesce de tablespaces, uniendo en una sola extensin extensiones contiguas. PMON. Process MONitor. Recuperaciones en caso de fallo de un usuario. Libera recursos inactivos. En configuraciones Multi-Threaded Server restablece los procesos dispatcher y servidores cados. Puntos de Ruptura CKPT Proceso de Apoyo al LGWR. Actualiza archivos de control y las cabeceras de archivos de datos agilizando puntos de ruptura. Este proceso se activa si indicamos en init<sid>.ora la linea checkpoin_process=true Multithread Server D000 Dnnn Procesos encargados de distribuir las peticiones de usuarios de sentencias SQL entre los procesos compartidos. S000 Snnn Procesos Compartidos que resuelven sentencias SQL Parallel Server LCKn Procesos de sincronizacin de instancias. LMON Soluciona problemas de procesos muertos o colgados en Parallel Server. Parallel Query P000 Pnnn Ejecucin de sentencias de forma paralela distribuyendo la carga entre distintas CPU. Modo Archiver (archive log) ARCH Proceso encargado de copiar los histricos (redo log files) en archivos aparte (archiver files) antes de que sean sobreescritos. Opcin Distribuida RECO Proceso encargado del tratamiento de fallos y recuperaciones producidos en transacciones distribuidas debidos a fallos de la red o de la instancia. SNP0 SNPn Procesos para el mantenimiento y refresco de snapshots en BD distribuidas. - 16 - 5. MTODOS DE NTEGRDAD, CONCURRENCA, CONSSTENCA Y MANEJO DE TRANSACCONES DE DATOS El servidor Oracle tambin se encarga de la integridad de los datos. Si se produce cualquier tipo de fallo mientras un usuario est cambiando los datos en una base de datos, sta tiene la capacidad de deshacer o cancelar cualquier transaccin sospechosa. Con Oracle Server, nunca albergamos dudas en lo referente al estado de una determinada transaccin. El servidor incluye tambin un bloqueo completo por filas de todos los datos almacenados. Por ejemplo, si estuviramos trabajando en una aplicacin de compra de acciones de bolsa, construida sobre Oracle, y dos usuarios desearan comprar el lote nmero 5, formado por 100 acciones de la empresa Database Technologies, la base de datos impedira que dicha accin tuviera lugar. Puesto que slo hay un nico lote, la base de datos slo permitira a uno de los usuarios acceder al procedimiento de compra, y el otro usuario se vera obligado a esperar. Cuando el segundo usuario recibiera finalmente la autorizacin para continuar, se encontrara con que el lote ha pasado al estado de vendido. Oracle Server gestiona de modo transparente estas situaciones, manteniendo la integridad de los datos. Las restricciones de la integridad hacen cumplir las reglas de las actividades en el nivel de la base de datos definiendo un conjunto de controles para las tablas el sistema de usuario. Estos controles se hacen cumplir automticamente siempre que se emite una instruccin de insertar, actualizar o eliminar sobre la tabla. Si se viola cualquiera de las restricciones, se produce la anulacin de la instruccin. Las dems instrucciones dentro de la transaccin permanecen en un estado pendiente y pueden ser confirmadas o se pueden anular de acuerdo con la lgica de la aplicacin. Debido a que las restricciones de la integridad son controladas en el nivel de la base de datos, son realizadas con independencia de donde se haya originado la instruccin de insertar, actualizar o eliminar, ya sea una herramienta Oracle o no. Definir controles que utilicen estas restricciones es tambin ms rpido que realizar los mismos controles usando SQL. Adems, la informacin proporcionada al declarar restricciones es utilizada por el optimizador de Oracle para tomar decisiones mejores sobre la forma de ejecutar una instruccin sobre la tabla. El producto Oracle Forms puede utilizar tambin restricciones para generar cdigo automticamente en los programas front-end para proporcionar al usuario un aviso temprano ante cualquier error. Los tipos de restricciones de integridad que se pueden establecer en una tabla son NOT NULL (no permitir valores nulos), PRMARY KEY (clave primaria), UNQUE (valor nico), FOREGN KEY (clave externa), CHECK(comprobar que se cumplen una serie de condiciones) y los ndices. Integria e atos Para garantizar la integridad de datos se deben modelar los datos. Se debe garantizar mediante el diseo de la base de datos que los datos son conformes a las restricciones de integridad definidas para ellos - 17 - Integria e o!inios Se aplica como reglas que definen los Valores vlidos de los datos, tales como el tipo de dato Integria e transiciones Se define como los estados vlidos por los que puede pasar vlidamente un dato E"e!plo: /dad Tipo: Numrico Vlido : 30 nvlido : 180 Integria e entiaes La existencia de una clave principal es una restriccin de entidad que impone la regla "%ada entidad de!e estar identificada de forma -nica0 Integria Re#erencial "Las claves externas no pueden quedar hurfanas - 18 - Personalizacin $ dentro de los tres niveles de abstraccin se refiere al de las vistas, que es la encargada de que los usuarios tengan acceso a solo una parte de la base de datos, que es la que les corresponde, para que los puedan manipular. Manejo de Transacciones $ se aplica el requisito de todo o nada, es decir la atomicidad, que hace que las operaciones no se realicen por partes, y de esta manera se pueden evitar fallos en las mismas. Pueden ocurrir cuando se va la energa o se cae el sistema, y las transacciones quedan a la mitad de un proceso. Control de Concurrencia $ controla la interaccin entre las transacciones concurrentes para asegurar la consistencia de la base de datos. Este error puede ocurrir cuando ms de dos personas quieren accesar o manipular el mismo dato en la base de datos. Seguridad $ No todos los usuarios de un sistema de base de datos deberan poder acceder a todos los datos. Es aqu donde se determinan los "privilegios" que tendr cada usuario con respecto a la base de datos, dichos privilegios corresponden tambin a las ligaduras de integridad que el administrador de la base de datos controlar. La seguridad se puede manejar en conjunto con la personalizacin e integracin de la base de datos. Recuperacin de la nformacin $ Nos permite recuperar los datos en caso de que haya un error en el manejo de la base de datos; es decir, nos ayuda a que no se pierdan los datos de manera definitiva. nteraccin con el Sistema de Archivos: Manipulado por el gestor de archivos que permite que los datos queden guardados en un espacio en el disco duro o en algn lugar predeterminado para su almacenamiento. Las funciones del DBA incluyen las siguientes: Definicin del Esquema: El DBA crea el esquema original de la base de datos escribiendo un conjunto de definiciones que el compilador de DDL traduce a un conjunto de tablas que son almacenadas permanentemente en el diccionario de datos. Estructura de almacenamiento y definicin del mtodo de acceso: Los DBA crean estructuras de almacenamiento apropiadas y los mtodos de acceso escribiendo un conjunto de definiciones, que son traducidas por el compilador del lenguaje de definicin y almacenamiento de datos. Esquema y modificacin de la organizacin fsica: Los programadores llevan a cabo las relativamente escasas modificaciones sobre el esquema de base de datos o la descripcin de la organizacin de almacenamiento fsico escribiendo un conjunto de definiciones que son usadas por el compilador del DDL o por el compilador de lenguaje de definicin y almacenamiento de datos para generar las modificaciones en las tablas correspondientes del sistema interno. Concesin de la autorizacin para el acceso a los datos: La concesin de diferentes tipos de autorizacin permite al administrador de la base de datos determinar a qu partes de la base de datos pueden accesar los diferentes usuarios. La informacin se mantiene en una estructura del sistema especial que el sistema de base de datos consulta cuando se intenta el acceso a los datos de sistema. Especificacin de las ligas de integridad: Los valores de los datos almacenados en la base de datos deben satisfacer ciertas ligas de integridad. Tales ligas deben ser especificadas por el DBA; dichas ligas se refieren a la validacin de los datos. - 19 - 6. NDZACN Un ndice es una estructura de memoria secundaria que permite el acceso directo a las filas de una tabla (est o no agrupada). El ndice es un instrumento que aumenta la velocidad de respuesta de la consulta, mejorando su rendimiento y optimizando su resultado. El manejo de los ndices en 1'%)/ se realiza de forma inteligente, donde el programador slo crea los ndices sin tener que especificar, explcitamente, cul es el ndice que va a usar. Es el propio sistema, al analizar la condicin de la consulta, quien decide qu ndice se necesita. ORACLE provee cinco tipos de ndices: ndices basados en B*-trees para tablas no agrupadas. ndices basados en B*-trees para tablas agrupadas. ndices basados en Hashing para tablas agrupadas. ndices Bitmap. ndice basados en B*-Trees para tablas organizadas por ndices. En tablas que no estn organizadas por ndice, los ndices son independientes de la estructura fsica de la tabla (o tablas agrupadas) y por lo tanto poseen requerimientos de espacio adicionales a los de la tabla sobre los que se encuentran definidos. La finalidad principal de un ndice es la definir un camino de acceso a los datos que garantice una mejora en el rendimiento de las operaciones de bsqueda. ORACLE efecta de manera automtica el mantenimiento de la consistencia de los ndices asociados a una tabla cada vez que se insertan y eliminan filas o se modifican valores de las columnas sobre las que se define un ndice. Si bien es cierto que los ndices aceleran las operaciones de consulta, tambin debe tomarse en cuenta que el mantenimiento de un ndice tiene efecto sobre el rendimiento de las operaciones de eliminacin, insercin y actualizacin ya que es doble el trabajo de manipulacin de bloques de datos (debe almacenarse informacin en los bloques de datos de una tabla y de los diferentes ndices sobre ella definidos). Los ndices pueden definirse sobre una o mltiples columnas de una tabla (o "cluster). Sin embargo ORACLE impone dos restricciones: El nmero mximo de columnas para ndices basados en B*-Tree es de 32 columnas, mientras que para ndices bitmap es de 30 columnas. El espacio requerido para almacenar una clave no puede exceder la mitad del espacio disponible para almacenar datos en un bloque ORACLE (recordemos que era tamao de bloque menos el espacio libre para actualizaciones menos el "overhead para informacin de control del bloque de datos). ORACLE permite la creacin de ndices que permitan albergar, para un mismo valor de la clave, una fila o varias filas. Los ndices UNQUE garantizan que en una tabla (o "cluster) no puedan existir dos filas con el mismo valor. Por defecto (si no se especifica lo contrario) al crear un ndice ser considerado como de claves repetidas. Es importante destacar que ORACLE slo genera en forma automtica los siguientes ndices cuando se crea una tabla: Un ndice UNQUE basado en B*-tree para mantener las columnas que se hayan definido como clave primaria de una tabla utilizando el constraint PRMARY KEY de una tabla no organizada por ndice. - 20 - Un ndice UNQUE basado en B*-tree para mantener la restriccin de unicidad de cada grupo de columnas que se haya declarado como nico utilizando el constraint UNQUE. Un ndice basado en B*-tree para mantener las columnas que se hayan definido como clave primaria y todas las filas de una tabla organizada por ndice. Un ndice basado en hashing para mantener las filas de un grupo de tablas ("cluster) organizado por hash. A estos ndices (aquellos generados automticamente) se les denominar ndices Primarios. El administrador de la base de datos podr crear otros ndices de acuerdo con el estudio de rendimiento de las aplicaciones y de la base de datos. A estos ndices creados especficamente para resolver problemas particulares de degradacin de rendimiento se les denominar ndices Secundarios. Una ltima variacin permitida por ORACLE en los ndices basados en B*-tree para tablas no agrupadas es el manejo de ndices de claves invertidas. En un ndice de claves invertidas el orden mantenido dentro de la estructura de rbol viene dado por el resultado de invertir el valor de cada columna que forma parte del ndice. Esta poltica busca resolver el problema de degradacin del rendimiento que ocurre cuando: Se presentan inserciones en las que el orden de la insercin de filas es exactamente igual al orden parcial definido sobre los valores de las claves. En bases de datos paralelas, donde mltiples instancias del DBMS acceden a un grupo de filas de una tabla ubicadas dentro de una rango de valores para sus claves. Si se invierten los valores de las claves el efecto producido ser el de dispersar claves que antes deban estar consecutivas en el orden establecido por el ndice. Al separar estas claves se reduce la contencin sobre el bloque de datos ORACLE que antes deba contenerlas. Estos ndices sirven slo para realizar bsquedas de igualdad ("exact match queries) por lo que no deben utilizar si la tabla sobre la que se definir dar soporte a aplicaciones que hagan bsqueda por rango ("range match queries). Estructura de un ndice basado en B*-Tree De acuerdo con la definicin de la estructura B*-tree, un ndice ORACLE de este tipo se estructura como un rbol cuya raz contiene mltiples entradas y valores de claves que apuntan al siguiente nivel del rbol. Cada una de estas entradas mantiene un orden sobre las claves que estn siendo almacenadas de forma tal que el apuntador a la izquierda de una clave C indicara el bloque de nivel siguiente en el rbol donde se ubican claves menores que C. De igual forma, el apuntador a la derecha de una clave C indicara la el bloque de nivel siguiente en el rbol donde se ubican claves mayores que C. Todos los nodos internos del rbol tienen la misma estructura. Los nodos hoja contienen la entrada del ndice con toda la informacin necesaria para localizar la(s) fila(s) que contienen un valor especfico para la clave. Los nodos hoja se encuentran doblemente enlazados para facilitar el recorrido del ndice en orden ascendente o descendente. Cada - 21 - entrada en un nodo hoja representar las filas que posee el mismo valor para la clave y posee la siguiente estructura: Un encabezado que almacena el nmero de columnas e informacin sobre el uso concurrente de la fila. Una secuencia de valores de longitud de columna y valor de columna que permiten expresar el valor de la clave almacenada en dicha entrada. El ROWD de la fila que posee el valor de la clave. Las siguientes convenciones son utilizadas para el almacenamiento en un ndice basado en B*- Tree: En caso de que un ndice no sea UNQUE, si mltiples filas poseen el mismo valor de la clave en la estructura del ndice se repetirn los valores de dichas claves. Esto constituye una pequea diferencia respecto a la definicin original de B*-trees. Si una fila posee para todas las columnas de la clave el valor NULL, en el ndice no existir una entrada correspondiente a dicha fila. Si la tabla no est particionada, se utilizan ROWDs restringidos para indicar la direccin de la fila. Esto se debe a que todas las filas de la tabla no se encuentran en un mismo segmento y con esta poltica el ndice requiere de menos espacio en disco. Estructura de un ndice Bitmap Un ndice bitmap tambin est organizado como un B*-Tree, pero la estructura de los nodos hoja cambia para almacenar un bitmap definido sobre los valores de la clave en lugar de ROWDs. Cada bit en el bitmap corresponde a un posible ROWD, y si el bit est encendido esto significa que el ROWD en cuestin posee el valor indicado para la clave. ORACLE almacena de forma comprimida los "bitmap asociados a cada entrada del ndice utilizando para tal fin una tcnica propietaria. Los ndices de tipo bitmap son particularmente idneos en escenarios en los que no se producen o se producen muy pocas actualizaciones sobre las columnas que conforman la clave. Una actualizacin en una de estas columnas trae implcita la modificacin de dos o ms entradas del ndice (incluidos los bitmaps). De igual forma, la insercin de un nuevo valor de la clave trae implcita una reorganizacin masiva del ndice, la cual es extremadamente costosa. Los ndices de tipo bitmap permiten acelerar ms consultas que utilicen el operador de disyuncin sobre los atributos claves. Verificar si el valor de una columna de la clave est entre un grupo de valores es sencillo en un ndice bitmap ya que slo debe efectuarse el OR bit a bit de los bitmaps asociados a las entradas de los valores en el rango de bsqueda. En los ndices basados en B*- Trees esta operacin es ms costosa. Como regla general, los ndices basados en B*-Tree son mejores para ambientes de procesamiento de transacciones en lnea (OLTP On-Line Transaction Processing), en los que suelen existir tablas de alta volatilidad (gran nmero de operaciones de insercin y eliminacin) y de alta frecuencia de actualizacin. Por otra parte los ndices bitmap son muy tiles en ambientes donde se realizan consultas muy complejas sobre tablas muy poco voltiles y que prcticamente no - 22 - sufren actualizaciones. Ambientes de este tipo son los derivados del uso de tcnicas de "Data Warehousing o en Sistemas de soporte a la decisin (DSS Decisin Support Systems). Oracle 9, Tablas organizadas por ndices Una Tabla organizada de ndices (ndex-Organized Table OT) es una organizacin de almacenamiento nico del servidor Oracle, el cual provee de performance adicional, escalabilidad y disponibilidad sobre las tablas convencionales. Actualmente las tablas organizadas por ndices estn almacenadas en un nivel de ndice B-tree, en donde las ordenes de bsqueda se basan en las llaves primarias de las tablas de tal forma que los cambios a los datos tales como agregar, modificar o borrar renglones requiere de modificar el ndice solamente. Esta implementacin activa en gran medida el acceso rpido a la tabla para todas las consultas basadas en llaves, haciendo que las tablas organizadas por ndices sean ideales para una gran variedad de aplicaciones. Dnde se usan las tablas organizadas por ndices? La demanda de rapidez en las consultas, alta disponibilidad y capacidad de almacenamiento reducido. Algunos ejemplos para la utilizacin de ste concepto de uso y manejo de ndices son: 1. Proceso de ordenes electrnicas : una tabla organizada por ndices es una estructura de almacenamiento ideal para la tabla de ordenes, en donde el query y las operaciones DML (Data Management Language) que ocurren en ste tipo de aplicaciones fragmentan usualmente la tabla, requiriendo frecuentemente una reorganizacin de la tabla. Una tabla organizada en indices puede ser reorganizada fuera de los ndices secundarios y su performance en lnea elimina el tiempo fuera ("downtime") de la tala ordenes. 2. Catlogos electrnicos : Una tabla organizada en ndices puede ser usada para almacenar cualquier tipo de catlogos que son usualmente indexados por producto de acuerdo a atributos basados en llaves primarias o bien recuperacin de catlogos que pueden tener multicolumnas como llave primaria. Ambos casos se benefician con el uso de tablas organizadas en ndices. La compresin de la llave puede ser usada sobre stas tablas organizadas en ndices para permitir valores repetidos en la columna incrementando el performance y reduciendo el almacenamiento. 3. Bsquedas en internet : Estas aplicaciones mantienen una lista de palabras llave (clave), usuarios o URL's, para su almacenamiento en tablas organizadas en ndices, en donde cada rengln mantiene una llave primaria con alguna informacin adicional. Una tabla organizada en ndices almacenando URL's y sus ligas asociadas puede incrementar considerablemente la rapidez en el tiempo de acceso a la consulta. 4. Portales Web : Este tipo de aplicaciones son nombres de usuarios de la BD con un subconjunto de la informacin del usuario disponible mas frecuentemente usada. La columna flexible puede ser reemplazada por una tabla organizada por ndices lo que provee la opcin a incrementar el performance de esa aplicacin. - 23 - 5. Data Warehousing : La tabla organizada por ndices soporta cosas como la carga, creacin de ndices y requerimientos de bsqueda para el manejo de grandes volmenes de datos. Las tablas organizadas por ndices particionadas son tambin soportadas, de tal forma que cada particin puede ser cargada concurrentemente. Las aplicaciones de Data Warehousing usan esquemas de inicio que tambin pueden obtener menor performance y escalabilidad con la implementacin de tablas de hechos ("fact) como tablas organizadas por ndices para una ejecucin mas eficiente de los querys de inicio. Todas stas formas de tablas organizadas por ndices proporcionan un manejo de datos a gran escala. Rapidez en el acceso a ndices Las tablas organizadas en ndices proveen de un acceso rpido a los renglones de las tablas por la llave primaria. De igual modo, desde que los renglones son almacenados en un orden de acuerdo a la llave primaria, el rango de acceso por la llave primaria involucra un acceso mnimo de bloques. De acuerdo a sta organizacin se lleva a cabo un acceso mucho ms rpido a aquellas columnas mas frecuentemente accesadas, la opcin de almacenamiento de overflow de registros puede ser usada para sacar a las columnas no muy usadas frecuentemente del bloque B-tree como una opcin de rea de almacenamiento de overflow. Esto limita el tamao y contenido de la porcin de registros actualmente almacenados en el bloque leaf B-tree, resultando un B-tree mas pequeo y un acceso ms rpido. Reduccin de almacenamiento Las tablas organizadas por indices mantienen una estructura de almacenamiento sencillo, el ndice B-tree. Los valores de las columnas que son llave primaria son almacenados nicamente en el ndice B-tree y no son duplicados ni en la tabla ni en el ndice, como pasa en un conjunto de tablas organizadas convencionalmente. El rengln de una tabla organizada por ndices est ordenada con base a la llave primaria, y aunque cada ndice generado ocupa espacio de almacenamiento, un significativo ahorro en el espacio para el almacenamiento se puede obtener a travs del uso de compresin de llaves ncremento de 24x7 en disponibilidad Las tablas organizadas por indices utilizan ROWD's lgicos basados en la llave primaria. El uso de ROWD activa la reorganizacin en linea y ese proceso no afecta los indices secundarios los cuales son revalidados despus de una reorganizacin. Esta capacidad reduce o elimina el tiempo fuera que se generalmente se utiliza para la reorganizacin de indices secundario, haciendo una organizacin de ndices por tablas beneficiando a 24x7 aplicaciones. Escalabilidad incremental Las tablas organizadas por ndices son altamente escalables por su soporte para particionar y realizar operaciones en paralelo. El rango de particin y la bsqueda de particiones en tablas organizadas por indices son como las columnas LOB en particiones, que son soportadas por las tablas organizadas por indices. Las consultas en paralelo y el DML paralelo tambin son soportadas, Las consultas sobre tablas organizadas por ndices incluyen una particin basada en la optimizacin optima de flujos de ejecucin. - 24 - De fcil uso y funcionalidad completa La manipulacin de aplicaciones en tablas organizadas por indices solo son como una tabla ordinaria, manipuladas con sentencias estndar SQL. Todas las interfaces de programacin, incluyendo PL/SQL, OC y JDBC pueden accesar tablas organizadas por indices. Todos los complementos de Utilerias y herramientas de Oracle son soportadas por ste tipo de organizacin, incluyendo el SQL*Loader, MPORT/EXPORT y el transporte de los tablespaces, especficamente par el punto de recuperacin de operacin usando el Oracle Recovery Manager (RMAN). Caractersticas de la llave: Funcionalidad completa en la tabla Caractersticas del performance: Soporta segmentos de OVERFLOW Compresin de llaves Nuevos indices secundarios de bitmaps sobre OT's no particionados Nueva gua en linea para un DBA invitado reacondicionado sobre indices secundarios Opcin a recolocacin de columnas Caractersticas de escalabilidad: Rango de particiones Nuevo particionamiento Hash Nuevas columnas LOB particionadas en OT's Querys paralelos Nuevo DML paralelo Soporte para vistas materializadas Caractersticas de disponibilidad: Movimiento en linea Reorganizacin en linea ndices secundarios lgicos Nueva creacin y reconstruccin de indices en linea Nuevos ndices de COALESCE en linea Nuevos movimientos en linea de segmentos de flujo Nueva creacin y reconstruccin de indices de llave comprimida. 7. MPLEMENTACN DEL DSEO CONCEPTUAL (MODELO ENTDAD - RELACN) El modelo Entidad/Relacin (Chen 1976) es un modelo de datos semntico cuyo objetivo inicial era vencer algunas de las dificultades mostradas por el modelo relacional, al que pretenda sustituir. Concretamente, pretenda dotar de "significado" a las estructuras de datos, carentes del mismo, del modelo relacional. En la prctica, este modelo de datos no ha llegado a implementarse en ningn DBMS comercial, pero ha tenido una enorme repercusin como herramienta de modelado de bases de datos (paradjicamente, bases de datos relacionales), existiendo hoy en da herramientas de diseo conceptual que incorporan la totalidad de sus conceptos e incluso productos que transforman diagramas conceptuales E/R en bases de datos reales en diversos formatos. - 25 - Consideramos que el modelado E/R se ha convertido en estndar para el diseo de bases de datos relacionales, por lo que lo utilizaremos para describir nuestra implementacin. Esta aseveracin se ve reforzada por la eleccin de este modelo de datos en proyectos importantes, nos referimos a Chen (1976,1983). En el modelo Entidad/Relacin, el UoD/mundo/empresa/seccin de la realidad se representa mediante un nmero muy reducido de conceptos semnticos bsicos: el mundo est compuesto de entidades; una entidad es cualquier objeto distinguible relevante en el mundo en cuestin (los profesores y cursos en el mundo acadmico de nuestro ejemplo anterior). Estas entidades poseen un nmero indeterminado de #ro#iedades, que son "trozos" de informacin que describen a las entidades de uno u otro modo. Cada una de las entidades tiene una identidad, esto es, son identificables de forma nica. Grupos de entidades relacionadas mantienen relaciones con otros grupos de entidades. Tambin existen s&!ti#os de entidades: la entidad E2 es un subtipo de la entidad E1 si y slo si cada E2 es tambin un E1. Se supone que mediante estos simples componentes se puede modelar cualquier "seccin de realidad". Aplicando estos conceptos al submundo que nos proponemos modelar, el lexicn, podramos considerar a los distintos lexemas como las entidades centrales que lo componen. Los lexemas tienen ciertas propiedades (morfolgicas, sintcticas, semnticas) y mantienen ciertas relaciones con otros lexemas (sinonimia, hiperonimia). Esto es una enorme simplificacin del asunto, pero nos puede servir para mostrar el mod&s o#erandi que el modelo nos impone. El modelo E/R aporta una herramienta de modelado para representar las entidades, propiedades y relaciones: los diagramas Entidad/Relacin. Mediante stos, el esquema conceptual abstracto puede ser mostrado grficamente y mantener una independencia conceptual con respecto a la implementacin propiamente dicha. En realidad, podemos hacer que los diagramas sean un reflejo fiel de las relaciones, interrelaciones y atributos del modelo relacional de datos o podemos englobar diversas relaciones en una sola entidad o conjunto de propiedades. - 26 - 8. ADMNSTRACN DE LA SEGURDAD DE LA BASE DE DATOS Los sofisticados mecanismos de seguridad de Oracle controlan el acceso a los datos sensibles utilizando un conjunto de privilegios. En funcin del nombre con el que se conectan a la base de datos, a los usuarios se les conceden derechos para consultar, modificar y crear datos. Los clientes usan estos mecanismos para asegurarse de que ciertos usuarios pueden consultar los datos de carcter sensible, mientras que a otros se les niega dicha posibilidad. Realizacin de copias de seguridad y recuperacin Oracle proporciona sofisticados procedimientos de realizacin de copias de seguridad y recuperacin de los datos. Las copias de seguridad permiten crear una copia secundaria de los datos de Oracle; los procedimientos de recuperacin - 27 - restauran los datos a partir de una copia de seguridad. La estrategia de copias de seguridad y recuperacin de Oracle permite minimizar la prdida de datos y el tiempo para cuando se produce un problema. Oracle Server tambin proporciona esquemas de copia de seguridad y recuperacin que permiten un acceso ininterrumpido a los datos 7 das a la semana, 24 horas al da y 365 das al ao. Rollback y Redo Fases en la ejecucin de una sentencia Cacheo de bloques de datos y rollback (si no lo estaban) Bloqueo de datos Copia del viejo valor en segmentos de rollback Copia del nuevo valor en buffers de redo log Modificacin de los bloques de datos Rollback Redo Alta (NSERT) Clave Registro completo Baja (DELETE) Registro completo Clave Modificacin (UPDATE) Clave y valor modificado anterior Clave y valor modificado posterior Consulta (SELECT) - - Efecto de la evolucin de un bloque oracle de datos sobre un bloque oracle de rollback Segmentos de rollback Deshacer cambios (SET TRANSACTON, SAVEPONT, COMMT, ROLLBACK) Consistencia en lectura para otras transacciones Recuperacin en un estado consistente en caso de fallo Database log mode Montada no abierta SVRMGR>shutdown SVRMGR>startup mount SVRMGR>startup nomount + alter database mount; - 28 - SVRMGR>alter database archivelog; SVRMGR>alter database noarchivelog; c:\orant\database\log1orcl.ora, ... Automatic archival SVRMGR>archive log list SVRMGR>archive log start SVRMGR>archive log stop initsid.ora>log_archive_start = true log_archive_dest log_archive_format c:\orant\database\archive\ Usuarios de ORCLE Usuario Password por defecto sys change_on_install system manager scott tiger internal oracle sys oracle En una Base de Datos Oracle la confidencialidad puede ser relativa a: 1. Los objetos de la Base de Datos fsica 2. Las operaciones sobre la instancia de Base de Datos, es decir, sobre Procesos (servicios, listeners, demonios, programas residentes, ejecutables sin interfaz) Recursos (estructuras de memoria RAM, buffers, datos) Cambio de passwords Cambiar la password del listener c:\orant\bin>lsnrctl80.exe editar el archivo listener.ora set password vieja_password stop set password nueva_password start Nota: el password slo se comprueba en el stop Cambio de passwords de usuarios de la base de datos En cuanto a la confidencialidad relativa a los objetos de la Base de Datos fsica, los nombres de los usuarios y sus passwords encriptadas se almacenan en la propia base de datos. SQL>select * from dba_users; Usuari o Comando - 29 - Sys alter user sys identified by change_on_install; Syste m alter user system identified by manager; Scott alter user scott identified by tiger; Mtodos de autentificacin para operaciones sobre la instancia En cuanto a la confidencialidad relativa a operaciones sobre la instancia, existen dos formas de autentificacin. Los mtodos de autentificacin para operaciones sobre la instancia son: 1. Por sistema operativo 2. Por archivo de passwords Mtodos recomendados Tipo de Administracin hay una conexin segura? Mtodo recomendado Local si por archivo de passwords o por sistema operativo Local no por archivo de passwords o por sistema operativo Remota si por archivo de passwords o por sistema operativo Remota no por archivo de passwords Mtodos de autentificacin utilizados Sistema Operativo Mtodo utilizado Unix y VMS por sistema operativo NT por archivo de passwords Configuracin En c:\orant\database\initorcl.ora Autentificacin por Sistema Operativo Autentificacin por archivo de passwords remote_login_passwordfile = none remote_login_passwordfile = exclusive remote_login_passwordfile = shared remote_login_passwordfile = shared indica que el archivo de passwords puede ser compartido por varias bases de datos, pero entonces los nicos usuarios permitidos sern SYS y NTERNAL En la autentificacin por Sistema Operativo, Oracle comprueba que el usuario del Sistema Operativo posee los roles del Sistema Operativo: OSDBA OSOPER y los hace equivalentes a los modos de conexin de Oracle: SYSDBA SYSOPER SQL>connect scott/tiger@orcl as sysdba - 30 - SQL>connect scott/tiger@orcl as sysoper Por ejemplo, sys no puede hacer shutdown conectandose como: SQL>connect sys/change_on_install pero s como SQL>connect sys/oracle as sysdba El rol del Sistema Operativo Supone OSOPER Permiso para realizar las acciones STARTUP, SHUTDOWN, ALTER DATABASE OPEN/MOUNT, ALTER DATABASE BACKUP, ARCHVE LOG, RECOVER, y incluye el privilegio RESTRCTED SESSON OSDBA Todos los privilegios con ADMN OPTON, el OSOPER y el comando CREATE DATABASE Cambio de la password del usuario internal 1. Borrar o mover el archivo C:\orant\database\pwdorcl.ora 2. Ejecutar c:\orant\bin>orapwd80.exe file=c:\orant\database\pwdorcl.ora password=oracle Suplantacin de un usuario 1. Obtener y copiar la password encriptada SQL>select password from dba_users where username='SCOTT'; 2. Modificar la password SQL>alter user scott identified by nueva; 3. Realizar las acciones deseadas 4. Restaurar la password SQL>alter user scott identified by values 'F894844C34402B67'; Gestin de privilegios y recursos - 31 - Conceptos de gestin de privilegios y recursos Concepto Significado Privilegio Permiso para realizar una accin, asignable a un usuario o un rol. Rol Conjunto de privilegios, asignables a un usuario o un rol. Usuario Coleccin de objetos y privilegios identificado con un nombre y password. Perfil Conjunto de restricciones relativas al uso de recursos, y asignable a usuarios. Un usuario slo puede tener un perfil. Recurso Uso susceptible de ser restringido, asignable a un perfil.
Roles Predefinidos por Oracle (select * from dba_roles;) CONNECT RESOURCE DBA EXP_FULL_DATABASE MP_FULL_DATABASE DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE SELECT_CATALOG_ROLE Recursos en Oracle (select * from user_resource_limits;) COMPOSTE_LMT SESSONS_PER_USER CPU_PER_SESSON CPU_PER_CALL LOGCAL_READS_PER_SESSON LOGCAL_READS_PER_CALL DLE_TME CONNECT_TME PRVATE_SGA Limites en uso del espacio en disco (select * from dba_ts_quotas;) ALTER USER SCOTT QUOTA UNLMTED ON USER_DATA; ALTER USER SCOTT QUOTA 5M ON TEMPORARY_DATA; ALTER USER SCOTT QUOTA 0 ON SYSTEM; Para la gestin de Se utilizan los comandos Privilegios GRANT (conceder un privilegio a un usuario o a un rol) REVOKE (denegar un privilegio a un usuario o a un rol) Roles CREATE ROLE (crear) ALTER ROLE (modificar) - 32 - DROP ROLE (borrar) SET ROLE (activar, desactivar) GRANT (conceder un permiso o un rol a un rol) REVOKE (denegar un permiso o un rol a un rol) Usuarios CREATE USER (crear) ALTER USER (modificar) DROP USER (borrar) GRANT (conceder un permiso o un rol a un usuario) REVOKE (denegar un permiso o un rol a un usuario) Perfiles y Recursos CREATE PROFLE (crear) ALTER PROFLE (modificar) DROP PROFLE (borrar) ALTER USER ... PROFLE (asignar a un usuario) CREATE USER ... PROFLE (asignar a un usuario) Activacin de perfiles
Estado de la Base de Datos Accin Base de Datos Parada RESOURCE_LMT = TRUE en c:\orant\database\initorcl.ora Base de Datos Arrancada ALTER SYSTEM SET RESOURCE_LMT = TRUE; Vistas ms relevantes Significado Usuarios dba_users user_users all_users Roles dba_roles Roles asignados a roles o usuarios dba_role_privs user_role_privs Privilegios asignados a roles o usuarios dba_sys_privs Permisos sobre tablas asignados a roles o usuarios dba_tab_privs Roles asignados a roles role_role_privs Privilegios de cada rol role_sys_privs Lmites de recursos user_resource_limits Perfiles y sus lmites de recursos asociados dba_profiles Lmites de recursos en cuanto a restricciones en claves user_password_limit s Lmites de recursos en cuanto a espacio mximo dba_ts_quotas user_ts_quotas - 33 - en tablespaces Oracle 9i Advanced Security Release 2 Enterprise User Security Passwords basados en Enterprise User Security La administracin de cuentas consumen tiempo y representa una actividad costosa en muchas organizaciones. Por ejemplo, los usuarios pueden perder su password, cambiar de roles o dejar la compaa. Adems de tiempo que se utiliza para la administracin de usuarios, los campos estn abiertos para el manejo de datos perdidos. Para implementar los password basados en autenticacin, Oracle Advanced security provee de un ambiente para configuracin de usuarios de fcil uso y simplificado, con una interfaz de administracin amigable. Este tipo de administracin reduce los problemas de overhead no solo para los usuarios sino tambin para los certificados emitidos por cada usuario, reduciendo asi el costo que implica el tiempo utilizado por el administrador para esa tarea que normalmente se haca manualmente. Para comunidades de muchos usuarios, se puede accesar a multiples aplicaciones en ambientes heterogneos usando passwords basados en autenticacin. Adems, las aplicaciones que usen versiones de la BD Oracle cliente puede tomar ventaja de sta caracterstica, ya que puede no hacer cambios al cdigo en cualquier actualizacin del software en el cliente. Debido a que los usuarios y sus credenciales son almacenados en el directorio nternet de Oracle, ese directorio en el servidor disfruta del mismo nivel de proteccin y seguridad tal como si estuviera almacenado en la BD. La comunicacin entre el directorio nternet de Oracle y la BD continua siendo rigurosamente segura por el SSL como medida de seguridad para el usuaro final. User Migration Utility En Oracle 9i Advanced Security Release 2, la administracin de los usuarios es simplicada con las herramientas y utilerias de la migracin de usuarios. Estas permiten al administrador migrar los usuarios definidos en la BD para el directorio nternet de Oracle. Esta migracin de usuarios ahora es referenciada como "password authenticated enterprise users. El administrador y el usuario final disfrutan de los beneficios de la administracin de usuarios centralizados y un login/password sencillo para la BD respetivamente. Three-Tier Enterprise User Security Oracle 9i Advanced Security Release 2 continua con el soporte para la seguridad de usuarios en la empresa en un ambiente de 3 hilos. La identidad del usuario ahora podr ser intercambiada a travs del tercer hilo, lo que significa un certificado de X.509, un Distinguished Name(DN), o nombre de usuario y password. La autenticacin y las caracterrsticas del control de acceso son implementadas en un repositorio sencillo que permite a las aplicaciones liberar los beneficios de una identidad de usuario sencilla. Manteniendo la identidad del usuario a travs de los hilos de una aplicacin, permite a la empresa escribir aplicaciones escalables mientras se provee de los beneficios de auditorias de acceso simplificadas y polticas de control de acceso. - 34 - Advanced Encryption Standard Advanced Encryption Standard es un nuevo estndar para procesar informacin suceptible a ser publicada (Federal nformation Processing Standard (FPS)), puede ser usado como medida de proteccin en las organizacones gubernamentales. Oracle 9i Advanced Security Release 2 le proporciona a las agencias de gobierno y de negocio la oportunidad de utilizar un fuerte algoritmo de encripcin para proteger la informacin clave. Strong Authentication with Flexibility La autenticacin se adpata como en RADUS, Entrust, Cybersafe y Kerberos que son cargados dinmicamente. Los administradores no necesitan hacer grandes tomas de desiciones para el servicio de autenticacin, un administrador puede seleccionar y decidir el servicio de autenticacin como en RADUS, Entrust, Cybersafe o Kerberos en cualquier momento. Oracle Advanced Security carga dinamicamente los adaptadores de autenticacin apropiados, eliminando la recompilacin compleja o la tarea de religar las librerias. Kerberos Kerberos goza de mucha popularidad, ahora en varios sistemas operativos se incluye Kerberos Security Server. Oracle 9i Advanced Security continua proporcionando un cliente de Oracle que puede ser usado bajo la V5 de Kerberos autenticado para la BD. La version 2 de Oracle 9i Advanced Security, hace una adaptacin de Kerberos, el cual puede ser usado en la capa media entre el servidor y la BD (middle tier), de tal forma que provee seguridad end-to-end con el servicio de seguridad de Kerberos en el ambiente de 3 capas (3 tier environment). Como las credenciales de kerberos pueden ser liberadas para activar la capacidad que tiene de firmas sencillas, sta versin contina propiorcionando la firma sencilla en el ambiente (arquitectura) de 3 capas. Soporte para RADUS Lo nuevo en la versino 2 de Oracle 9i Advanced Security, es el soporte para autorizaciones externas de RADUS, adems de los roles de conexin en la BD Oracle para usuarios RADUS. Se utilizan 2 modos de autenticacin en RADUS: 1. Public Key nfrastructure (PK) Oracle 9i Advanced Security versin 2 puede ser usado para autenticar usuarios con certificados digitales en un ambiente de PK. Esto contina permitiendo a los clientes y servidores autenticar sobre SSL utilizando certificados 509v3. Las llaves primarias y los certificados son almacenados en un Oracle Wallet, que es un contenedor seguro para salvaguardar la identidad de los clientes y/o los servidores. SSL Hardware Acceleration Oracle 9i Advanced Security versin 2 permite a la empresa delegar operaciones criptogrficas de llaves pblicas complejas para acelerar la rapidez en los dispositivos del hardware en transacciones SSL. - 35 - Oracle Wallet Manager Oracle Wallet Manager es una herramienta GU que permite al administrador crear wallets para usuarios en su empresa. Usando sta herramienta, el administrador y/o usuario puede almacenar y recuperar de manera opcional wallets desde el Directorio de nternet de Oracle (Oracle nternet Directory). Los usuarios tiene la posibilidad de almacenar mltiples certificados en un wallet. La herramienta de adminsitracin del wallet, proporcionan un fuerte algoritmo de encripcion uasndo el algoritmo Triple-DES (3DES) para seguridad de wallets. Existe un soporte para cada wallet de mltiples certificados a travs del Oracle Wallet Manager y el Oracle Enterprise Login Assistant, que inclye: S/MME signing certificate, S/MME encryption certificate y code-signing certificate. Esto permite interactuar con otras aplicaciones de Oracle Corporation, tales como Oracle9iAS Email y Oracle 9iAS Unified Messaging, para diferenciar los certificados utilizando un cdigo de firma y encripcin. La fortaleza de encripcin de un wallet se debe a el uso de llaves privadas asociadas con certificados X.509 y encriptadas con 3 llaves Triple-DES (3DES), el cual es un estndar industrial fuerte de algoritmos de encripcin que provee la mejor seguridad para Oracle wallets. El mdulo de administracin de los passwords forza a utilizar las las guas de polticas para generacin de passwords seguros y fuertes. Se tiene un soporte para mltiples formatos de Wallet en el stack de SSL, Oracle 9i Advanced Security puede almacenar mltiples formatos de wallet incluyendo los certificados X509v3, Entrust Profiles y Microsoft Certificate Store en Oracle Wallets. Esto permite a la organizacin liberar su infraestructura existente de PK miientras se incorpora el ltimo estndar Oracle9i Label Security Los sistemas de informacin tradicionales no permiten que los datos sean separados en diferentes sensitivities dentro de una BD sencilla. Como resultado de ello, muchas organizaciones se ven forzadas a separar fsicamente los datos en diferentes maquinas, construyendo cdigo de aplicacin muy complejo.Oracle9i Label Security es una opcion de seguridad para Oracle9i Enterprise Edition y reduce de una forma dramtica las necesidades de informacin integrada, reduce la complejidad en el cdigo de las aplicaciones y proporciona un control manual o fsico para proteger los datos . Oracle9i Label Security accesa a los datos mediante comparaciones de etiquetas sensitivas asignadas a una parte del dato con la autorizacin de la etiqueta asignada para una aplicacin del usuario. Este tipo de acceso permite que los datos sean separados en diferentes sensitivities en una BD sencilla. Las aplicaciones en el hist, la consolidacin de la BD, la seguridad nacional y la privacidad solo son algunas de las reas que se ven beneficiadas por el Oracle9i Label Security. La versin 2 de Oracle9i Label Security, ahora proporciona ms flexibilidad y capacidad de control de acceso. Access Control El control de acceso discresional (Discretionary access control (DAC)), es utilizado para darle el acceso de los datos a los usuarios, a travs de privilegios de la BD tales como SELECT, NSERT, UPDATE y DELETE. El acceso a los datos es controlado en base a la identidad del usuario ya sus privilegios de acceso. - 36 - Standard Oracle9i soporta la extensin DAC y la encripcin de datos en un nivel fino de granulidad, mas la satisfaccin de los requerimientos de seguridad. Oracle9i Enterprise Edition con Oracle9i Label Security soportan ambos DAC y etiquetas basadas en control de acceso usando etiquetas sensitivas, provee de un control de acceso multidimensional a travs de niveles sensitivos jerrquicos, informacin compartamentalizada y grupos/organizaciones jerrquicas. Administracin de polticas flexibles y altamente customizables Las polticas de Oracle9i Label Security son colecciones de etiquetas sensitivas, autorizaciones de etiquetas de usuario y opciones de forzar a grupos juntos y dar un nombre nico. El nombre de la poltica asignada por el administrador de la aplicacin o el oficial en seguridad, permite que las polticas de seguridad sean facilmente administrables y aplicadas a las tablas de la aplicacin o a los esquemas de la BD. Una vez aplicados a una tabla de la aplicacin, la poltica de seguridad puede ser facilmente afinada con Oracle9i Policy Manager (OPM), de acuerdo al nivel de forzamiento o rigidez que se quiera tener de la poltica declarada. La opcin de encripcin de Oracle Advanced Security es utilizada para encriptar todoel trfico que fluye entre el Oracle9i Policy Manager y la BD Oracle. Administracin de polticas Oracle 9i Oracle9i Policy Manager es un uevo GU de Java para la administracin de polticas Oracle Label Security tales como definicin de polticas de usuario Virtual Private Database (VPD). Utilizando Oracle9i Policy Manager se pueden crear polticas, definir componentes de etiquetas, crear etiquetas, establecer autorizaciones de etiquetas por usuario, customizar las opciones de forzamiento, apicar polticas a los esquemas y a las tablas, borrar polticas desde los esquemas y las tablas, desactivar polticas, definir un contexto de aplicacin y crear grupos de polticas VPD. Oracle9i Policy Manager es la herrmienta de administracin para manipular polticas de proteccin de informacin a nivel renglon. Administracin de etiquetas y etiquetando datos Las etiquetas de Oracle9i Label Security son manipuladas utilizando Oracle9i Policy Manager o los comandos en linea AP de Oracle9i Label Security. Las definiciones de etiquetas son almacenadas en la BD Oracle9i para un fcil mantenimiento y seguridad. Oracle Label Security proporciona numerosos mtodos para etiquetar datos dependiendo de las opdiones de forzamiento especificadas. Esto inlcuye la opcion de forzamiento de DEFAULT_LABEL, la cual - 37 - se usa como una etiqueta default asociada con el usuario. La etiqueta puede estar dentro del rango de autorizacin de etiquetas del usuario. La funcion LABEL tiene la opcin de referencia a funciones PL/SQL, las cuales calculan la etiqueta con base a valores contenidos en datos u otros factores. Redes, Replicacin y Ambientes de Distribucin Las polticas de Oracle9i Label Security se forzan en la BD. Las polticas son via the nternet, cliente/servidor, n-tier, localmente o atravz de la liga a la BD. Oracle9i Label Security soporta el estndar de replicacin y replicacin avanzada, incluyendo la replicacin multimaster y la vistas materializadas (snapshots). Las BD distribudas tienen el estndar de Oracle9i Label Security: El usuario final local conectado es un usuario remoto particular. Con la proteccin etiquetada de los datos de Oracle9i Label Security, se puede conectar local o remotamente. Si el usuario remoto tiene la etiqueta apropiada, puede accesar a los datos, si no, no podr accesar a los datos. El conjunto de ligas a la BD, la conexin a la bD remota y los identificadores de usuario pueden ser asociados con la sesion remota. Las autorizaciones de Oracle9i Label Security sobre la BD remota estn basadas en la identificacin de usuarios remotos y en la liga a la BD. Auditorias Para aplicar una auditoria por tracking, Oracle9i Label Security utiliza las operaciones administrativas propias y los privilegios definidos en las polticas. Cuando se crea una nueva poltica, la columna etiquetada para esa poltc se agrega a la audit trail de la BD. La etiqueta de la columna es creada, independientemente de que en una auditoria se active o desactive en una auditoria del sistema operativo. En cualquier caso un registro se escribe a la tabla de auditoria, cada poltica provee de una etiqueta para cada registro que indica la etiqueta de sesion. El administrador puede crear vistas de auditoria utilizando un paquete AP para desplegar esas etiquetas. Export Oracle9i Label Security tiene la capacidad de hacer exportaciones al worldwide. Evaluaciones Oracle9i Label Security puede ser evaluado sobre el SO/EC 15408 Common Criteria, que son evaluaciones de seguridad que aseguran una independencia entre los mecanismo de proteccin de seguridad con Oracle9i Label Security. Performance Oracle9i Label Security es altamente optimizable para seguridad a nivel de renglon. - 38 - 9. ADMNSTRACN DE OBJETOS Usuarios: La unidad bsica de almacenamiento de una base de datos Oracle es la Tabla, sin embargo, para tener una mejor estructuracin de la informacin dentro de la base de datos Oracle, las tablas se agrupan a su vez dentro de los Usuarios, llamados tambin Esquemas. Por lo tanto, un usuario puede tener cero o muchas tablas y se dice que es el propietario de dichas tablas. Adems, una tabla pertenece a un solo usuario o esquema. Cada vez que se crea una base de datos nueva, hay una serie de elementos que no pueden faltar en ella y siempre se crean. Los dos principales elementos que se crean son el usuario SYS y el usuario SYSTEM. Toda base de datos Oracle tiene siempre estos dos usuarios. Por qu se crean estos dos usuarios automticamente?. Para poder gestionar la base de datos recin creada, el sistema Oracle necesita tener informacin sobre las tablas que existen en la base de datos, los usuarios que existen, los ndices que se van creando y borrando, la cantidad de datos que hay en cada tabla, etc. Por lo tanto, necesita unas tablas en las que ir almacenando toda esta informacin. A este conjunto de tablas se le llama diccionario de la base de datos y, como hemos dicho, toda tabla de una base de datos Oracle debe pertenercer a un usuario, por eso se crean siempre estos dos usuarios especiales, SYS y SYSTEM que son los propietarios de las tablas del diccionario de la base de datos y, por lo tanto, son lo ms importante para que funcione correctamente la base de datos. Si por algn error se borraran tablas de alguno de estos usuarios especiales, se podra corromper toda la base de datos. Lo normal en los proyectos informticos es que, una vez que se crea una base de datos Oracle vaca, es decir, solamente existen estos dos usuarios con sus tablas, se crean nuevos usuarios y en cada uno de esos usuarios se van creando las tablas necesarias para cada proyecto. Para crear un nuevo usuario, se le debe indicar un nombre, un password o contrasea, un tablespace por defecto en el que se crearn todas las tablas de dicho usuario y un tablespace temporal en el que se ejecutarn las select que necesitan de ordenaciones. Estos conceptos se irn aclarando en los siguientes captulos. La sentencia podra ser como la que sigue: Create user nombre_de_usuario identified by pasword_de_usuario default tablespace nombre_tablespace_default temporary tablespace nombre_tablespace_temporal; Si por cualquier motivo queremos borrar un usuario deberemos usar el comando drop, pero si ya hemos creado tablas en este usuario, Oracle no nos dejar, nos indicar este hecho y, si queremos borrar el usuario y todas sus tablas debemos aadir la coletilla "cascade" a la sentencia. Drop user nombre_de_usuario; Cada vez que el servidor Oracle es arrancado, la SGA/System Global Area) es colocada en memoria. Si mltiples usuarios estn conectados a la misma SGA, sta es compartida entre estos. La SGA es a veces llamada Shared Global rea. - 39 - Una sentencia SQL es colocada en un rea SQL compartida basndose en un algoritmo "hash aplicado a este comando, por lo tanto, slo los comandos que son completamente idnticos sern dirigidos a la misma ubicacin en memoria. Los tipos de datos almacenados en el cache del D.D. son los siguientes: Nombres de todas las vistas y tablas de la B.D. Nombres y tipos de datos de todas las columnas en las tablas. Privilegios de todos los usuarios oracle. Tablas: La forma en que se almacenan los datos en las tablas est estructurada de manera que resulte muy sencillo su acceso y en cada tabla guardaremos los datos que tienen relacin o que definen una idea del mundo real. Cuando creamos una tabla de Oracle, hay que indicar su nombre, qu informacin y de qu tipo vamos a guardar en ella. Cuando creamos una tabla, sta se crea vaca, es decir, no contiene datos. Para crear los datos se deben ir ejecutando sentencias de manipulacin de datos. La instruccin bsica para crear un nuevo registro es la INSERT, Existen 3 operaciones bsicas ms que se pueden realizar sobre las tablas. La sentencia UPDATE se utiliza para modificar los valores de algn registro o fila ya existente, Para borrar registros de una tabla se utiliza la sentencia DELETE y finalmente, para consultar datos de nuestra tabla la sentencia utilizada es la SELECT, con ella podremos hacer todas las preguntas que se nos ocurran a nuestra base de datos. Hay una serie de bases de datos llamadas orientadas a objetos, donde el elemento de trabajo en lugar de la tabla es el objeto, que incorpora datos y procedimientos. Pero este enfoque todava est en estudio y no parece clara su ventaja sobre el enfoque relacional. Oracle aprovecha un nuevo enfoque, el objeto-relacional. Es un punto medio entre los dos anteriores, permite a los usuarios utilizar la base de datos de forma relacional, pero incorpora extensiones de las bases de datos orientadas a objetos. Oracle incluso soporta el enfoque orientado a objetos. El hecho que de permite los tres objetos hace que se pueda trabajar de forma relacional y aadir cualquier mejora orientada a objetos. Pero el ncleo de Oracle sigue estando pensado para el enfoque relacional. Mejoras procedentes del enfoque orientado a objetos Tipos abstractos. Permiten crear dominios complejos para almacenar datos en los atributos de las tablas. Tablas anidadas. Permiten seleccionar valores dentro de una lista para un atributo. Representan relaciones uno a varios, donde el contenido de la tabla representa la tabla relacionada con la actual. Sirven por ejemplo para elegir un mes de una lista con los doce meses. 2arra3s4 Es una coleccin de valores que permite seleccionar varios valores relacionados con un atributo de una tabla. Por ejemplo permitira elegir varias asignaturas en el mismo alumno (lo que est en desacuerdo con el modelo relacional, pero es que en realidad la informacin del 2arra3 se almacena aparte) Objetos grandes. Se trata de los llamados LOB (large o!5ect !inar3). Permiten almacenar textos largusimos, archivos externos (de los que slo se almacenar la direccin) y datos binarios. - 40 - vistas-objeto. Permiten crear objetos a partir de las tablas de datos. Vistas Una vista es una especie de ventana dentro de una tabla. Es una estructura lgica que tiene la apariencia de una tabla, sin llegar a serla. El objetivo de crear vistas es el de tener que prescindir de la tabla cuando se desea permitir la manipulacin de datos a otros usuarios; as como tambin de prevenir que se altere de manera involuntaria el contenido de la informacin ms sensible que pudiera encontrarse en ciertas tablas. Las vistas se forman haciendo una seleccin de campos de una o varias tablas. Tambin se puede reemplazar una vista que ya existe con una sintaxis diferente, manteniendo su nombre. La sintaxis de la creacin de vistas es: CREATE [OR REPLACE] VEW nombre_vista AS SELECT columna1, columna2, ... FROM tabla1, ... WHERE columna > valor ; Secuencias A menudo es preciso generar nmeros en forma ordenada para implementar, por ejemplo, una clave primaria en una tabla o garantizar que esos nmeros no se repiten y van siempre en un orden predefinido por el desarrollador (no necesariamente secuenciales). La forma tradicional de efectuar lo anterior sera almacenar el ltimo nmero utilizado en un registro especial, bloquearlo, obtener el prximo valor, actualizar el registro, desbloquearlo y utilizar el nmero. Sin embargo, para eso Oracle implementa los objetos denominadas secuencias, que permiten hacer lo anterior de manera transparente para el usuario. Cuando se define una secuencia se deben indicar, como mnimo, el valor de partida (valor mnimo) y el incremento. La sintaxis de creacin de una secuencia es la siguiente: CREATE SEQUENCE nombre_secuencia NCREMENT BY nmero - 41 - START WTH nmero MNVALUE nmero [o NOMNVALUE] MAXVALUE nmero [o NOMAXVALUE] NOCYCLE [o CYCLE] ; Los parmetros significan lo siguiente: ncrement by: ndica la cantidad de incremento de la secuencia. Start with: Es el valor de partida de la secuencia. Minvalue: ndica cul ser el valor mnimo de la secuencia. Maxvalue: Corresponde al valor mximo que puede tomar la secuencia. Nocycle: Es el valor por defecto para establecer si la secuencia deber comenzar nuevamente a generar valores una vez que ha alcanzado el mximo. Procedimientos almacenados: Database Buffer Cache: El DBC almacena copias de los bloques de datos ledos del disco. Su acceso es compartido por todos los usuarios conectados a la Base de Datos. Cache miss: la primera vez que un usuario oracle accesa un dato, el proceso debe copiarlo del disco al cache antes de accesarlo. Cache hit: cuando el proceso accesa un dato que ya se encuentra en el cache este puede leerlo directamente en memoria. Accesar un dato a travs de un cache hit es ms rpido que a travs de un cache miss. Debido a que el cache tiene un tamao limitado, toda la data del disco no puede ser colocada en memoria. Cuando el cache est lleno, Oracle escribe datos que ya se encuentran en este, al disco para hacer espacio para los nuevos datos. La prxima vez que estos datos escritos a disco sean requeridos originarn un cache miss. De cada 10 bloques requeridos 8 deben originar un cache hit. Redo log. Buffer: Es un buffer circular que contiene la informacin de todos los cambios realizados a los datos. Sus funciones: Registrar todos los cambios de datos. Reconstruye cambios hechos a la B.D. y segmentos de Rollback, cuando es necesaria una recuperacin. Puede ser "bypaseada usando la clusula UNRECOVERABLE. Puede ser "bypaseada por el Oracle Data Loader. Para maximizar el rendimiento y alojar muchos usuarios, Oracle usa mltiples procesos llamados "Background Processes. La cantidad de Procesos en Background corriendo depende de la configuracin de la B.D. que se use, los nombres de stos procesos son: * Database Writer (DBWR) * Recoverer (RECO) * Log Writer (LGWR) * Lock (LCKn) * Checkpoint (CKPT) * Snap Shot Refresh (SNPn) * System Monitor (SMON) * Shared Server (Snnn) * Process Monitor (PMON) * Dispatcher (Dnnn) * Archiver (ARCH) * Paralell Query (Pnnn) - 42 - PMON Y SMON: Reclaman recursos que ya no son requeridos por un usuario. PMON: Limpia conexiones terminadas de forma anormal. Hace "rollback de transacciones sin "commit Libera bloqueos dejados por procesos terminados. Libera recursos de la SGA usados por procesos que fallaron. Rearranca "shared servers y procesos de "dispatcher fallidos SMON: Realiza recuperacin automtica de la instancia. Reclama espacio usado por segmentos temporales ya no usados. Une reas continuas de espacio libre en los datafiles. PMON, SMON, LGWR, DBWR. Son procesos obligatorios para levantar y mantener una instancia oracle, estos procesos no pueden ser controlados modificando parmetros de inicializacin. Los dems procesos son opcionales. Si alguno de estos cuatro procesos se cae, la instancia tambin lo hace y debe ser rearrancada. Redo Log Files: Mantiene un registro de todos los cambios realizados a los datos para propsitos de recuperacin: Son escritos en forma circular. Deben haber al menos dos grupos de redo log. Los redo log files deberan ser colocados en los discos ms rpidos y menos cargados (/O). RAD no recomendado. Redo log Files Multiplexados La configuracin recomendada de redo log files, es tener al menos dos miembros de redo log files por grupo, con cada uno de los miembros en discos diferentes. Esta configuracin protege de la perdida de un redo log file. Todos los miembros de un grupo de log files contienen la misma informacin y son del mismo tamao. Los miembros del mismo grupo son actualizados simultneamente. Cada grupo debera tener el mismo nmero de miembros que los otros. Trace Files y Alert File: En los directorios especificados en los parmetros BACKGROUND_DUMP_DEST y USER_DUMP_DEST se generan archivos que contienen informacin de los errores ocurridos en la B.D. el alert file es uno de estos archivos. En este se registran, entre otros, los siguientes eventos: nternal errors (ORA 600), block corruption (ORA 1578) Operaciones administrtivas (DDL: data definition Language) como renombrar o crear datafiles, etc. STARTUP, SHUTDOWN, ARCHVE LOG Y RECOVER Cambio de secuencia de los Redo Log Files. Es importante chequear el alert diariamente para detectar problemas antes de que estos se vuelvan ms serios y mientras disponemos de un respaldo vlido. Arrancando una instantancia Ejecutar el server manager (svrmgrl) Conenect internal /password. - 43 - Startup [NOMOUNT/ MOUNT/ OPEN] Una vez que se ha arrancado una instancia en NOMOUNT o MOUNT se usa el comando ALTER DATABASE [MOUNT / OPEN] para pasar a un modo superior al actual. Bajando una instancia ejecutar server manager connet internal /password Shutdown [NORMAL/MMEDATE/ABORT] donde. NORMAL: No se admiten nuevas conexiones, oracle server espera que se haya desconectado el ltimo usuario para cerrar la base de datos. El siguiente "Startup no requerir recuperacin. MMEDATE$ Las conexiones actuales de clientes y sus procesos son terminados, a cualquier transaccin sin "commit se le hace "rollback. Shutdown immediate cierra y desmonta la base de datos limpiamente, el siguiente "Startup no requerir recuperacin. ABORT$ Aborta los clientes y sesiones activos, a las transacciones sin commit no se le hace "rollback. Esta opcin no cierra ni desmonta la B.D. pero si baja la instancia (equivale a una falla de la instancia) el siguiente startup requerir recuperacin (la cual es automtica). Manejando la estructura de una B.D. Segmentos de Rollback Es una porcin de la B.D. que registra los datos antes que fueran modificados por las transacciones, permitiendo que estos cambios pueden ser reversados (rollback) bajo ciertas circunstancias. Una transaccin es una unidad de trabajo que ocasiona cambios a la Base de Datos, o bloqueos de registros. A cada transaccin le es asignado un d nico, y es relacionada a uno y slo un segmento de rollback. Un segmento de rollback es un objeto circular y cada transaccin puede tener muchas entradas. Una transaccin puede usar el prximo extents si no hay entradas activas en este. Si el prximo extents a ser usado contiene entradas activas, nuevos extents sern agregados al segmento de rollback previendo que no se haya llegado al mximo de extents permitidos. Parametros de Storage nitial - tamao en bytes. Por defecto 5, bloques oracle. Next tamao en bytes. Por defecto 5, bloques oracle. Maxextents Mximo # de extents para un objeto. El valor por default depende del Sistema Operativo y el bloque oracle. Minextents Cantidad de extents alocado al crear un objeto default 1, RBS = 2. PCTNCREASE Default 50 excepto RBS que no lo usan. OPTMAL solo RBS Default es null. FREELSTS - # de listas de bloques libres para inserts en tablas. Default = 1. FREELSTS GROUPS - gual que el anterior pero para diferentes instancias usando parallel server Def= 1. Estos parmetros se aplican a: Tablas - 44 - Clusters ndices Segmentos de Rollback Tablespaces (valores por defecto solamente) Reglas de Precedencia. 1. Cualquier parmetro asignado explcitamente a un objeto sobreescribe al asignarlo por defecto en el tablespace que lo contiene. 2. Cuando no se especifican parmetros explcitamente a un objeto, se usan los predeterminados del tablespace; en caso de que estos tampoco existan se usan los predeterminados de Oracle Server. 3. Si los parmetros de Storage son cambiados, los nuevos valores afectan solo a los nuevos extents alocados. 4. El parmetro OPTMAL aplica solamente a segmentos de rollback. 5. Freelists y Freelists Groups no pueden ser especificados como predeterminados en el tablespace. El Bloque Oracle Un bloque oracle es la mnima unidad de almacenamiento usado por la Base de Datos. Sus propiedades son: 1. Los bloques oracle corresponden a uno o ms bloques S.O. 2. Su tamao es determinado al momento de crear la B.D. mediante el parmetro DB_BLOCK_SZE, y es constante en todos los datafiles. 3. El parmetro DB_BLOCK_SZE, tambin define el tamao de cada buffer en la S.G.A. 4. Una vez que la B.D. es creada el parmetro DB_BLOCK_SZE, no puede ser cambiado. 5. El tamao por defecto del bloque oracle depende del S.O. 6. Se recomienda que el tamao del bloque oracle sea igual a, o multiplo del tamao del bloque de S.O. 7. En algunas plataformas el tamao del bloque oracle puede ser muy grande (por ejemplo 32 K). Este es conocido como grandes bloques oracle. 8. Toda operacin de /O es realizada usando bloques. Oracle Server mantiene los bloqueos a nivel de registros. Partes de un bloque oracle: Header nformacin general como direccin del bloque y tipo de segmento. Table Directores nformacin de las tablas en el bloque (clusters) Row Directores nformacin de las filas en el bloque. Free Space Bytes aun disponibles en el bloque para inserts o updates. RowData Datos de tablas o ndices Encadenamiento de Registros. - 45 - Un registro que no cabe en un bloque es encadenado en mltiples bloques La pieza inicial del registro permanece en el bloque al que fue dirigido originalmente. Cada pieza adicional del registro es colocada en bloques encadenados. Migracin de Registros. La migracin de registros ocurre cuando un registro de una tabla es actualizado (update) y su nuevo tamao es mayor al espacio libre que quedaba en el bloque. Entonces el registro completo es migrado a un nuevo bloque, asumiendo que este registro cabe en este nuevo bloque. El header del bloque permanece en el bloque al que fue dirigido el registro inicialmente. Es recomendable usar un PCTFREE, suficientemente altos para evitar excesiva migracin. El performance baja cuando se leen registros migrados o encadenados, ya que Oracle Server debe leer ms de un bloque para leer un solo registro. Disparadores El mdulo S.)6,orms tiene incorporado una coleccin de procedimientos y funciones llamados "empaquetados" que se pueden incluir en el cdigo de procedimientos o disparadores definidos por el usuario. El disparador es un bloque de cdigo que se activa cuando se pulsa una determinada tecla u ocurre cierto evento, como puede ser: 1. Mover el cursor hacia o desde un campo, registro, bloque o forma. 2. Realizar una consulta. 3. Validar un dato. 4. Hacer una transaccin al insertar, modificar o eliminar registros de la base de datos. Oracle asocia a cada tecla de funcin un procedimiento empaquetado, pudiendo el usuario redefinir esta asignacin o capturar el disparador para ampliarlo o modificarlo con su propio cdigo. A partir de la versin 7 de 1racle el usuario puede almacenar, en forma independiente, sus funciones y procedimientos sin tener que escribirlos repetidamente para cada forma, y pudiendo compilarlos independientemente de las formas que lo usen. Pero, adems, las funciones y procedimientos se pueden agrupar en un paquete para compartir definiciones, variables globales, constantes, cursores y excepciones, as como garantizar y revocar los permisos a nivel de paquete. En el caso que sea necesario modificar el contenido del paquete, como el mismo se encuentra almacenado separadamente, no es necesario recompilar nada que use ese paquete, lo que facilita la gestin y mantenimiento de todos los procedimientos almacenados como una sola entidad para una determinada aplicacin. Adems, en la versin 7, existe un nuevo tipo de disparador llamado de !ase de datos, que es un procedimiento asociado a una tabla que se activa cuando se produce un suceso que afecta a esa tabla. Su uso ms comn consiste en la definicin de restricciones complejas de integridad. - 46 - 10. UTLERAS DE RDBMS Oracle cuenta con una gran diversidad de herramientas y utileras que facilitan al administrador y al desarrollador sus tareas. A continuacin se mencionan las ms importantes CONOCENDO DEVELOPER Developer es una herramientas de desarrollo de Oracle, en donde adems se implementan el desarrollo de aplicaciones nuevas o ya existentes sobre el Worl Wide Web. Ya sea para ntranet o nternet, el Developer aprovecha las ventajas del fcil acceso al Web y es capaz de manejar desde la publicacin de informacin esttica hasta ambientes que soporten aplicaciones dinmicas complejas. El Developer 2000 proporciona soluciones que aprovechan los beneficios del Web mientras que mantiene la rigidez del cliente/servidor. El Web reduce gradualmente el costo de administracin y mantenimiento de las aplicaciones, mientras que sigue manteniendo el bajo costo de cliente/servidor. Al mismo tiempo permite liberar las aplicaciones cliente/servidor existentes, las cuales pueden ser aplicaciones de misin critica que soportan y muy frecuentemente manejan las practicas de su negocio. Estas aplicaciones deben ser escalables al nmero de usuarios y abiertas a cualquier ambiente. El Developer es una herramienta que nos permite crear formularios en local, es decir, mediante esta herramienta nosotros podemos crear formularios, compilarlos y ejecutarlos, pero si queremos que los otros trabajen sobre este formulario deberemos copiarlo regularmente en una carpeta compartida para todos, de modo que, cuando quieran realizar un cambio, debern copiarlo de dicha carpeta y luego volverlo a subir a la carpeta. Este sistema como podemos observar es bastante engorroso y poco fiable pues es bastante normal que las versiones se pierdan y se machaquen con frecuencia. La principal ventaja de esta herramienta es que es bastante intuitiva y dispone de un modo que nos permite componer el formulario Arquitectura Three-tiered architecture En muchas aplicaciones actuales cliente/servidor, se corren aplicaciones con procesos altamente intensos en el cliente. Los datos extrados desde el servidor de BD remotamente hacia la mquina cliente, puede verse limitada por su poder de procesamiento y capacidad de memoria. El Developer/2000 Server soporta una arquitectura three-tiered, la cual aprovecha los beneficios de ambas implementaciones (cliente/servidor, Web) en una aplicacin sencilla. En la implementacin Web, las aplicaciones lgicas y de procesamiento estn enfocadas a la capa de en medio anidadas en los servidores de aplicacin de una mquina cliente de escritorio. Tier Hardware front-end any number of client desktop machines middle one or more application servers back-end one or more database servers - 47 - Arquitectura Cliente/Servidor contra Arquitectura Web Hay 2 grandes diferencias entre el desarrollo de aplicaciones cliente/servidor y las implementaciones en Web. %liente/Ser2idor4 Las formas que corren en el servidor (y todas las aplicaciones lgicas) son instaladas en las mquinas de escritorio de los usuarios. A travs de la aplicacin puede ser incluida la BD, los triggers y las operaciones lgicas, tpicamente todo el procesamiento de las interfaces de usuario y triggers ocurren en la mquina del cliente. 7e!4 Las formas que corren en el servidor (y todas las aplicaciones lgicas) son instaladas sobre el servidor de aplicaciones, no sobre las mquinas cliente. Todo el procesamiento de triggers ocurre en la BD y en el servidor de aplicaciones mientras que el procesamiento de las interfaces de usuario ocurren en las formas del cliente. UN POCO ACERCA DE DESGNER Oracle Designer es una herramienta de software para analizar requerimientos de negocio y para disear y generar sistemas cliente/servidor que satisfagan stos requerimientos. Oracle Designer incorpora soporte para el modelado de procesos de negocio, anlisis de sistemas, diseo de software y generacin del sistema. - 48 - Oracle designer proporciona un repositorio multiusuario y una integracin cerrada con Oracle Developer como conjunto de herramientas de desarrollo cliente/servidor de Oracle. En ste sentido, Oracle Designer permite a las organizaciones disear y liberar rpidamente sistemas cliente/servidor que pueden adaptarse a los cambios constantes de los procesos del negocio. Designer es una herramienta que se conecta a la base de datos y por tanto creamos los formularios en ella, de esta manera todo el mundo se conecta mediante Designer a la aplicacin que contiene todos los formularios y no hay problemas de diferentes versiones, esto es muy til y perfecto para evitar machacar el trabajo de otros. Pero el principal y ms notable problema es la falta de un entorno visual para disear el formulario, es decir, nos aparece una estructura como de rbol en la cual insertamos un formulario, a la vez dentro de ste insertamos bloques o mdulos que son las estructuras que contendrn los elementos del formularios, que pueden estar basados en tablas o no. Los componentes de Oracle Designer Las herramientas de Oracle Designer estn agrupadas por reas que reflejan las necesidades primarias de diferentes tipos de usuarios: Modeling System Requirements Las herramientas de sta rea se utilizan para: modelar procesos de negocio, re- examinar los mtodos usados para alcanzar las metas de la organizacin, crear representaciones diagramticas del proceso de negocio, detalles del registro de la organizacin, descripcin de requerimientos del negocio a detalle, crea modelos diagramticos de las entidades, funciones y flujos de datos en el sistema que le dan vida a la organizacin. Transforming 8reliminar3 Designs Utiliza el transformador para el diseo preeliminar generado desde el modelo creado con anterioridad. Designing and Generating Utiliza el editor de diseo en sta rea para disear sistemas que conozcan los requerimientos del negocio de una organizacin, provee de un ambiente de desarrollo para diseo e ingeniera de sistemas, crea los componentes del lado del servidor y las aplicaciones del lado del cliente desde la definicin de registros en el repositorio Repository Tools El uso de herramientas en sta rea son para: Entrar y editar informacin en el repositorio, muestra relaciones entre los elementos en el repositorio, genera reportes predefinidos y customizados sobre el contenido del repositorio, administra el repositorio. Ya en un ambiente de desarrollo, Oracle Designer ofrece alternativs de instalacin flexibles, por ejemplo, se puede instalar la suite de Oracle Designer en un cliente PC que proporcione operaciones sencillas, o se pueden instalar los componentes de Oracle Designer separadamente. Cada uno de los generadores puede ser instalado por separado. Principales productos Oracle y relacionados 1. Servidor - 49 - SGBDR Oracle mport/Export: Permite extraer/reincorporar datos de la base de datos. Es el mecanismo habitual para copias de seguridad. 2. Cliente SQL*Plus: nterprete interactivo del lenguaje SQL SQL*Loader: Se utiliza para cargar datos provenientes de diversas fuentes 3. Herramientas de desarrollo Oracle Oracle * Forms Developer (Forms, Reports Graphics). Herramienta muy potente y compleja para el desarrollo de aplicaciones. SQL*Menu: Es una herramienta ms sencilla que SQL*Forms para generar aplicaciones. SQL*ReportWriter: Herramienta muy potente para generar informes. SQL*Calc: Una hoja electrnica conectada con la base de datos. Oracle * CASE Designer OWS 2.0 OWAS 3.0 OAS 4.0 WebDB Jdeveloper Easy*SQL: Una aplicacin basada en ventanas que permite ejecutar y almacenar sentencias SQL de forma sencilla. 4. Herramientas de desarrollo de terceros Microsoft Visual Basic PowerBuilder C++ Borland Jbuilder Proc*C, Pro*Cobol, Pro*Fortran, Pro*ADA: Precompiladores para SQL inmerso en esos lenguajes de programacin. Con esto podemos crear programas ejecutables independientes, al contrario que SQL*Forms, en cuyo caso se necesita un mdulo run-time para la ejecucin de las aplicaciones creadas. Oracle*CASE: Es un conjunto de herramientas CASE (Computer Aided Software Engineering). Entre ellas existe una que funciona en entorno X-Window, y que se utiliza para el diseo de distintos tipos de diagramas. Permite generar programas fuente en lenguajes precompilados, Forms e informes. Los comandos de ejecucin de las aplicaciones ms usuales son: SQL*Plus: sqlplus SQL*Menu: sqlmenu50 -c vt220:vt220 (Si estamos en un Terminal en emulacin vt220) olsqlmenu50 -c oloraterm:sun (Version OPEN LOOK) msqlmenu50 -c moraterm:sun (Version MOTF) SQL*Forms: sqlforms30 -c vt220:vt220 olsqlforms30 (Version OPEN LOOK) msqlforms30 (Versin MOTF) Easy*SQL: easysql (El valor de la variable TERM debe ser alguno de los configurados) - 50 - Pro*C: proc (Al ejecutarlo sin argumentos, da ayuda) ACERCA DE SQL LOADER SQL*Loader es una potente utilidad de importacin de datos que posibilita la carga automtica de datos externos (residentes en ficheros del sistema operativo) en tablas de la base de datos. Los datos pueden cargarse en una o varias tablas que previamente deben estar creadas y que pueden o no tener contenido previo. Los nuevos datos podrn sustituir a los que ya existieran en las tablas o bien aadirse como nuevas filas. Es posible la carga de datos almacenados en forma de ficheros de texto (lo ms corriente) o binarios. La entrada del programa consiste en: Uno o varios ficheros de datos, con nombres por defecto terminados en .DAT, conteniendo los datos a importar. Un fichero (texto) de control, con nombre por defecto terminado en .CTL, que contiene rdenes que permiten guiar y particularizar el proceso de carga de datos. En este fichero se especifican los atributos de las tablas de la base de datos en los que se van a insertar los valores contenidos en el fichero de datos. Como salida se generan hasta tres ficheros de texto: Un fichero de resultados, con nombre por defecto terminado en .LOG, que contiene diversos informes sobre la realizacin del proceso de carga de datos. Un fichero de errores, con nombre por defecto terminado en .BAD, que contiene aquellos datos del fichero de entrada que no han podido ser cargados en la base de datos por diversos errores. Si la carga se ha realizado sin errores entonces no se genera este fichero. Un fichero de descartados, con nombre por defecto terminado en .DSC, que contiene aquellos datos del fichero de entrada que no han sido cargados en la base de datos porque as se haba especificado en el fichero de control. Si no se ha descartado ningn dato durante el proceso de carga no se genera este fichero. La diferencia entre los datos errneos y los descartados es que los primeros son aquellos datos que no han sido insertados en las tablas de la base de datos porque no han podido ser ledos correctamente desde el fichero de datos de entrada o bien su insercin causa errores de incumplimiento de restricciones definidas en las tablas, mientras que los datos descartados no se insertan en la base de datos porque no verifican una determinada condicin que puede imponerse en el fichero de control, de manera que tan solo se inserten los datos que satisfacen dicha condicin. Un concepto importante a la hora de trabajar con SQL*Loader es el de registro fsico y registro lgico. Suponiendo que el fichero de datos es de texto, un registro fsico es una lnea del fichero. Un registro lgico se corresponde con una fila o tupla de una tabla. La equivalencia entre estos dos tipos de registros puede ser cualquiera. Un registro fsico puede dar lugar a varios registros lgicos de manera que cada lectura de una lnea del fichero de entrada produce la escritura de varias filas en las tablas. Si por el contrario se necesitan varios registros fsicos para formar un registro lgico, se necesitar leer varias lneas del fichero de datos antes de proceder a la insercin de una fila. El caso ms sencillo y conveniente es cuando se produce la identidad entre ambos tipos de registro, en el cual cada - 51 - lectura de una lnea del fichero de datos puede generar una insercin en la base de datos. Mediante la adecuada especificacin del fichero de control puede programarse en cierta medida el proceso de carga de datos ya que se dispone de una cierta capacidad de especificacin de condiciones para determinar si los datos ledos han de insertarse o no en la base de datos. La estructura del fichero de datos de entrada puede ser fija o secuencial. Es fija si los valores estn dispuestos de forma invariable en posiciones determinadas del fichero de datos y secuencial si simplemente los valores estn colocados uno a continuacin del otro en cada lnea del fichero y separados por un carcter determinado. En la prctica pueden existir ficheros cuya estructura presente caractersticas de los dos tipos. No es obligatorio que los valores de todos los atributos o columnas del registro lgico aparezcan especificados en los campos del registro fsico; se pueden leer todos o tan solo parte de los atributos. Los atributos cuyos valores no aparecen en el fichero de datos se insertan en las tablas con valores nulos. Aunque el fichero de control permite una amplia gama de posibilidades para particularizar la carga de datos a las caractersticas del fichero de entrada, puede ser necesario o conveniente preprocesar los datos (por ejemplo, en un editor de texto) eliminando datos innecesarios, contenidos redundantes, etc. Si los datos a ser cargados estn ordenados segn algn atributo o combinacin de atributos entonces se puede aprovechar esta circunstancia para acelerar el proceso. Es muy interesante la posibilidad de insertar valores a determinados atributos de las tablas automticamente, sin necesidad de especificar dichos valores en el fichero de datos. Por ejemplo se puede tener un atributo en una tabla cuyo valor se vaya incrementando en una cantidad fija cada vez que se inserta una fila en esa tabla, o bien el valor a insertar para ese atributo es constante para cada fila insertada. Para ejecutar SQL*Loader se necesita especificar el nombre y palabra clave en el sistema Oracle de un usuario (usualmente el propietario) que disponga de permiso de insercin (NSERT) sobre las tablas en las que se van a cargar los datos. En la invocacin del programa se ha de especificar el fichero de datos a procesar y el fichero de control, de la siguiente manera: sqlload usuario/palabra_clave CONTROL=fichero_control, DATA=fichero_datos ACERCA DE SQL*Plus La herramienta que nos proporciona ORACLE para interactuar con la base de datos se llama SQL*Plus. Bsicamente, es un intrprete SQL con algunas opciones de edicin y formateo de resultados. SQL*Plus, se debe tener claros algunos conceptos: Usuario/Clave Para poder acceder a una base de datos gestionada por ORACLE debemos ser un usuario autorizado de la misma y conocer la palabra clave, #assword, asociada al usuario. Variable de ambiente ORACLE_SD ndica la base de datos con la que vamos a trabajar. - 52 - Posibilidades de Edicin SQL*Plus almacena en un !&ffer la ltima sentencia SQL introducida. El !&ffer mantiene slo una sentencia cada vez, y si se introduce una nueva sentencia se sobreescribe sobre la anterior. La sentencia en el !&ffer puede ser recuperada para ejecutarla de nuevo con los comandos: RUN que visualiza la sentencia en el !&ffer antes de ejecutarla; / que ejecuta la sentencia sin visualizarla. SQL*Plus tambin nos permite editar la sentencia SQL alamacenada en el !&ffer mediante un sencillo (y limitado) editor en lnea, cuyos comandos se enumeran a continuacin: %omando '!re2iat&ra Descri#cin APPEND texto A texto Aade texto al final de la lnea. CHANGE/fuente/destino C/fuente/destino Cambia el contenido 'fuente' por el 'destino' CHANGE/texto C/texto Quita 'texto' de una lnea. CLEAR BUFFER CL BUFF Borra el !&ffer DEL DEL Borra una lnea. NPUT nserta una o ms lneas. NPUT texto texto nserta una lnea con 'texto'. LST L Lista las lneas del !&ffer LST n L n n Lista la lnea n-sima. LST * L * Lista la lnea actual. LST LAST L LAST Lista la ltima lnea. LST m n L m n Lista las lneas desde la m-sima a la n- sima. Al contenido del !&ffer tambin se puede acceder desde el editor del Sistema Operativo. As, el buffer podr ser manipulado con las posibilidades del editor con el que estemos acostumbrados a trabajar. Al salir del editor se devuelve el control al SQL*Plus. Para conseguir trabajar con el editor del Sistema Operativo basta con colocar la variable DEFNE_EDTOR y luego llamar al editor. SQL> define_editor=vi SQL> edit Utilizacin de Ficheros SQL*Plus considera dos tipos de ficheros: de s#ool y de comandos. Un fichero de s#ool almacena los resultados de una consulta (o varias) en un fichero con la extensin .lst (o lo manda a la impresora). Los comandos asociados con los ficheros s#ool son - 53 - SPOOL fichero Manda el resultado de las consultas al fichero. SPOOL OUT Manda el resultado de las consultas a la impresora. SPOOL OFF Cierra el fichero de s#ool. EXT Al salir de SQL*Plus se cierran los ficheros de s#ool. Los archivos de comandos almacenan comandos SQL y SQL*Plus para ser editado, almacenado y/o ejecutado; y tienen por defecto la extensin .sql : Para editarlo se puede utilizar el comando edit fichero. Para ejecutarlo se utilizar el comando START fichero o @fichero El SQL*Plus nos proporciona ms posibilidades en relacin con los ficheros de comandos, la comunicacin con el usuario final y la generacin de informes. EXPORT La utilera EXPORT provee de una forma simple para transferir objetos de datos entre bases de datos de Oracle, inclusive si estas rediden en diferentes plataformas, con diferente hardaware y diferente configuracin de software. Cuando se ejecuta el EXPORT sobre una base de datos, objetos tales como las entidades son extradas, seguidas por sus objetos relacionados tales como: ndices, comentarios, accesos, como se ilustra en la figura. Un Export file es un archivo de Oracle en formato binario D&m# file que son normalmente ubicados en disco o cinta. Los D&m# files pueden ser transferidos utilizando FTP o fsicamente transportados a diferentes lugares. - 54 - Los archivos pueden entonces ser usados con la utilera MPORT para transferir datos entre bases de datos que no se encuentran conectadas en lnea o por red. Los archivos tambien pueden ser usados como respaldos, adems de los respaldos normales. Los D&m# flies de EXPORT solo pueden ser leidos por la utilera MPORT de Oracle, la versin del MPORT no debe ser mas reciente que la versin del EXPORT usado para crear los D&m# file. Pueden desplegarse tambin los contenidos de un archivo de EXPORT sin realizar el proceso de importar datos. Para hacer esto se debe usar el parmetro SHOW. MPORT La utilera MPORT lee la definicin de objetos de la entidad que se encuentra dentro de un archivo de EXPORT (D&m# file9: Para luego cual insertar los objetos en una base de datos de Oracle. A continuacin se ilustra el proceso de importacin desde un d&m# file;
DUMP FLE Los D&m# flies de EXPORT solo pueden ser leidos por la utilera MPORT de Oracle, la versin del MPORT no debe ser mas reciente que la versin del EXPORT usado para crear los D&m# file. mport puede leer archivos de EXPORT creados por versiones 5.1.22 en adelante. - 55 - Para leer datos de un archivo con formato ASC o delimitado debe usar la utilera SQL LOADER. ACERCA DE PROJECT BULDER Para ayudar a simplificar las tareas de administracin del software, Project Builder es utilizado para: 1. Asocia los mdulos con una aplicacin o componentes de una aplicacin 2. Automatiza las acciones basadas en tipos de archivos 3. Crea dependencias entre los mdulos e indica como son los cambios en cascada, en otras palabras, muestra cual de los mdulos necesita ser recompilado con base en los cambios de otros mdulos 4. Asigna cadenas de conexin por default para los mdulos 5. Designa que mdulos sern incluidos en el conjunto final instalable 6. Comparte los proyectos y subproyectos entre los miembros del equipo 7. nvoca a otros desarrollos en Develper desde la interfaz de Project Builder El administrador del proyecto carga la creacin del proyecto hacindolo disponible al equipo de desarrolladores. El project administrator mantiene el Registro Global y las modificaciones por si son necesarias, exportando los cambios hacia el equipo de desarrolladores. Los desarrolladores de igual forma pueden exportar la informacin del proyecto para diferentes ambientes, como un test de ambientes o desarrollo a la par en otras plataformas. El trabajo del administrador del proyecto es darle roles a los miembros del equipo: 1. Desarrolladores 2. Control de administracin del cdigo fuente 3. Testers (QA) 4. Controlador de versiones Obviamente las actividades precisas de cada miembro del equipo varan de un equipo de desarrollo a otro. Los miembros del equipo pueden tambin tomar uno o mas role, por ejemplo el lder del proyecto puede ser tambin el administrador, o un desarrollador puede ser tambin el que controle el cdigo fuente. ORACLE9 WAREHOUSE BULDER El mismo posee tecnologa OLAP ( Procesamiento Analtico en Lnea ), lider en la industria en software para soporte de desiciones y anlisis en general. As, los clientes pueden administrar y desempear anlisis multidimensionales complejos sobre grandes volmenes de informacin, que van desde GBs hasta TBs de datos. OTRAS UTLERAS Existen muchas otras utileras propias de Oracle, asi como tambin de otras marcas de Software que solo se mencioaran a continuacin: Terminating Threads with orakill Viewing Errors with the oerr Utility Memory Utilities Utilities for Starting and Stopping Databases - 56 - Starting and Stopping on Windows oraenv and coraenv Utilities Using orapwd to Connect Remotely as SYSDBA Package Utilities <=>? <tilities and Shell Scri#ts The dbms_alert Utility The utl_smtp Utility The OEMCTL Utility The dbme_xplan Utility The dbms_repair Utility TOAD 11. DESCRPCN DE FRONTENDS Y BACKENDS Los dos principales componentes de una aplicacin son el frontend (ejecutandose en el cliente) y backend (ejecutandose en el servidor). El backend juega diferentes roles pero puede ser implementados por el mismo ejecutable. Un frontend enva un paquete de inicio al postmaster. Este incluye los nombres del usuario y base de datos a la que el usuario quiere conectarse. El postmaster entonces utiliza esto, y la informacin en el archivo pg_hba.conf(5) para determinar que informacin adicional de autentificacin necesita del frontend (si existe) y responde al frontend en concordancia. El frontend enva entonces cualquier informacin de autentificacin requerida. Una vez que el postmaster valida esta informacin responde al frontend que est autentificado y entrega una conexin a un backend. El backend entonces enva un mensaje indicando arranque correcto (caso normal) o fallo (por ejemplo, un nombre de base de datos invlido). Las subsiguientes comunicaciones son paquetes de consulta y resultados intercambiados entre el frontend y backend. El postmaster no interviene ya en la comunicacin ordinaria de cosultas/resultados. Sin embargo el postmaster se involucra cuando el frontend desea cancelar una consulta que se est efectuando en su backend. Cuando el frontend desea desconectar enva un paquete apropiado y cierra la conexin sin esperar una respuesta del backend. Los paquetes son enviados como un flujo de datos. El primer byte determina que se debera esperar en el resto del paquete. La excepcin son los paquetes enviados desde un frontend al postmaster, los cuales incluyen la longitud del paquete y el resto de l. Esta diferencia es histrica. En general, cualquier lenguaje de programacin que se pueda conectar a una BD Oracle mediante ODBC, JDBC o con un conector propietario es frontend de Oracle. C C++ PHP - 57 - JAVA .NET VSUAL BASC DELPH Y los Backend con los que con los que puede interactuar Oracle, son por ejemplo SQL SERVER SYBASE PROGRESS DB2 JAVA Java es una plataforma virtual de software desarrollada por Sun Microsystems, de tal manera que los programas creados en ella puedan ejecutarse sin cambios en diferentes tipos de arquitecturas y dispositivos computacionales ( "Diferentes plataformas"). La #lataforma @a2a consta de las siguientes partes: El lenguaje de programacin, mismo. La mquina virtual de Java o JRE, que permite la portabilidad en ejecucin. El AP Java, una biblioteca estndar para el lenguaje. Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las caractersticas menos usadas y ms confusas de stos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes ms difundidos, por ello Java se dise para ser parecido a C++ y as facilitar un rpido y fcil aprendizaje. Java elimina muchas de las caractersticas de otros lenguajes como C++, para mantener reducidas las especificaciones del lenguaje y aadir caractersticas muy tiles como el garbage collector (reciclador de memoria dinmica). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello y como es un thread de baja prioridad, cuando entra en accin, permite liberar bloques de memoria muy grandes, lo que reduce la fragmentacin de la memoria. Java reduce en un 50% los errores ms comunes de programacin con lenguajes como C y C++ al eliminar muchas de las caractersticas de stos, entre las que destacan: aritmtica de punteros no existen referencias registros (struct) definicin de tipos (typedef) macros (#define) necesidad de liberar memoria (free) Aunque, en realidad, lo que hace es eliminar las palabras reservadas (struct, typedef), ya que las clases son algo parecido. Adems, el intrprete completo de Java que hay en este momento es muy pequeo, solamente ocupa 215 Kb de RAM. Oracle9i JDeveloper introduce Oracle ADF que ayudar a obtener mayor productividad al permitir que los desarrolladores se concentren en definir la lgica - 58 - del negocio para su aplicacin, en contraposicin con la escritura manual del cdigo de nivel bajo para implementar la aplicacin. Adicionalmente, genera en forma automtica el cdigo de infraestructura e implementa las mejores prcticas para ayudar a los desarrolladores a disear y crear aplicaciones J2EE y servicios Web optimizados y seguros para la empresa Con JDeveloper podrn definir su Alcance tecnolgico especificando la combinacin de tecnologas que quieran incorporar en sus aplicaciones y eligiendo su mtodo preferido para desarrollar la aplicacin. Por ejemplo, para crear un servicio web con el que los usuarios puedan interactuar a travs de una interface de portal, un desarrollador podra especificar que quiere usar Enterprise JavaBeans, Oracle9iAS TopLink, Struts y las herramientas relacionadas para desarrollar visualmente con Java, XML, SOAP, WSDL y portlets. Adems, podr elegir su mtodo preferido de desarrollo, como la generacin de cdigos controlados por wizards, modelado visual UML, etc. Una vez que el desarrollador haya definido el alcance de tecnologa para un proyecto dado, Oracle9i JDeveloper se reconfigurar dinmicamente para incorporar las tecnologas preferidas e implementar las opciones y herramientas que el desarrollador haya seleccionado. La configuracin resultante, llamada MyJDeveloper, permitir a las empresas estandarizarse en un nico entorno de desarrollo que cumpla con los requerimientos de una amplia gama de desarrolladores con diferentes habilidades y mtodos de desarrollo. PHP PHP es un lenguaje de programacin usado generalmente para la creacin de contenido para sitios web. PHP es el (acrnimo recursivo de "PHP: Hypertext Preprocessor", inicialmente PHP Tools, o, 8ersonal Aome 8age Tools) es un lenguaje interpretado usado para la creacin de aplicaciones para servidores, o - 59 - creacin de contenido dinmico para sitios web, y ltimamente tambin para la creacin de otro tipo de programas incluyendo aplicaciones con interfaz grfica usando la librera GTK+. Su interpretacin y ejecucin se da en el servidor, en el cual se encuentra almacenado el script, y el cliente slo recibe el resultado de la ejecucin. Cuando el cliente hace una peticin al servidor para que le enve una pgina web, generada por un script PHP, el servidor ejecuta el intrprete de PHP, el cual procesa el script solicitado que generar el contenido de manera dinmica, pudiendo modificar el contenido a enviar, y regresa el resultado al servidor, el cual se encarga de regresrselo al cliente. Adems es posible utilizar PHP para generar archivos PDF, Flash, as como imgenes en diferentes formatos, entre otras cosas. Permite la conexin a diferentes tipos de servidores de bases de datos tales como MySQL, Postgres, Oracle, ODBC, BM DB2, Microsoft SQL Server y SQLite; lo cual permite la creacin de Aplicaciones web muy robustas. PHP tambin tiene la capacidad de ser ejecutado en la mayora de los sistemas operativos tales como UNX (y de ese tipo, como Linux), Windows y Mac OS X, y puede interactuar con los servidores de web ms populares ya que existe en versin CG, mdulo para Apache, e SAP. El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza ASP.NET/C#/VB.NET, a ColdFusion de la compaa Macromedia, a JSP/Java de Sun Microsystems, y al famoso CG/Perl. Aunque su creacin y desarrollo se da en el mbito de los sistemas libres, bajo la licencia GNU, existe adems un compilador comercial llamado Zend Optimizer. VSUAL BASC Visual Basic es uno de los tantos lenguajes de programacin que podemos encontrar hoy en da. Dicho lenguaje nace del BASC (Beginners All-purpose Symbolic nstruction Code) que fue creado en su versin original en el Dartmouth College, con el propsito de servir a aquellas personas que estaban interesadas en iniciarse en algn lenguaje de programacin. Luego de sufrir varias modificaciones, en el ao 1978 se estableci el BASC estndar. La sencillez del lenguaje gan el desprecio de los programadores avanzados por considerarlo "un lenguaje para principiantes". Primero fue GW-BASC, luego se transform en QuickBASC y actualmente se lo conoce como Visual Basic y la versin ms reciente es la 6 que se incluye en el paquete Visual Studio 6 de Microsoft. Esta versin combina la sencillez del BASC con un poderoso lenguaje de programacin Visual que juntos permiten desarrollar robustos programas de 32 bits para Windows. Esta fusin de sencillez y la esttica permiti ampliar mucho ms el monopolio de Microsoft, ya que el lenguaje slo es compatible con Windows, un sistema operativo de la misma empresa. Visual Basic ya no es ms "un lenguaje para principiantes" sino que es una perfecta alternativa para los programadores de cualquier nivel que deseen desarrollar aplicaciones compatibles con Windows. Este ejemplo realiza una consulta a una base de datos oracle mediante RDO (Microsoft Remote Data Object 2.0) y ODBC. Para ejecutarlo correctamente se deben seguir los siguientes pasos: - 60 - 1. Guardar todos los archivos de este programa ejemplo (*.vbp, *.frm, *.bas) en alguna carpeta del disco duro 2. nstalar en el cliente los drivers de ODBC de Oracle, por ejemplo instalando un cliente oracle (SQL * Plus...) 3. r al panel de control 4. ra ODBC 5. En la pestaa DSN de sistema, pulsar "Agregar" 6. Seleccionar "Oracle ODBC Driver" y pulsar "Finalizar" 7. Escribir algn identificativo en "Data Source Name" y pulsar "OK" 8. Ejecutar el proyecto Visual Basic 9. Si la conexin es a la base de datos por defecto, el parmetro "Connect" del OpenDatabase puede especificarse como: DSN=oracle;odbc;uid=scott;pwd=tiger 10. Si la conexin es a una base de datos remota, el parmetro "Connect" del OpenDatabase puede especificarse como: DSN=oracle;odbc;database=ORCL@tcp-loopback;uid=scott;pwd=tiger donde tcp-loopback es un identificativo de cadena de conexin del fichero tnsnames.ora Tcp-loopback.world = (DESCRPTON = (ADDRESS_LST = (ADDRESS = (PROTOCOL = TCP) (Host = 127.0.0.1) (Port = 1521) ) ) (CONNECT_DATA = (SD = ORCL) ) ) C%igo #&ente A continuacin se muestra el cdigo de los ficheros que componen el proyecto rdo_ora.vbp Type=Exe Reference=*\G{EE008642-64A8-11CE-920F- 08002B369A33}#2.0#0#C:\WNNT\System32\msrdo20.dll#Microsoft Remote Data Object 2.0 Module=bas_rdo_ora; rdo_ora.bas Startup="Sub Main" HelpFile="" Command32="" Name="rdo_ora" HelpContextD="0" CompatibleMode="0" MajorVer=1 MinorVer=0 - 61 - RevisionVer=0 AutoncrementVer=0 ServerSupportFiles=0 VersionCompanyName="Universidad de Deusto" CompilationType=0 OptimizationType=0 FavorPentiumPro(tm)=0 CodeViewDebugnfo=0 NoAliasing=0 BoundsCheck=0 OverflowCheck=0 FlPointCheck=0 FDVCheck=0 UnroundedFP=0 StartMode=0 Unattended=0 ThreadPerObject=0 MaxNumberOfThreads=1 rdo_ora.bas Attribute VB_Name = "bas_rdo_ora" Option Explicit Global rdoEnvironment1 As rdoEnvironment Global rdoConnection1 As rdoConnection Sub main() Dim rs1 As rdoResultset Set rdoEnvironment1 = rdoEngine.rdoEnvironments(0) Set rdoConnection1 = rdoEnvironment1.OpenConnection("oracle", False, True, "DSN=oracle;odbc;database=ORCL@tcp-loopback;uid=scott;pwd=tiger") 'Set rdoConnection1 = rdoEnvironment1.OpenConnection("oracle", False, True, "DSN=oracle;odbc;uid=scott;pwd=tiger") Set rs1 = rdoConnection1.OpenResultset("select * from emp") ' por defecto es forward-only MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) rs1.MoveNext MsgBox rs1("EMPNO") & "-" & rs1("ENAME") & "-" & rs1("JOB") 'rs1.MovePrevious 'Esta instruccion producira un error porque el tipo de rs1 es forward-only Set rs1 = rdoConnection1.OpenResultset("select * from emp", rdOpenStatic) MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) rs1.MoveNext MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) rs1.MovePrevious MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) Set rs1 = rdoConnection1.OpenResultset("select * from emp", rdOpenKeyset) MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) End End Sub - 62 - SQL SERVER Microsoft SQL Server 7.0 constituye un lanzamiento determinante para los productos de bases de datos de Microsoft, continuando con la base slida establecida por SQL Server 6.5. Como la mejor base de datos para Windows NT, SQL Server es el RDBMS de eleccin para una amplia gama de clientes corporativos y Proveedores ndependientes de Software (SVs) que construyen aplicaciones de negocios. Las necesidades y requerimientos de los clientes han llevado a la creacin de innovaciones de producto significativas para facilitar la utilizacin, escalabilidad, confiabilidad y almacenamiento de datos.
12. MOSTRAR UN EJEMPLO PRCTCO DE UNA APLCACN El ejemplo que se va a desarrollar es el Sistema de Control de Vajillas, se va a disear en Designer, el case de Oracle y se utilizar el De2elo#er para desarrollar la aplicacin. La descripcin del Ejemplo es el siguiente: SSTEMA CONTROL DE VAJLLAS La alquiladora de vajillas "Nava, requiere de un sistema de cmputo. Este sistema debe de incluir los mdulos para el control de inventarios, pedidos y facturacin. Para tal efecto se deben de tomar en cuenta las siguientes consideraciones: Un pedido puede contener uno o varios productos. Una factura puede tener uno o varios productos correspondientes a uno o varios pedidos. Un cliente puede rentar uno o varios productos. Un producto puede ser rentado a varios clientes. Por lo que las entidades originales a considerar, junto con sus atributos son los siguientes: PRODUCTO, con atributos cveprod, costorentaprod, existenciaprod, cantidadprod, descprod y colorprod. CLENTE, con atributos cvecte, nombrecte, domcte, telcte y nombreadicional. PEDDO, con atributos cvepedido y fechapedido. FACTURA, con atributos cvefact, fechafact y montofact. Con base en los argumentos y en las entidades descritas, realiza las siguientes actividades: a. Disea el MER, considerando la siguiente caracterstica: Un producto (en su totalidad) o diferentes productos, pueden facturarse en una sola factura o en varias facturas. Por ejemplo un pedido puede contener los siguientes productos: 100 sillas, 20 mesas y 20 manteles, y este puede facturarse de la siguiente manera: factura 1 (F1) 100 sillas, factura 2 (F2) 20 mesas y 20 manteles. Es decir, el total de cada producto NECESARAMENTE debe estar en - 63 - una factura, y esta a su vez puede contener adicionalmente ms productos (en su totalidad). El Modelo Entidad-Relacin es el siguiente: El Prototipo de Pantalla de Pedidos es el siguiente: Siste!a e Control e Va"illas No. Peio$ Fec'a$ No. e Cliente$ No!(re el Cliente$ Total el Peio$ ) Total Cost o Unitario Cantia C*e. Pro&cto Descripci%n Grabar Borrar Cancelar Alcance: La aplicacin a desarrollar comprender la captura de los pedidos y la elaboracin de las facturas. Consideraciones y Validaciones: Se generar en automtico el No. de Pedido y se pondr en automtico la fecha del pedido, al introducir el nmero de cliente, se va a desplegar el nombre del cluente. Al seleccionar una clave de producto, se desplegar su descripcin y el costo unitario de la renta. Se capturar la cantidad a rentar y se desplegar en automtico el total de la renta del producto. El total del pedido se va a ir actualizando automticamente cuando se d la alta de un producto.Un pedido no se podr borrar si existe una factura ligada a l. - 64 - 13. EXPLCAR SU LENGUAJE DE PROGRAMACN NATVO CON EJEMPLOS PRCTCOS EN EL CASO DE SQL LSTAR SUS EXTENSONES Y AGREGADOS PL/SQL es una extensin procedural de Oracle para el estndar SQL. PL/SQL es naturalmente eficiente con el uso y manipulacin de SQL. Es una herramienta que trabaja del lado del servidor y se almacena en un lenguaje procedural, es fcil de usar y al igual que SQL es robusto, portable y seguro. Del lado del servidor PL/SQL no necesita de instalaciones explicitas, es una parte implcita en la BD Oracle y en los documentos tales como Furthermore, el compilador PL/SQL y el interprete estn integrados en el Oracle Developer, lo cual proporciona a los desarrolladores un modelo consistente de desarrollo liberable tanto en el cliente como en el servidor. Adicionalmente PL/SQL almacena procedimientos que pueden ser llamados desde un nmero de clientes Oracle tales como Pro*C o Oracle Call nterface, y tambin desde Oracle Reports y Oracle Forms (Developer). Lenguaje SQL y PL/SQL. Caractersticas de SQL. El lenguaje SQL es una abreviatura de Structured Query Language (Lenguaje de Estructuras de Consultas) y es una herramienta que se utiliza para organizar, gestionar y recuperar datos que se encuentran almacenados en una base de datos y que tambin se utiliza para poder interaccionar con estas y que trabaja con las bases de datos relacionales, que fue propuesto por el Dr. E.F. Codd, quien propuso el modelo relacional para los sistemas de bases de datos en 1970. El modelo relacional contiene los siguientes componentes: Una coleccin de objetos o relaciones. Poner las operaciones para actuar en las relaciones. ntegridad de los datos con precisin y consistencia. Oracle fue el primer fabricante que ofreci un producto que usaba el lenguaje de consulta estructurado (SQL), basado en el ingls, esto permite a los usuarios finales extraer su informacin por si mismos. El servidor ORACLE 7 soporta el estndar ANS para SQL, y contiene las extensiones, SQL es el lenguaje empleado para comunicarse con el servidor para acceder, manipular y controlar los datos de acceso. El lenguaje de consultas de Oracle es un lenguaje estructurado, tiene reglas de gramtica y de sintaxis, pero son parecidas a las del idioma ingls. Por lo tanto Oracle es capaz de responder a cuestiones como: cul es el nombre? de la persona que tiene el nmero de Clave = 3; de una manera rpida y sencilla, utilizando palabras clave como son select (seleccionar), from (de), where (donde), cuyas palabras ayudan a Oracle a comprender la peticin y lograr una respuesta correcta. En la siguiente figura podemos ver cmo funciona SQL, el sistema informtico tiene una base de datos que almacena informacin importante, este programa - 65 - informtico controla la base de datos y recibe el nombre de Sistema Manejador de Bases de Datos (Data Base Management System) o DBMS. Cuando requerimos de recuperar datos de alguna base de datos, hacemos uso del lenguaje SQL para realizar nuestras peticiones. El DBMS procesa las peticiones SQL, entonces recupera los datos solicitados y los enva de nuevo, a este proceso de solicitar datos y recibir los resultados de la base de datos se le denomina consulta (query) a la base de datos, de ah que el lenguaje SQL signifique Structured Query Language.
Lo que hace que SQL sea un lenguaje que es fcil de comprender y una herramienta completa para poder gestionar datos, y podemos mencionar algunas de las principales caractersticas de SQL: Su portabilidad a travs de los sistemas informticos. Los datos que provienen de bases de datos basadas en SQL pueden ser extradas remitidas de bases de datos institucionales o personales. Los estndares SQL. Ha sido publicado un estndar oficial para SQL por El American National Standards nstitute (ANS) y la international Standards Organization (SO), que le sirven como sello oficial de aprobacin debido a su aceptacin en el mercado. Fundamento relacional. El lenguaje SQL se utiliza para bases de datos relacionales y que han tenido una gran difusin justamente por el fundamento terico en el que se basa el modelo relacional de bases de datos, por lo cual SQL se ha convertido en el lenguaje de bases de datos para las bases de datos relacionales. Estructura. Las sentencias en SQL son frases sencillas en ingls que lo hacen fcil de comprender y aprender. Arquitectura cliente-servidor. Una de las grandes ventajas del SQL es que se puede implementar en una arquitectura cliente-servidor. A continuacin se dar una perspectiva general del lenguaje, as como su funcionamiento e ilustrando algunas de sus caractersticas importantes, cabe mencionar que hay muchos comandos disponibles en SQL. Sentencias Mani#&lacin de datos; SELECT: Esta sentencia recupera los datos en la base de datos que se desee. SQL> SELECT CVE,DESCRPCON - 66 - 2 FROM TPOBEN; CVE DESCRPCON ------------ ---------------------------------------- 5402247 FERMENTADOR 5402248 BORRADORA DE CNTAS 5402253 CAMARA DE PRESON 5402254 FLAMOMETRO 5402256 EVALUADOR 5402259 EQUPO PARA ENTRENAMENTO 5402260 DEMULADOR 5402262 EQ, PARA PRUEBA DE ABLANDAMENTO 5402266 MAQ. PARA DETERMNAR OCTANAJE 5402267 EQ. P/ DETERM. CONTAMNACON ATMOSFERCA 5402268 COLUMNA DE ENFRAMENTO 5402270 TRAMPAS 5402271 CAPACTORES 5402272 SENSORES 5402273 REFRGERADOR 14 rows selected. La sentencia select, pide dos datos, que son, la clave (CVE) del bien as como la descripcin de ste, que se encuentran en una tabla llamada TPOBEN. NSERT: Aade nuevas filas de datos a la base de datos. DELETE: Suprime filas de datos de la base de datos. UPDATE: Modifica datos existentes en la base de datos. Definicin de datos; CREATE TABLE: Aade una nueva tabla a la base de datos. DROP TABLE: Suprime una tabla de la base de datos. ALTER TABLE: Modifica la estructura de una tabla existente. CREATE VEW: Aade una nueva vista a la base de datos. DROP VEW: Suprime una lista de la base de datos. CREATE NDEX: Construye un ndice para una columna. DROP NDEX: Suprime el ndice para una columna. CREATE SYNONYM: Define un alias para un nombre de tabla. DROP SYNONYM: Suprime un alias para un nombre de tabla. LABEL: Define el ttulo de una columna. %ontrol de transacciones; COMMT: Finaliza la transaccin actual. ROLLBACK: Aborta la transaccin actual. Caractersticas de PL/SQL. El PL/SQL es un lenguaje de procedimientos para SQL para escribir aplicaciones lgicas y para poder manipular los datos fuera de la base de datos. En la siguiente figura se muestra el bloque de una estructura en PL/SQL y que est formado por: - 67 - Header . Contiene los nombres de los subprogramas, tipos y argumentos, slo usados por los subprogramas. Declaration . Contiene los identificadores locales para el bloque. Executable . Contiene las sentencias SQL y las sentencias de control PL/SQL. Exception . La seccin EXCEPTON de un bloque PL/SQL es el punto al que se transfiere el control del programa siempre que se active un indicador de excepcin. Los indicadores de excepcin son definidos por el usuario o excepciones del sistema activadas automticamente por PL/SQL. PL/SQL significa Procedural Language/SQL, es un lenguaje de programacin que se utiliza para acceder a bases de datos ORACLE. PL/SQL est integrado con el servidor de bases de datos, de modo que el cdigo PL/SQL, puede ser procesado de forma rpida y eficiente. Como su nombre lo indica, PL/SQL ampla la funcionalidad de SQL aadiendo estructuras de las que pueden encontrarse en otros lenguajes procedimentales, como: Variables y tipos (tanto predefinidos como definidos por el usuario). Estructuras de control, como bucles y rdenes F-Then-Else. Procedimientos y funciones. Tipos de objetos y mtodos(en PL/SQL versin 8 o superior). Estructuras de Control PL/SQL. PL/SQL, como otros lenguajes de tercera generacin, tiene diversas estructuras de control que permiten controlar el comportamiento del bloque a medida que ste se ejecuta. Estas estructuras incluyen las rdenes condicionales y los bucles. >,BTA/=B/)S/ La sintaxis para una orden F-THEN-ELSE es: F eC#resinD!ooleana1 THEN sec&enciaDdeDrdenes1; [ ELSF eC#resinD!ooleana2 THEN sec&enciaDdeDrdenes2E ] [ ELSE sec&enciaDdeDrdenesF; ] END F; Donde las Expresiones booleanas son: - 68 - Todas las estructuras de control PL/SQL (excepto GOTO) incluyen expresiones booleanas, tambin denominadas condiciones. Una expresin booleana es una expresin que tiene como resultado un valor booleano (TRUE, FALSE o NULL). As que de la sintaxis de F-THEN-ELSE, la expresin_booleana es cualquier expresin que d como resultado un valor booleano. Las clusulas ELSF y ELSE son opcionales, y puede haber tantas clusulas ELSF como se desee. Y finalmente se termina la condicin F con un END F. $<%)/S PL/SQL permite ejecutar rdenes de forma repetida, utilizando los bucles. Existen cuatro tipos de bucles: bucles simples, bucles WHLE y bucles FOR numricos. Bucles simples Son el tipo de bucle ms bsico. Su sintaxis es: LOOP sec&enciaDdeDrdenes; END LOOP; Para este caso la sec&enciaDdeDrdenes se ejecutar indefinidamente, puesto que este bucle no tiene ninguna condicin de parada, pero para poder finalizar este bucle se puede agregar la condicin EXT, cuya sintaxis es: EXT [ WHEN condicin ]; Bucles WHLE La sintaxis de un bucle WHLE es: WHLE condicin LOOP sec&enciaDdeDrdenes; END LOOP; La condicin se evala antes de cada iteracin del bucle. Si es verdadera, se ejecuta la sec&enciaDdeDrdenes. Si la condicin es falsa o nula, el bucle termina y el control se transfiere a lo que est a continuacin de la orden END LOOP. Bucles FOR numricos El nmero de iteraciones de los bucles simples y de los bucles WHLE no se conoce de antemano, sino que depende la condicin de bucle. Los bucles FOR numricos, por el contrario, tienen un nmero de iteraciones definido. La sintaxis es: FOR contadorD!&cle N [ REVERSE ] lmiteDinferior lmiteDs&#erior LOOP sec&enciaDdeDrdenes END LOOP; Donde contadorD!&cle es la variable de ndice declarada de modo explcito, lmiteDinferior y lmite s&#erior especifican el nmero de iteraciones y sec&enciaDdeDrdenes es el contenido del bucle. Los lmites del bucle slo se evalan una vez. Dichos valores determinan el nmero total de iteraciones, en las que contadorD!&cle vara entre los valores lmiteDinferior y lmiteDs&#erior incrementndose en una unidad cada vez ms, hasta que el bucle se completa. Si se incluye la palabra clave REVERSE en el bucle FOR, el ndice del bucle realizar las iteraciones desde el lmite superior al lmite inferior. - 69 - Procedimientos y Funciones. Los procedimientos y funciones de PL/SQL, se comportan de manera muy similar a los procedimientos y funciones de otros lenguajes de tercera generacin. A los procedimientos y funciones se les denomina tambin colectivamente subprogramas. Creacin de un procedimiento La sintaxis para la orden CREATE OR REPLACE PROCEDURE es: CREATE [ OR REPLACE ] PROCEDURE nom!reD#rocedimiento [ (arg&mento [ { N | OUT | N OUT } ] ti#o, . arg&mento [ { N | OUT | N OUT } ] ti#o ) ] { S | AS } c&er#oD#rocedimiento Donde nom!reD#rocedimiento es el nombre del procedimiento que se quiere crear, arg&mento es el nombre de un parmetro del procedimiento, ti#o es el tipo del parmetro asociado y c&er#oD#rocedimiento es un bloque PL/SQL, que contiene el cdigo del procedimiento. Los parmetros formales pueden tener tres modos: N, OUT o N OUT, si no se especifica el modo de un parmetro formal, se adopta, por defecto, el modo N. N . El valor del procedimiento real se pasa al procedimiento cuando ste es invocado. Cuando termina el procedimiento, y se devuelve el control al entorno que realiz la invocacin, el parmetro real no sufre cambios. OUT . Se ignora cualquier valor que tenga el parmetro real cuando se llama al procedimiento . Dentro del procedimiento, el parmetro formal se considera como de slo escritura, no puede ser ledo, sino que tan slo pueden asignrsele valores. Cuando termina el procedimiento y se devuelve el control al entorno que realiz la llamada, los contenidos del parmetro formal se asignan al parmetro real. N OUT. Este modo es una combinacin de N y OUT. El valor del parmetro real se pasa al procedimiento cuando ste es invocado. Dentro del procedimiento, el parmetro formal puede ser tanto ledo como escrito. Cuando termina el procedimiento y se devuelve el control al entorno que realiz la llamada, los contenidos del parmetro formal se asignan al parmetro real. Sintaxis de las Funciones La sintaxis para crear una funcin almacenada es muy similar a la de un procedimiento: CREATE [ OR REPLACE ] FUNCTON nom!reDf&ncin [ (arg&mento [ { N | OUT | N OUT } ] ti#o, arg&mento [ { N | OUT | N OUT } ] ti#o ) ] RETURN ti#oDretorno { S | AS } c&er#oDf&ncin Donde nom!reDf&ncin es el nombre de la funcin, arg&mento y ti#o son iguales que para un procedimiento, ti#oDretorno es el tipo del valor que devuelve la - 70 - funcin y c&er#oDf&ncin es un bloque PL/SQL que contiene el cdigo de la funcin. Cursores Para procesar una orden SQL. ORACLE asigna un rea de memoria que recibe el nombre de rea de contexto. Esta rea contiene las informaciones necesarias para completar el procesamiento, incluyendo el nmero de filas procesadas por la orden, un puntero a la versin analizada de la orden y, en el 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 el cursor, un programa PL/SQL puede controlar el rea de contexto y lo que en ella suceda a medida que se procesa la orden. Manejo de cursores El conjunto de filas resultantes de una consulta con la sentencia S/)/%T, 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 S/)/%T. Los pasos para el manejo de cursores, tema novedoso en la programacin de 1racle con 8)/S.), son: - Definir el cursor, especificando la lista de parmetros con sus correspondientes tipos de datos y estableciendo la consulta a realizar con la sentencia S/)/%T. - 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. Declaracin de un cursor La declaracin de un cursor define su nombre, y asocia el cursor con una orden SELECT. La sintaxis es: CURSOR empleados S select * from VistaEmpleado where to_number(Expe) = to_number(vClave); De donde empleados es el nombre del cursor y a partir del SELECT es la consulta que el cursor procesar. Paquetes. Es una estructura PL/SQL que permite almacenar juntos una serie de objetos relacionados. Un paquete tiene dos partes diferenciadas, la especificacin y el cuerpo del paquete, cada una de ellas se almacena por separado en el diccionario de datos. a diferencia de los procedimientos y funciones, que pueden ser almacenados en la base de datos, un paquete no puede ser local, slo puede almacenarse. Especificacin de un paquete - 71 - La especificacin o cabecera del paquete contiene informacin, acerca del contenido del paquete y no contiene el cdigo de los procedimientos. La sintaxis general para la creacin de una cabecera es la siguiente. %reate or re#lace #ac"age !ien= is GsRutaMenu varchar2(200):='http://gtid.imp.mx:8025/hard/plsql/inventario.'; GsRutaMenuVar varchar2(200); GsRutaProc varchar2(200):='http://gtid.imp.mx:8025/hard/plsql/procGeneralN.'; GsRutaBien varchar2(200):='http://gtid.imp.mx:8025/hard/plsql/bienN.'; GnClavenv1 number(6):= 6420; GnClavenv2 number(6) := 13767; Procedure Pidenv(vClave in varchar2, vPw in varchar2, vClaveSU in VARCHAR2 default '0'); Procedure AsignaAUsuario(vNonv in varchar2,vClave in varchar2, vPw in varchar2, vClaveSU in VARCHAR2 default '0'); Procedure confirmaAsignacion(vClave in varchar2,vNonv in varchar2,vPw in varchar2, vClaveSU in VARCHAR2 default '0'); Procedure RegresaAVerifica(vNonv N VARCHAR2); end; De donde !ien= es el nombre del paquete y los elementos del paquete esta conformado por especificaciones de procedimientos y funciones, variables, etc. y finalmente se termina la cabecera del paquete con un end. Cuerpo del paquete El cuerpo del paquete es un objeto del diccionario de datos distinto de la cabecera. El cuerpo no puede ser compilado a menos que se haya previamente compilado la cabecera correspondiente. create or replace package body bienN is Procedure Pidenv(vClave in varchar2, vPw in varchar2, vClaveSU in VARCHAR2 default '0') is CURSOR empleados S select * from VistaEmpleado where to_number(Expe) = to_number(vClave); si_hay number; usuario varchar2(40); BEGN procGeneralN.niFor; si_hay:=0; for reg in empleados loop si_hay := si_hay + 1; usuario := reg.Nomb; end loop; if si_hay = 0 then procGeneralN.MError('Usted no es empleado activo en el MP'); else htp.formopen(GsRutaBien||'AsignaAUsuario','post'); htp.print('USUARO AUTORZADO '||usuario); - 72 - htp.print('<font face="Arial, Helvetica, sans-serif" color="#000000" size=2>'); htp.print('N'||procGeneralN.ce('u')||'mero de inventario del Bien que desea asignarse'); htp.br; htp.p('<font color="blue"><B>No. de nventario :</B></font>'); htp.formtext('vNonv','7','7'); htp.formhidden('vClave',vClave); htp.formhidden('vPw',vPw); htp.formhidden('vClaveSU',vClaveSU); htp.formSubmit('','ACEPTAR'); htp.formReset('CANCELAR','OnClick="history.go(-1)"'); htp.print('<font color="red"><B>NOTA:</B></font> El n'|| procGeneralN.ce('u')||'mero de inventario es el que aparece en la placa que tiene el c'||procGeneralN.ce('o')||'digo de barras.'); htp.br; htp.print('Si su bien no lo tiene, favor de reportarlo a la Coordinaci'|| procGeneralN.ce('o')||'n de Almacenes e nventarios, indicando su ubicaci'|| procGeneralN.ce('o')||'n.'); htp.br; procGeneralN.eMail_nventarios; htp.formClose; end if; GsRutaMenuVar:=GsRutaMenu||'menu?vClave='||vClave||chr(38)||'vPw='|| vPw||chr(38)||'vClaveSU='||vClaveSU; procGeneralN.FinFor(GsRutaMenuVar); end; El cuerpo del paquete contiene el cdigo correspondiente a las declaraciones formales incluidas en la cabecera. Cualquier declaracin formal de la cabecera del paquete debe estar en el cuerpo del paquete. La especificacin del procedimiento o funcin debe ser la misma en ambos sitios, incluyendo el nombre del subprograma, los nombres de sus parmetros y los modos de stos. Programacin PL/SQL. Oracle es un producto que usa el lenguaje de consulta estructurado (SQL), y una de los lenguajes nativos con los que cuenta Oracle es PL/SQL, lo que permite una trasparencia entre el Servidor Oracle, la herramienta PL/SQL , otras herramientas como son Designer Developer y el propio Web-Server. El programar con PL/SLQ permite generar aplicaciones muy diversas, eficaces y rpidas, por ser un lenguaje embebido de Oracle que soporta SQL de una forma muy transparente. Ejemplos del uso de SQL dinmicos, Funciones y Procedimientos PL/SQL y Cursores en Oracle. SQL dinmico Ejemplos de generacin de SQL mediante SQL create table persona (nombre varchar2 (20)); - 73 - insert into persona values ('pepe'); insert into persona values ('rosa'); insert into persona values ('juan'); select nombre from persona; select 'hola ' || nombre from persona; select nombre, nombre from persona; select nombre || ' es ' || nombre "Algunas tautologas" from persona; select nombre from persona; create user begoa identified by begoa; grant connect, resource to begoa; select 'create user ' || nombre || ' identified by ' || nombre || ';' from persona; select 'grant connect, resource to ' || nombre || ';' from persona; set heading off set feedback off spool c:\ejemplo0001.sql select 'create user ' || nombre || ' identified by ' || nombre || ';' from persona; select 'grant connect, resource to ' || nombre || ';' from persona; spool off set feedback on set heading on Funciones PL/SQL Ejercicio 1. Crear una funcin pl/sql que duplica la cantidad recibida como parmetro --Funcin que duplica la cantidad recibida como parmetro CREATE OR REPLACE FUNCTON duplicador(valor number) RETURN number S BEGN return (valor * 2); END; / show errors var x number; EXEC :x := duplicador(5); print x Ejercicio 2. Crear una funcin pl/sql llamada factorial que devuelva el factorial de un nmero, por ejemplo 5! = 1 * 2 * 3 * 4 * 5 = 120 --Clculo del factorial de un nmero CREATE OR REPLACE FUNCTON factorial (pNum number ) RETURN number S BEGN if pNum = 0 then return 1; else return pNum * factorial(pNum - 1); end if; END; - 74 - / show errors var x number; EXEC :x := factorial(5); print x; Procedimientos PL/SQL Ejercicio 1. Crear un procedimiento pl/sql que muestra los nmeros desde el 1 hasta el valor pasado como parmetro. --Mostrar los nmeros del 1 al parametro CREATE OR REPLACE PROCEDURE mostrarNumeros1Ub (Ub number ) S vCont number; BEGN -- vContamos de 1 a Ub vCont := 0; loop vCont := vCont + 1; exit when vCont > Ub; dbms_output.put_line('teracin nmero ' || vCont); end loop; END; / show errors set serveroutput on; EXEC mostrarNumeros1Ub(5); Ejercicio 2. Modificar el procedimiento del Ejercicio 1 para que muestre nmeros desde un valor inferior hasta uno superior con cierto salto. --Mostrar los nmeros del Lb a Ub con un salto CREATE OR REPLACE PROCEDURE mostrarNumerosLbUbStep (pLb N number, pUb N number, pStep N number DEFAULT 1) S vCont number; BEGN -- contamos de pLb a pUb vCont := pLb-pStep; loop vCont := vCont + pStep; exit when vCont > pUb; dbms_output.put_line('teracin nmero ' || to_char((vCont- pLb+pStep)/pStep)); end loop; END; / show errors set serveroutput on; - 75 - EXEC mostrarNumerosLbUbStep(1990,1995,0.5); EXEC mostrarNumerosLbUbStep(1990,1995,0.1); EXEC mostrarNumerosLbUbStep(1990,1995,2); Ejercicio 3. Modificar el procedimiento del Ejercicio 1 para que inserte los nmeros en una tabla. --creacin de objetos create table numeros(numero number); delete from numeros; insert into numeros values(1); insert into numeros values(2); insert into numeros values(3); --Mostrar los nmeros del 1 al parametro CREATE OR REPLACE PROCEDURE mostrarNumeros1Ub (Ub number) S vCont number; BEGN -- vContamos de 1 a Ub vCont := 0; loop vCont := vCont + 1; exit when vCont > Ub; insert into numeros values(vCont); --dbms_output.put_line('teracin nmero ' || vCont); end loop; END; / show errors set serveroutput on; EXEC mostrarNumeros1Ub(5); Cursores SQL Ejemplo de cursor SQL --Este procedimiento contiene un cursor SQL que recorre y muestra --los nmeros de la tabla NUMEROS que sean menores o iguales al parmetro CREATE OR REPLACE PROCEDURE recorreNumeros1 (pUb N number DEFAULT 100) is vNum number; CURSOR cNumeros S SELECT numero FROM NUMEROS WHERE NUMEROS.numero <= pUb; BEGN OPEN cNumeros; loop FETCH cNumeros NTO vNum; exit when cNumeros%NOTFOUND; dbms_output.put_line('Nmero ' || vNum); end loop; CLOSE cNumeros; END; - 76 - / show errors set serveroutput on; delete from numeros; EXEC insertaNumerosLbUbStep(1,10); select * from numeros; EXEC recorreNumeros1(5); Otra forma de codificarlo es: --Este procedimiento contiene un cursor SQL que recorre y muestra --los nmeros de la tabla NUMEROS que sean menores o iguales al parmetro CREATE OR REPLACE PROCEDURE recorreNumeros2 (pUb N number DEFAULT 100) is CURSOR cNumeros S SELECT numero, texto FROM NUMEROS WHERE NUMEROS.numero <= pUb; regNum cNumeros%ROWTYPE; BEGN OPEN cNumeros; loop FETCH cNumeros NTO regNum; exit when cNumeros%NOTFOUND; dbms_output.put_line('Nmero ' || regNum.numero || ' ' || regNum.texto); end loop; CLOSE cNumeros; END; / show errors set serveroutput on; delete from numeros; EXEC insertaNumerosLbUbStep(1,10); select * from numeros; EXEC recorreNumeros2(5); - 77 - BBLOGRAFA Y FUENTES DE NFORMACN "Guia para Desarrolladores de Oracle " Autor Carol McCullough-Dieter Edit. Anaya Multimedia "Oracle Manual de administrador" Autor: Kevin Loney Edit.: Mc. Graw Hill "Oracle 7 Manual de Referencia Autor: George Koch Edit.: Mc. Graw-Hill http://otn.oracle.com/tech/linux/content.html http://www.redcientifica.com/oracle http://otn.oracle.com/products/oracle9i/datasheets/iots/iot_ds.html http://otn.oracle.com/products/oracle9i/datasheets/advanced_security/aso_rel2.htm l http://otn.oracle.com/products/oracle9i/datasheets/ols/OLS9iR2_ds.html http://otn.oracle.com/tech/pl_sql/content.html - 78 -