Indice # 1 | Indice general |
Introducción al ORACLE
Oracle corre en computadoras personales (PC), microcomputadoras, mainframes y computadoras con procesamiento paralelo masivo. Soporta unos 17 idiomas, corre automáticamente en más de 80 arquitecturas de hardware y software distinto sin tener la necesidad de cambiar una sola línea de código. Esto es porque más el 80% de los códigos internos de Oracle son iguales a los establecidos en todas las plataformas de sistemas operativos.
HISTORIA
El manejador de Base de datos ORACLE, surgió a final de los años 70 y a principios de los años 80. George Koch y su equipo de técnicos fue el primero en desembarcar en el terreno de Oracle en 1982, durante un proceso de evaluación de un sistema de gestión de base de datos para una importante aplicación comercial que George estaba diseñando y construyendo. Cuando terminó, la evaluación fue descrita en Computer World como el estudio más severo de SGBD que se había hecho nunca. El estudio fue tan riguroso con los vendedores cuyos productos había estudiado George, que la prensa hizo eco de sus palabras en lugares tan distantes como Nueva Zelandia y en publicaciones muy alejadas del campo como el Christian Sciencia Monitor.
Oracle conocida entonces como Relational Software, tenía poco más de 25 empleados en aquel tiempo y sólo unos pocos clientes importantes. Sin embargo, cuando se completó el estudio, Oracle fue declarada vencedora. George afirmo que el SGBD Oracle era técnicamente el mejor producto del mercado. Estas declaraciones fueron hecha en una época en la que muy poca gente conocía el significado del término "Relacional", y los que lo conocían (o creían conocerlo) no tenían muchas cosas favorables que decir de él.
La compañía de Oracle Corporation estaba trabajando entonces para perfeccionar su joven producto, para comprender los tipos de características y funcionalidad que podría hacerlo útil y productivo en el mundo de los negocios. El esfuerzo contribuyó a su refinamiento. Algunas de las características de Oracle, tales como las salidas de SQL*FORMS fueron el resultado de dicho esfuerzo.
EVOLUCIÓN
El poderoso modelo relacional ha evolucionado desde herramientas y los modelos de datos de redes. La mayor aceptación y uso de un modelo de datos es el modelo relacional que fue conocido en 1969 con la revisión hecha por IBM, Dr. E. F. Codd.
Un modelo relacional posee tres grandes aspectos:
Estructuras: Definición de objetos que contengan datos y que son accesibles a los usuarios.
Operaciones: Definir acciones que manipulen datos u objetos.
Reglas: Leyes para gobernar la información, cómo y qué manipular.
Una base de datos relacional definida como un modelo de información es estrictamente visualizable por los usuarios mediante tablas. Una tabla está compuesta por una matriz bidimensional de filas y columnas. En cualquier ocasión la información es cambiada en una base de datos relacional, cualquier información es el resultado de una consulta presentada por el usuario en el formato de filas/columnas.
VERSIONES DE ORACLE
Oracle ha presentado cuatro generaciones para desarrollo de aplicación:
Oracle 5 y Oracle 6: fueron las dos primeras versiones de Oracle, quedando aun rezagadas por las versiones sucesoras.
Oracle 7: La base de datos relacional componentes de Oracle Universal Server. Posee además las versiones 7.1, 7.1.2, y 7.1.3.
Oracle 7 Parallel: Ofrece a los usuarios un método seguro y administrable para incrementar la performance de sus bases de datos existentes introduciendo operaciones en paralelo y sincrónicas dentro de sus ambientes informáticos.
Oracle 8: Incluye mejoras de rendimiento y de utilización de recursos. Independiente de que se necesite dar soporte a decenas de miles de usuarios y cientos de terabytes de datos, o se disponga de un sistema mucho más pequeño, pero igualmente critico, todos se benefician del rendimiento de Oracle8. Este soporta aplicaciones de procesamiento de transacciones on line (OLTP) y de data warehousing mayores y más exigentes.
Oracle Fail Safe: Protege al sistema de caída de entornos Cluster Windows NT. Este producto es para que el sistema operativo Windows NT disponga de una mayor oferta de solucciones en entornos cluster.
Oracle Universal Server: Con soporte completo de Web, mensajería y datos multimedia, Oracle Universal Server es el eslabón fundamental en el camino de transición de la industria de la tecnología a la informática de red, donde la complejidad de software es transferida desde la PC de escritorio a poderosos servidores y redes.
ESTRUCTURA
Proceso de Pre-Instalación
Planificación de Pre-Instalación:
1er. Paso es determinar el tamaño del software de instalación. Esto no incluye el espacio requerido para la producción del sistema o el espacio para el desarrollo de aplicaciones del o los sistemas Oracle.
PRODUCTOS TAMAÑO
Oracle RDBMS 11.6 MB
SQL*PLUS 1.6 MB
SQL*FORMS 2.4 MB
SQL*MENU 1.8 MB
SQL*REPOT WRITER 2.1 MB
Pro*C, Pro*Fortran, Pro*Cobol 1.3 MB
NLS 2.1 MB
Archivos de Oracle RDBMS 2.8 MB
SQL*Net 2.8 MB
Oracle Demo Database 5.9 MB
Total 34.4 MB
Una vez el tamaño determinado, el próximo paso es determinar la localización del producto y las aplicaciones que soportan el nuevo RDBMS Oracle, así como el espacio a ser reservado para los propios objetos de la base de datos.
Oracle soporta dos tipos de almacenamiento, por caracter (RAW) o por bloques (Files System), generalmente es recomendable que sean colocados en Raw Device.
Raw Device: es un dispositivo de caracteres disponibles en algunos sistemas operativos el cual es asignado directamente a Oracle.
Oracle corre más rápidamente con Raw Device que con Files System, por varias razones:
Con la intención de evitar la contención de los discos, se debe considerar la instalación de Oracle en dispositivos separados, especialmente si se tienen varios discos, y más esencialmente, si se poseen más de una controladora de disco. La planeación debe realizarse teniendo en cuenta los siguientes criterios:
ESTRUCTURA FÍSICA Y LÓGICA
Las estructura física tales como los archivos del sistema operativo, son almacenados en dispositvos tangibles como son cintas magnéticas, discos y otros. A cada archivo le corresponde un espacio en el sistema operativo. Oracle requiere de varios archivos para su funcionamiento, los cuales conforman su estructura física.
A la estructura lógica le corresponde un espacio por unidad, pero sus limitaciones son independiente de las localizaciones de espacio físico.
USO DE MEMORIA:
El uso de memoria en el RDBMS Oracle tiene como propósito lo siguiente:
PROGRAMAS Y ARCHIVOS QUE COMPONE ORACLE
Un RDBMS Oracle esta compuesto por tres partes principales, que son:
EL KERNEL DE ORACLE
El Kernel es el corazón del RDBMS Oracle, el cual maneja las siguientes tareas:
Así como el Kernel es un sistema operativo, el Kernel Oracle es cargado a la memoria al inicio de las operaciones y es usado por cada base de datos existente en el equipo.
EL PGA (Program Global Area)
Es también llamado Process Global Área, consta de datos e información de control de los procesos, asegurando el uso correcto de estos. El PGA contiene información acerca de las conexiones y los procesos que se realizan en Oracle, su tamaño es variable en longitud, pero no es dinámico. El PGA se activa al conectarse un usuario.
EL SGA (System Global Area)
Se puede llamar Shared global área. Se podría definir como una serie de buffers en memoria residente, a través de la cual todas las transacciones y el almacenamiento de dato fluyen. El SGA es localizado en memoria al iniciarse una instancia y desaparece al bajarla. Su tamaño no puede ser cambiado, pero si puede ser visto con el comando "SHOW SGA" en el SQL*DBA. Su longitud esta definida por lo parámetros del archivo de iniciación INIT.ORA.
Esta Compuesto por:
Es un conjunto de tablas que son usadas para proveer información asociada con la base de datos, donde se definen los nombres de usuarios, privilegios, objetos, retenciones y espacios que conforman un RDBMS Oracle.
Es un espacio reservado en memoria que contiene los cambios realizados a los bloques de datos, permitiendo la reconstrucción de la base de datos en caso de ocurrir un accidente.
Es un espacio reservado en memoria para las operaciones normales de la base de datos, el cual depende del tamaño especificado en el archivo de inicialización (INIT.ORA).
DIFERENTES HERRAMIENTAS DE ORACLE
SQLForms: es la herramienta de Oracle que permite, de un modo sencillo y eficiente, diseñar pantallas para el ingreso, modificaciones, bajas y consultas de registros. El usuario podrá, una vez definida la forma, trabajar con ella sin necesidad de generar códigos, dado que Oracle trae incorporado un conjunto de procedimientos y funciones asociados a las teclas de funciones, como por ejemplo la tecla [F7], que se usa para iniciar una consulta.
La herramienta fundamental de SQL es la sentencia SELECT, que permite seleccionar registros desde las tablas de la Base de Datos, devolviendo aquellos que cumplan las condiciones establecidas y pudiendo presentar el resultado en el orden deseado.
SQL (Structured Query Languague = Lenguaje de Consulta estructurado).
La orden FROM identifica la lista de tablas a consultar. Si alguna de las tablas a consultar no es propiedad del usuario, debe especificarse el nombre del propietario antes que el nombre de la tabla en la forma nombre_propietario.nombre_tabla.
La orden WHERE decide los registros a seleccionar según las condiciones establecidas, limitando el número de registros que se muestran.
La orden ORDER BY indica el orden en que aparece el resultado de la consulta.
Patrón de consulta
Una de las herramientas lógicas más poderosas de SQL es el reconocimiento de un patrón de consulta, instrumento éste que permite la búsqueda por nombre, dirección u otro dato parcialmente recordado. Los patrones de consulta juegan un papel importante en el momento de realizar consultas, ya que es común que necesitemos encontrar un texto y no recordemos exactamente cómo fue ingresado. Con el uso del operador LIKE podemos comparar patrones y ubicar un texto, independientemente de la posición en que se encuentre.
Para la definición del patrón de consulta existen dos tipos de caracteres especiales:
% (signo de porcentaje) llamado comodín, representa cualquier cantidad de espacios o caracteres en esa posición. Significa que se admite cualquier cosa en su lugar: un caracter, cien caracteres o ningún caracter.
_ (signo de subrayado) llamado marcador de posición, representa exactamente una posición e indica que puede existir cualquier caracter en esa posición.
Agrupamiento de datos
SQL proporciona una forma eficiente para manejar la información con el agrupamiento de datos a través de la formación de grupos y las funciones correspondientes, dando la posibilidad de procesar no solo registros individuales como hemos hecho hasta ahora. También podemos agrupar registros por un criterio determinado, como por ejemplo, agrupar por clientes las ventas realizadas.
Cada grupo tendrá como resultado de la consulta una fila resumen que contiene la información del grupo.
Para la formación de grupos adicionamos, a la forma básica de la sentencia SELECT, la orden GROUP BY ubicada antes de ORDER BY.
Las funciones para el procesamiento de grupos son:
COUNT(columna) Cantidad de registros en que la columna tiene valores no nulos.
COUNT(*) Cantidad de registros que hay en la tabla, incluyendo los valores nulos.
MIN(columna) Valor mínimo del grupo.
MAX(columna) Valor máximo del grupo.
SUM(columna) Suma los valores del grupo.
AVG(columna) Calcula valor medio del grupo, sin considerar los valores nulos.
La lista de columnas a mostrar en la consulta puede contener las funciones de grupo, así como la columna o expresión usada para formar los grupos en la orden GROUP BY. En una misma consulta no se pueden mezclar funciones de grupo con columnas o funciones que trabajan con registros individuales.
El orden en las consultas por grupos, cuando no esta presente la orden ORDER BY, está dado por la columna que forma los grupos. Si deseamos cambiar ese orden, como es el caso de ordenar por el valor total de ventas, se debe adicionar al final la orden ORDER BY SUM(VALOR).
Subconsultas
Otro aspecto de fácil diseño y uso que muestra una vez más las posibilidades de SQL son las subconsultas.
Subconsulta es aquella consulta de cuyo resultado depende otra consulta, llamada principal, y se define como una sentencia SELECT que esta incluida en la orden WHERE de la consulta principal. Una subconsulta, a su vez, puede contener otra subconsulta y así hasta un máximo de 16 niveles.
Las particularidades de las subconsultas son:
1. Su resultado no se visualiza, sino que se pasa a la consulta principal para su comprobación.
2. Puede devolver un valor único o una lista de valores y en dependencia de esto se debe usar el operador del tipo correspondiente.
3. No puede usar el operador BETWEEN, ni contener la orden ORDER BY.
4. Puede contener una sola columna, que es lo más común, o varias columnas. Este último caso se llama subconsulta con columnas múltiples. Cuando dos o más columnas serán comprobadas al mismo tiempo, deben encerrarse entre paréntesis.
Grupos con subconsulta
Para combinar grupos con subconsulta debemos incluir en la sentencia SELECT la orden HAVING, que tiene las siguientes características:
1. Funciona como la orden WHERE, pero sobre los resultados de las funciones de grupo, en oposición a las columnas o funciones para registros individuales que se seleccionan mediante la orden WHERE. O sea, trabaja como si fuera una orden WHERE, pero sobre grupos de registros.
2. Se ubica después de la orden GROUP BY.
3. Puede usar una función de grupo diferente a la de la orden SELECT.
Indices
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 ORACLE se realiza de forma inteligente, donde el programador sólo crea los índices sin tener que especificar, explícitamente, cuál es el índice que va a usar. Es el propio sistema, al analizar la condición de la consulta, quien decide qué índice se necesita. Por ejemplo cuando en una consulta se relacionan dos tablas por una columna, si ésta tiene definido un índice se activa, como en el caso cuando relacionamos la tabla de clientes y ventas por la columna código para identificar al cliente (WHERE clientes.codigo=ventas.codigo)
La identificación del índice a usar está relacionada con las columnas que participan en las condiciones de la orden WHERE. Si la columna que forma el índice está presente en alguna de las condiciones éste se activa.
PL/SQL: es un lenguaje portable, procedural y de transacción muy potente y de fácil manejo, con las siguientes características fundamentales:
2. Es una extensión de SQL, ya que este es un lenguaje no completo dado que no incluye las herramientas clásicas de programación. Por eso, PL/SQL amplia sus posibilidades al incorporar las siguientes sentencias:
- Control condicional
- Ciclos
3. Incorpora opciones avanzadas en:
- Control y tratamiento de errores llamado excepciones.
- Manejo de cursores.
Estructura del bloque de código
La organización del bloque de código de PL/SQL, compuesto por cuatro secciones DECLARE, BEGIN, EXCEPTION y END.
Asignación de valores
Las dos formas que existen para asignar valores a variables de memoria, vistas en el ejemplo anterior, son:
Manejo de cursores
El conjunto de filas resultantes de una consulta con la sentencia SELECT, como vimos anteriormente, puede estar compuesto por ninguna, una o varias filas, dependiendo de la condición que define la consulta. Para poder procesar individualmente cada fila de la consulta debemos definir un cursor (que es un área de trabajo de memoria) que contiene los datos de las filas de la tabla consultada por la sentencia SELECT.
Los pasos para el manejo de cursores, tema novedoso en la programación de Oracle con PL/SQL, son:
- Definir el cursor, especificando la lista de parámetros con sus correspondientes tipos de datos y estableciendo la consulta a realizar con la sentencia SELECT.
- 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.
Disparadores
El módulo SQL*Forms tiene incorporado una colección de procedimientos y funciones llamados "empaquetados" que se pueden incluir en el código de procedimientos o disparadores definidos por el usuario.
El disparador es un bloque de código que se activa cuando se pulsa una determinada tecla u ocurre cierto evento, como puede ser:
- Mover el cursor hacia o desde un campo, registro, bloque o forma.
- Realizar una consulta.
- Validar un dato.
- Hacer una transacción al insertar, modificar o eliminar registros de la base de datos.
Oracle asocia a cada tecla de función un procedimiento empaquetado, pudiendo el usuario redefinir esta asignación o capturar el disparador para ampliarlo o modificarlo con su propio código.
A partir de la versión 7 de Oracle 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, además, 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 gestión y mantenimiento de todos los procedimientos almacenados como una sola entidad para una determinada aplicación.
Además, en la versión 7, existe un nuevo tipo de disparador llamado de base 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 más común consiste en la definición de restricciones complejas de integridad.
SQLReport de Oracle realiza de forma flexible, sencilla y eficiente la creación de reportes, informes o listados permitiendo, entre otras facilidades, la visualización previa por pantalla con una gran variedad en estilos de presentación.
Definiciones básicas
Para adentrarnos en el tema primero veremos las definiciones básicas, fundamento del diseño del reporte en Oracle:
Consulta
Define las columnas y filas de una o varias tablas que serán emitidas en el reporte, así como su orden de presentación. Una consulta puede estar subordinada a otra consulta principal, relacionadas por una o varias columnas.
Grupo
El grupo es una sección del reporte que representa al conjunto de columnas de la consulta, como una unidad, para determinar su ubicación en el reporte y su forma de presentación.
Para cada grupo se definen los siguientes atributos:
- Ubicación.
- Forma de presentación.
- Texto de cabecera y final.
- Título de las columnas.
- Ubicación de las columnas dentro del grupo.
En el momento de la definición de una consulta se crea, de forma automática, un grupo que contiene todas las columnas presentes en la lista de la sentencia SELECT. El nombre de este grupo se define como el nombre de la consulta, precedido por los caracteres G_.
Una consulta puede tener asociado más de un grupo, con el fin de separar las columnas de la consulta, por ejemplo para crear diferentes niveles en el reporte, como el cálculo de subtotales.
Campos
Cada columna de la consulta pasa a ser un campo del reporte. Además, podemos incluir como campos del reporte las siguientes variables:
- Del sistema como &DATE y &PAGE
- Del usuario, cuyo contenido es un comando SQL para realizar cálculos.
Parámetro
Variables definidas por el usuario para transferir datos a la consulta en el momento de la ejecución del reporte. Se hace referencia al parámetro en la consulta con su nombre precedido por dos puntos como: nombre_parametro.
Sumario
Define variables de tipo sumario para la realización de cálculos con el uso de las funciones Sum, Min, Max, Count y Avg.
Texto
Define la ubicación y forma de presentación de los campos dentro del grupo, así como los textos de inicio y final para cada grupo y para el reporte.
Para ubicar un campo o un parámetro en la sección de textos se hace referencia con su nombre, precedido con el carácter & de la forma: &nombre.
SQLMenu: es el producto de ORACLE destinado a producir árboles de menús que permiten al usuario desplazarse fácilmente a través de su aplicación, facilitando a su vez, la integración con los diferentes módulos de ORACLE.
La integración de módulos, herramienta que permite desde un producto de Oracle invocar otros, también está presente en SQLForms, desde donde, como veremos en este artículo, se pueden realizar tareas del sistema operativo con llamadas a los módulos SQLReport y SQLPlus.
Definiciones
Comenzaremos explicando las diferentes partes que componen el diseño de un menú en SQLMenu. Ellos son:
Aplicación Conjunto de uno o más menús interconectados para realizar las tareas necesarias del sistema y para el cual se definen su nombre, nombre del archivo ejecutable, fecha de creación, nombre del usuario, número de la versión, fecha de la última modificación, directorio de ubicación y su identificación.
Menú Lista de opciones o items que realizan las tareas específicas del sistema. Cuando se crea la aplicación el primer menú que se debe definir es el principal, cuyo nombre tiene que ser el mismo que el de la aplicación. Este será el menú que se activará en forma automática al cargar la aplicación.
Items Define las opciones del menú y su correspondiente acción. Un ítem puede llamar a otro menú, ejecutar un comando o un módulo de Oracle, así como cualquier otro programa. Para cada ítem se define su posición en el menú, tipo de comando, permisos de los usuarios, texto de identificación y la línea del comando a realizar.
Parámetros Variable que se carga en el momento de ejecución del menú y para la cual se definen un nombre de dos letras, cantidad máxima de caracteres, texto en pantalla en el momento de su ingreso, si es o no obligatorio, con o sin conversión a mayúsculas y su valor por defecto.
Integración desde SQLForms
La integración de módulos, como los casos que acabamos de estudiar, también esta presente en SQLForms, desde donde podemos activar los módulos SQLReport y SQLPlus a través del sistema operativo.
En SQLReport:
- Parámetros y sus valores por defecto. Esta es la vía que tenemos para pasar los datos necesarios, desde SQLForms, en el momento de la ejecución del reporte.
En SQLForms:
- Campos de la forma donde se van a ingresar los valores a pasar como parámetros al reporte.
MEJORAS DE SQL SERVER EN ORACLE
CONCLUSIÓN
ORACLE Es manejador de base de datos relacional que hace uso de los recursos del sistema informático en todas las arquitecturas de hardware, para garantizar su aprovechamiento al máximo en ambientes cargados de información.
Bibliografía Consultada
Direcciones en Internet:
www.cybercursos.net
www.oracle.es
Libros Consultados:
Oracle 7 Manual de Referencia. Koch, George. Osborne/McGraw-Hill. 1994
Oracle Manual de Referencia. Koch, George. Osborne/McGraw-Hill. 1992
Mastering Oracle. Cronin, Daniel. Hayden Books. 1990
(Ruben Machaca)