Taller de administración: Base de datos Oracle 10g

Noviembre 2009

Taller de administración de Base de datos Oracle 10g 2009
Contenido
1. Arquitectura de una base de datos........................................................................................................... 5 1.1 Definición de instancia ........................................................................................................................ 5 1.2 Definición de Base de Datos ............................................................................................................... 5 1.3 Estructuras de Memoria ..................................................................................................................... 6 1.3.1 System Global Area ...................................................................................................................... 6 1.3.2 Program Global Area .................................................................................................................... 6 1.3.3 Shared pool .................................................................................................................................. 6 1.3.4 Buffer Cache ................................................................................................................................. 6 1.3.5 Java Pool....................................................................................................................................... 7 1.3.6 Large Pool..................................................................................................................................... 7 1.3.7 Redo log Buffer ............................................................................................................................ 7 1.3.8 Procesos de Background .............................................................................................................. 7 1.4 Estructuras Físicas ............................................................................................................................... 9 1.4.1. Data files ..................................................................................................................................... 9 1.4.2. Control files ................................................................................................................................. 9 1.4.3. Redo logs ..................................................................................................................................... 9 1.4.4 Archives ..................................................................................................................................... 10 1.4.5. Spfile.......................................................................................................................................... 10 1.4.6. Password file ............................................................................................................................ 10 1.5. Relación estructuras de memoria y físicas....................................................................................... 11 1.6 Estructuras Lógicas............................................................................................................................ 11 1.6.1. Tablespaces ............................................................................................................................... 11 1.6.2. Segmentos................................................................................................................................. 12 1.6.3. Extents....................................................................................................................................... 12 2. Instalación y Configuración del Manejador de BD. ................................................................................. 13 2.1 Obtener Software ............................................................................................................................. 13 2.2 Verificar Documentación .................................................................................................................. 13 2.3 Prerrequisitos de hardware .............................................................................................................. 14 2.5 Creación de grupos y usuarios .......................................................................................................... 17

Taller de administración de Base de datos Oracle 10g 2009

2.7 Instalación y configuración ............................................................................................................... 18 2.8 Configuraciones de servicios de red ................................................................................................. 23 3. Análisis y Diseño de una BD .................................................................................................................... 25 3.1 Rol de la información para las empresas .......................................................................................... 25 3.2 Elementos a tomar en cuenta en un diseño de BD........................................................................... 25 3.3 Reglas de negocio ............................................................................................................................. 25 3.4 Normalización ................................................................................................................................... 25 3.5 Modelo entidad relación ................................................................................................................... 27 3.6 Métricas de una BD ........................................................................................................................... 28 3.7 Diccionario de Datos ......................................................................................................................... 28 3.8 Buen diseño vs Mal diseño ............................................................................................................... 29 3.9 Hacer tangible un diseño de BD, comparar buen diseño vs Mal diseño .......................................... 29 4. Diseño Físico de una BD .......................................................................................................................... 30 4.1 Data blocks ........................................................................................................................................ 30 4.2 OS blocks ........................................................................................................................................... 31 4.3 Datafiles ............................................................................................................................................ 31 4.4 Consideraciones de disco .................................................................................................................. 32 4.5 Distribución de la BD en disco .......................................................................................................... 32 4.6 Funcionalidad de ASM ...................................................................................................................... 32 5. Creación de una BD Oracle ..................................................................................................................... 33 5.1 Prerrequisitos para la instancia ........................................................................................................ 33 5.2 Prerrequisitos para la BD .................................................................................................................. 33 5.3 Configuración de storage .................................................................................................................. 33 5.4 Tablespaces Default .......................................................................................................................... 33 5.5 Configuración dedicada .................................................................................................................... 34 5.6 Configuración compartida ................................................................................................................ 34 5.7 Utilización de la herramienta DBCA .................................................................................................. 34 6. PL/SQL ..................................................................................................................................................... 46 6.1 Bloques anónimos ............................................................................................................................. 46 6.2 Procedimientos ................................................................................................................................. 47

........................................ 56 .................................................1 Explain plan ...................................................................................................................................... Optimización de Queries...........2 Índices ...................................................... 56 7............................Taller de administración de Base de datos Oracle 10g 2009 6.............................................................. 52 7.......... 49 6............................................................................................................ 50 6.............................5 Triggers...........................................................................3 Funciones ...............4 Paquetes ......................................................................................................................................................................................... 56 7.........................

Una Base de Datos Oracle está almacenada físicamente en data files. Arquitectura de una base de datos 1.1 Definición de instancia La instancia de la base de datos consta de datos (llamados estructuras de memoria) y de procesos en memoria (procesos background) necesarios para dar servicio a los usuarios de la base de datos. 1. y la correspondencia entre los data files y las tablas es posible gracias a las estructuras internas de la BD. junto con una descripción de estos datos.2 Definición de Base de Datos Una Base de Datos es una colección compartida de datos lógicamente relacionados. Cada instancia abre una y sólo una base de datos. Está división lógica se hace gracias a los tablespaces. . que permiten que diferentes tipos de datos estén almacenados físicamente separados.Taller de administración de Base de datos Oracle 10g 2009 1. Puede haber más de una instancia si se distribuye la base de datos en más de una máquina. que están diseñados para satisfacer las necesidades de información de una organización.

que contienen datos que han sido modificados. Organización del Buffer Caché de la Base de Datos Write list: mantiene los buffers sucios. Los procedimientos PL/SQL y paquetes. Es un área de memoria no compartida creada por Oracle cuando el proceso es iniciado.4 Buffer Cache Es la porción del SGA que mantiene una copia de los bloques leídos de los data files. el shared pool. sintáctico y semántico) de la instrucción y su plan de ejecución.3.3 Estructuras de Memoria 1.3 Shared pool Es la porción del SGA que contiene las tres áreas mas grandes: library cache. 1. . Shared SQL Areas y Private SQL Areas: Oracle representa la ejecución de cada instrucción SQL con un área SQL privada y otra compartida. La cantidad total de memoria PGA asignada para cada proceso se denomina aggregated PGA memory. Library Cache: incluye las áreas de SQL compartidas y privadas en caso de que sea un servidor de múltiples transacciones. pero aún no han sido escritos a disco. Shared SQL Areas es un área compartida SQL que contiene un árbol proveniente del análisis (léxico. LRU list: mantiene los buffers libres. Todos los procesos de los usuarios conectados concurrentemente a la instancia compartida. Reconoce cuando dos usuarios están ejecutando la misma instrucción SQL y reutiliza el área compartida para aquellos usuarios.3. large pool y área de memoria privada pueden ser alterados sin bajar/terminar la instancia. el tamaño del buffer cache.Taller de administración de Base de datos Oracle 10g 2009 1.2 Program Global Area Es una región de memoria que contiene datos e información de control para un proceso servidor. 1. pinned y sucios que no han sido movidos aún a write list.3. estructuras de control como los locks y manejadores del caché de librerías. Con una infraestructura de SGA dinámico.3. dictionary cache y estructuras de control. El SGA es compartido entre los usuarios. La SGA y los procesos de Oracle constituyen una instancia de Oracle.1 System Global Area Es un grupo de estructuras de memoria que contienen datos e información de control para una instancia de una base de datos en Oracle. acceden al buffer caché de la base de datos. Oracle automáticamente asigna memoria a un SGA cuando se levanta/inicia la instancia. 1.

3. 1. para ser ejecutados de forma más dinámica y eficiente. El proceso DBWn escribe buffers sucios al disco bajo las siguientes condiciones: . Esta información es almacenada en los redo logs. El proceso DBWn es responsable por la escritura de los buffers sucios del buffer cache al disco. DELETE. en caso de ser necesarios para la recuperación de la base de datos. Los redo logs son utilizados.8 Procesos de Background Son provistos con el propósito de maximizar el desempeño y atender muchos usuarios. 1. Si el proceso los encuentra se tiene un cache hit.Taller de administración de Base de datos Oracle 10g 2009 Free buffers: no contienen ningún dato útil y están disponibles para su uso Pinned buffers: son aquellos que están siendo accesados actualmente. 1. Cuando un proceso de Oracle accede un buffer. se marca como sucio. ALTER o DROP. los procesos background son creados automáticamente cuando la instancia es iniciada.3.3. Un redo log contiene la información necesaria para reconstruir o rehacer. éste busca los datos en el buffer cache. Entre ellos se tiene: Database Writer Process (DBWn) El (DBWn) escribe el contenido de los buffers en los data files. los cambios hechos en la base de datos por las operaciones: INSERT. UPDATE.5 Java Pool Es un área de memoria de la SGA donde se almacenan objetos y códigos de aplicaciones java que son usados muy a menudo.6 Large Pool Provee grandes áreas de memoria para:  La información de la sesión para servidores compartidos  Procesos de I/O del servidor  Operaciones de backup y restore 1. El DBWn escribe buffers sucios y fríos al disco para que los usuarios puedan encontrar buffers limpios que puedan usarse para la lectura de nuevos bloques en el caché.7 Redo log Buffer Es un buffer circular en el SGA que mantiene información acerca de los cambios hechos en la base de datos. Los redo logs toman espacios continuos y secuenciales en el buffer. el proceso mueve el buffer a los más utilizados (MRU) al final de LRU list. CREATE. Cuando un buffer en la base de datos es modificado. En caso contrario debe buscarlos en los data files y se tiene un cache miss. Un buffer free es un buffer que no ha sido usado recientemente de acuerdo con el algoritmo LRU. La primera vez que un proceso usuario requiere una pieza de datos.3. En muchos sistemas operativos.

LGWR escribe en porciones contiguas del buffer al disco. Esto se denomina el mecanismo de fast commit. Esta es una tarea del CKPT. de la instancia en el inicio de la misma. Los cambios correspondientes a los bloques de datos en el buffer caché. el proceso servidor puede copiar nuevos registros sobre aquellos que se pasaron a disco. La posición en el log esta determinada por el último buffer sucio en el buffer caché. El LGRW escribe Un registro de commit cuando un usuario hace commit de una transacción Redo log buffers Cada tres segundos Cuando el redo log tenga un tercio lleno Cuando un proceso de DBWn escriba los buffers modificados a disco. SMON también es responsable de limpiar los segmentos temporales que no estén en uso por algún tiempo y de determinar que algunos extents libres se encuentran continuos en el tablespace dictionary managed. El redo log buffer es un buffer circular. el LGWR coloca el registro de commit en el log buffer y escribe la transacción a disco inmediatamente en el redo log. Process Monitor (PMON) PMON lleva a cabo procesos de recuperación cuando un proceso de usuario falla. System Monitor Process (SMON) El proceso SMON lleva a cabo la recuperación. El CKPT no escribe los bloques a disco. El LGWR escribe todos los registros de redo que han sido copiados en el buffer desde la última vez que éste se escribió. Checkpoint Process (CKPT) Cuando un checkpoint ocurre. Por ejemplo este restaura el status de la tabla de transacciones activas. si es necesaria. El DBWn periódicamente escribe los buffers cuando se lleva a cabo un checkpoint.Taller de administración de Base de datos Oracle 10g 2009   Cuando un proceso no puede encontrar un buffer limpio reusable después de haber recorrido un número de determinado de buffers en el buffer caché. éste envía una señal al DBWn para la escritura. El DBWn escribe los buffers sucios al disco. aún cuando el acceso al redo log sea lento. Recover Process (RECO) RECO es un proceso background usado con la configuración de bases de datos distribuida que resuelve automáticamente las fallas de las transacciones distribuidas. Es responsable de la limpieza del buffer caché y liberación de recursos que el proceso estaba usando. Archiver Processes (ARCn) . si es necesario. Cuando un usuario lleva a cabo una instrucción de commit. Log Writer Process (LGWR) El proceso LGWR es responsable del manejo del redo log buffer. las escrituras del redo log buffer al archivo de redo log en el disco. realiza la llamada al DBWn para que éste lo haga. Oracle debe actualizar todos los encabezados de los archivos de datos con los detalles del checkpoint. LGWR normalmente escribe lo suficientemente rápido para asegurar que el espacio esté siempre disponible en el buffer para nuevos registros. libera los locks y remueve el ID del proceso de la lista de procesos activos. La escritura de un registro de redo del commit de la transacción es un evento atómico. son dejados hasta que se tenga una escritura más eficiente que hacer. Chekpoint es una posición en el hilo de redo (log) donde se iniciará luego la recuperación. Cuando LGWR escribe los registros del redo log buffer al redo log file.

4.1. uno de ellos debe estar activo (online).  Información sobre los checkpoints. ARCn sólo está recent cuando la base de datos está en el modo ARCHIVELOG y la opción automatic archiving está activa.4.  Nombres de los data files de la BD y redo log. 1. mínimo dos.3. dependiendo de donde estén los data files sobre los que se asientan. Queue Monitor Processes (QMNn) QMNn es un proceso opcional de background para el encolamiento avanzado de Oracle. Debe haber múltiples copias en distintos discos. si la base de datos . Redo logs En ellos se graba toda operación que se efectué sobre la BD y sirven de salvaguarda de la misma. Un data file puede pertenecer sólo a un tablespace. Cada tablespace se compone de uno o más data files en disco. Control files Los Control Files mantienen la información física de todos los archivos que forman la BD. Los procesos envían los mensajes y en lugar de esperar por la respuesta siguen con su trabajo. Data files Un data file es un archivo a nivel de sistema operativo en donde se guardarán físicamente los datos de una determinada base de datos. para protegerlos de los fallos de disco.4. y cuando se necesita más espacio se deben añadir más data files al tablespace. Tiene que haber por lo menos 2. incluyendo sus rutas. 1. Los data files reciben un tamaño fijo en el momento de su creación. que monitorea las colas de mensajes. así como el estado actual de la BD.  Fecha de creación y nombre de la BD.Taller de administración de Base de datos Oracle 10g 2009 El ARCn copia los archivos de redo log online al dispositivo de almacenamiento terciario. Dividir los objetos de la BD entre múltiples tablespaces permite que los objetos sean almacenados físicamente en discos separados. Lock Manager Server Process (LMS) LMS provee manejo de recursos entre instancias. se escribe en ellos de forma cíclica. La lista de los control files se encuentra en el parámetro CONTROL_FILES. 1. Son utilizados para mantener la consistencia interna y guiar las operaciones de recuperación.4 Estructuras Físicas 1.2. El encolamiento avanzado se usa con comunicación asíncrona. Son imprescindibles para que la BD se pueda arrancar. Contienen:  Información de arranque y parada de la BD.

Si el administrador de la base de datos quiere iniciar la instancia. Para poder usar los archives. Oracle debe de tener una forma de autenticar a este usuario de manera segura con un password.ora. es decir los archives logs permiten la restauración de data files.4 Archives Son archivos que contienen un historial de cambios en la base de datos (redo logs). la autenticación del DBA debe realizarse desde fuera de la base de datos. Obviamente este password no puede estar guardado en la base de datos. La ubicación de este archivo es la misma que la del init. para esto existe el password file.4.4. 1. Usando estos archivos y respaldo de la base de datos. Este es el primer archivo que va a "buscar" Oracle en su arranque de base de datos. Si no encuentra este archivo entonces irá a buscar el archivo init. .Taller de administración de Base de datos Oracle 10g 2009 colapsara o se cayera por cualquier motivo la instancia se intentará recuperar con la información que hay en los redo logs.5. Spfile A partir de la versión 9i de Oracle encontramos el archivo spfile. la base de datos debe de estar en modo Archive Log lo que podemos corroborar con el comando: ARCHIVE LOG LIST.6. Password file El password file es un archivo que permite a los usuarios conectarse de manera remota a la base de datos para ejecutar tareas de administración. Por lo tanto. Es cierto que este archivo podemos intentar abrirlo con el notepad solo que probablemente quede corrupto o inservible. porque Oracle no puede accesar a la base de datos antes de que sea inicializada. El parámetro remote_login_passwordfile específica si un password file se utiliza para autenticar a los DBA o no. podremos recuperar datos perdidos.4. 1.ora Este archivo está codificado y las modificaciones en él se realizarán a través del comando ALTER SYSTEM añadiendo la cláusula SCOPE.ora ($ORACLE_HOME/dbs) 1.

. Relación estructuras de memoria y físicas 1. Un tablespace puede pertenecer sólo a una base de datos.6.Taller de administración de Base de datos Oracle 10g 2009 1. cuando se crea una tabla se debe indicar el tablespace al que será asignada.1. Por defecto se depositan en el tablespace SYSTEM. De esta manera.5. y asignar las tablas de usuario a otro tablespace. Este tablespace es el que contiene el diccionario de datos. por lo que conviene reservarlo para el uso del servidor. permitiendo que el SGBD continúe funcionando con el resto.6 Estructuras Lógicas 1. Tablespaces Un tablespace es una división lógica de la base de datos.  Los tablespaces pueden estar montados sobre dispositivos ópticos si son de sólo lectura. Hay varias razones que justifican este modo de organización de las tablas en tablespaces:  Un tablespace puede quedarse offline debido a un fallo de disco. que se crea por defecto. Cada base de datos tiene al menos uno (SYSTEM).  Permiten distribuir a nivel lógico/físico los distintos objetos de las aplicaciones. Lo razonable y aconsejable es que cada aplicación tenga su propio tablespace. Los tablespaces se utilizan para mantener juntos los datos de usuarios o de aplicaciones para facilitar su mantenimiento o mejorar las prestaciones del sistema.

Los parámetros de crecimiento del tamaño de los tablespaces se especifican en la creación de los mismos.6. Cuando se crean se les asigna un espacio en disco que Oracle reserva inmediatamente. 1. Extents Un extent es una unidad lógica de asignación de espacio de almacenamiento de base de datos formada por una serie de bloques contiguos de datos. Uno o más extents a su vez constituyen un segmento. Como los segmentos son entidades físicas.3. Cuando el espacio existente en un segmento se usa totalmente.2. cómo los datos son introducidos en esos objetos y el modo en que serán recuperados. El uso efectivo de los segmentos requiere que el DBA conozca los objetos que utiliza una aplicación. Esto elimina la posibilidad de error en las aplicaciones por fallos de dimensionamiento inicial. 1. pueden usarse para aislar completamente los datos de diferentes aplicaciones. Oracle asigna un nuevo extent para el segmento. . se utilice o no. Un segmento está constituido por secciones llamadas extents. deben estar asignados a tablespaces en la BD y estarán localizados en uno de los data files del tablespace.6. Si este espacio inicial se ha quedado corto Oracle puede gestionar el crecimiento dinámico de los data files sobre los que se asientan los tablespaces. Segmentos Los segmentos son los equivalentes físicos de los objetos que almacenan datos.Taller de administración de Base de datos Oracle 10g 2009   Son una unidad lógica de almacenamiento. Oracle permite realizar operaciones de backup/recovery a nivel de tablespace mientras la BD sigue funcionando. Diagrama general de la arquitectura de ORACLE.

daremos clic en ella y nos llevara a la página referente a documentación. 2. http://www. “Documentation” y “READMEs”.htm para abrirla en el navegador.1 Obtener Software Para poder obtener el software primero es necesario contar con un nombre de usuario y una contraseña validos. al descomprimirlo se obtendrá un directorio llamado 10201_database_linux32. o si se está haciendo por medio de una terminal ejecutaremos el siguiente comando: firefox index.oracle. hay que dar doble clic sobre el archivo index. la que es de interés por el momento es la segunda pestaña. .htm & En el navegador abrirá una página como la que se muestra a continuación: En ella se pueden observar tres pestañas. La documentación se encuentra ya 10201_database_linux32/database/doc/ sea en formato HTML o PDF en la siguiente ruta: Para este taller revisaremos la documentación en formato HTML. si se está navegando por los directorios de manera grafica.com El software del manejador de base de datos Oracle se puede obtener gratuitamente para uso personal y no lucrativo en el sitio de Oracle en la siguiente dirección: http://www.2 Verificar Documentación Una vez que se ha descargado el software del manejador. “Getting Started”.html 2.com/technology/software/products/database/index.oracle. Instalación y Configuración del Manejador de BD.Taller de administración de Base de datos Oracle 10g 2009 2. una vez ubicados en el directorio en el que se encuentra. dentro de él podemos encontrar tanto el software como la documentación. para abrirla. los cuales se pueden obtener ingresando al portal oficial de Oracle y registrándose de modo gratuito.

sh): Para comprobar el tamaño de la memoria RAM: # grep MemTotal /proc/meminfo Para comprobar el tamaño de la memoria SWAP: .3 Prerrequisitos de hardware Para poder instalar el software se deben de cumplir como mínimo con los siguientes requisitos:   Por lo menos 1GB de memoria RAM La memoria SWAP depende del tamaño de la memoria RAM RAM disponible Entre 1GB y 2GB de RAM Entre 2GB y 8GB de RAM Mas de 8GB de RAM    Espacio en Swap Requerido 1. 2.5 GB y 3. ya sea HTML o pdf. software. Entre 1. así que es importante darse el tiempo para leerlos. necesarios para la instalación del manejador de base de datos Oracle. En este documento se encuentra información sobre el hardware. por el momento solo se mencionara el que se llama “Quick Instalation Guide”. usuarios y estructuras de directorios. podemos abrirlos en el formato que mejor nos parezca.75 veces el tamaño de la RAM 400 MB de espacio disponible en el directorio temporal (/tmp).5 veces el tamaño de la RAM Igual al tamaño de la RAM 0.Taller de administración de Base de datos Oracle 10g 2009 Ahora se muestra una serie de documentos que nos serán útiles.5 GB de espacio libre en disco duro para el software de Oracle. aspectos sobre los que se habla más adelante en el presente documento. dependiendo de la instalación. GB de espacio en disco para una base de datos pre configurada (opcional). Para asegurarse que se cumple con estos prerrequisitos se deben utilizar los siguientes comandos (también se puede ejecutar el script inf_servidor. configuración necesaria.

un sistema derivado de Red Hat.5.0.0  SUSE Linux Enterprise Server 9.6.0 and Asianux 1.21-27.6.Taller de administración de Base de datos Oracle 10g 2009 # grep SwapTotal /proc/meminfo Para comprobar el espacio el espacio de memoria SWAP y RAM disponible: # free Para comprobar el espacio disponible para /tmp: # df -k /tmp Para comprobar el espacio disponible en disco duro: # df –k Para conocer el modelo del procesador: # grep "model name" /proc/cpuinfo 2.4 Prerrequisitos de software El sistema debe cumplir como mínimo con los siguientes requisitos de software: El sistema operativo debe de ser uno de los siguientes:  Red Hat Enterprise Linux 3.EL  SUSE Linux Enterprise Server 9 2.0 NOTA: para este taller se utilizará el sistema operativo llamado Fedora en su versión 11 (Leonidas).0  Asianux 2. El kernel del sistema operativo debe ser uno de los siguientes (o superior):  Red Hat Enterprise Linux 3.5-7.0 and Asianux 2.EL  Red Hat Enterprise Linux 4.0 2.0  Asianux 1.0 2.9-5.4.97 Se deben de instalar los siguientes paquetes (o la versión más reciente de ellos):  Fedora 11 binutils glibc glibc-common libgcc libstdc++ .0 (Update 3 or later)  Red Hat Enterprise Linux 4.

2.3-2.96.3.3.0 make-3.20 compat-db-4.79.128 compat-gcc-c++-7.3.98-18 make-3.2-519.128 openmotif21-2.14-5 compat-gcc-7.3-2.1 gcc-3.3-34 glibc-2. and Asianux 1.96.3-2.2-95.0 and Asianux 2.3.0. Para conocer la versión del sistema operativo instalado: # cat /etc/issue Para conocer la versión del kernel instalado: # uname –r Para determinar si un paquete está instalado: .1  Para asegurarse que el sistema cuenta con los prerrequisitos se debe ejecutar los siguientes comandos.96.3.3-2.3-43 glibc-2.3-98 libaio-0.80 openmotif-libs-2.128 compat-libstdc++-devel-7.3.128 compat-libstdc++-7.2.3-1 SUSE Linux Enterprise Server 9 gcc-3.98-18 libaio-devel-0.Taller de administración de Base de datos Oracle 10g 2009 make elfutils-libelf elfutils-libelf-devel glibc-devel gcc gcc-c++ libstdc++-devel unixODBC unixODBC-devel libaio libaio-devel sysstat compat-libstdc++-33 libXp  Red Hat Enterprise Linux 3.1.3-43 gcc-c++-3.0 and 4.0.30-8 setarch-1.96.

Taller de administración de Base de datos Oracle 10g 2009

# rpm -q nombre_del_paquete

2.5 Creación de grupos y usuarios
Se requiere que los siguientes grupos y usuarios existan para la instalación del software:    El grupo para el inventario de Oracle (oinstall). El grupo para administrador de base de datos de sistema operativo (dba). El propietario del software de Oracle (oracle).

Para cumplir con estos requisitos se debe de ejecutar los siguientes comandos Para crear los grupos oinstall y dba. # groupadd oinstall # groupadd dba Para crear el usuario oracle. # useradd -g oinstall -G dba oracle Establecer una contraseña para el usuario oracle. # passwd oracle

OFA: Optimal Flexible Arquitecture OFA es una serie estándar de recomendaciones a la hora de nombrar archivos y directorios cuando se instala e implementa una base de datos. OFA esta diseñado para organizar grandes cantidades de software y datos en disco, simplificar tareas de administración, maximizar el desempeño y facilitar los cambios entre bases de datos. Algunos beneficios de OFA son que permite facilidad al realizar acciones tales como añadir hardware, crear bases de datos y añadir elementos a bases de datos existentes. Otro de los beneficios es que la carga de I/O es distribuida sobre todos los discos, para prevenir cuellos de botella. Básicamente consiste en dar nombres a los directorios y archivos que permitan diferenciar a los de una base de datos de otra, e incluso tener instalaciones de distintas versiones del manejador o incluso de la misma versión. Al punto de montaje de todos los dispositivos se les debe de poner una cadena constante mas un identificador numérico de dos dígitos por ejemplo /u01, /u02 etc. Para dar soporte a la posibilidad de instalar diferentes versiones se utiliza el “/ punto de montaje / directorio estándar / propietario / versión / nombre de instalación” por ejemplo: /u01/app/oracle/product/10.2.0/db_1.

Taller de administración de Base de datos Oracle 10g 2009

Para los archivos de una base de datos se puede utilizar el patrón “/ punto de montaje / oradata / nombre_base” por ejemplo: /u01/oradata/base1. Estas recomendaciones y mas se pueden leer en la documentación en el sitio oficial de Oracle.

2.6 Creación de directorios

Para poder instalar el software primero es necesario tener la siguiente estructura de directorios. /u01/app/oracle/product/10.2.0/db_1 Para crear esta estructura de directorios se puede ejecutar el siguiente comando: # mkdir -p /u01/app/oracle/product/10.2.0/db_1 Después dicha estructura debe de ser modificada para que el nuevo propietario sea el usuario Oracle perteneciente al grupo oinstall. # chown –R oracle:oinstall /u01 Por último se deben de cambiar los permisos de estos directorios con el siguiente comando: # chmod –R 775 /u01

2.7 Instalación y configuración
Para poder iniciar la instalación del software primero se debe de configurar algunos parámetros del kernel, como se indica a continuación: Abrir el archivo /etc/sysctl.conf y agregar las siguientes líneas. # Configuracion para oracle kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 rmem_default = 262144 rmem_max = 262144 wmem_default = 262144 wmem_max = 262144

Taller de administración de Base de datos Oracle 10g 2009

Abrir el archivo /etc/security/limits.conf y agregar las siguientes líneas. # Configuracion para oracle oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 Abrir el archivo /etc/pam.d/login y agregar las siguientes líneas. # Configuracion para oracle session required /lib/security/pam_limits.so Abrir el archivo /etc/profile y agregar las siguientes líneas. # Configuracion para oracle if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi Abrir el archivo /etc/redhat-release y reemplazar el contenido por la siguiente línea. redhat-4 Esto con la finalidad de que Oracle reconozca al sistema operativo como valido para la instalación. Como paso siguiente se deben de establecer algunas variables de ambiente para el usuario oracle. Conectarse como el usuario oracle con el comando: # su – oracle Abrir el archivo /home/oracle/.bash_profile y agregar las siguientes líneas: # Configuracion para oracle ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

aquí utilizara la variable de ambiente ORACLE_BASE. para el cual si volverá a utilizar oinstall. ./runInstaller Esto abrirá el Oracle Universal Instaler. $ . aquí se nos preguntara la ubicación de Oracle Home. para UNIX DBA Group utilizar el grupo llamado oinstall.Taller de administración de Base de datos Oracle 10g 2009 CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib. que es una aplicación grafica para la instalación del manejador de Oracle. en el cual se colocaran los archivos instaladores. también se solicitara nuevamente el grupo del sistema operativo. también solicitara el tipo de instalación. como ya se ha definido el directorio debe aparecer como /u01/app/oracle/oraInventory. nuevamente clic en Next. para la cual se elegirá Enterprise Edition. La siguiente pantalla nos pedirá la ubicación del directorio oraInventory. y debería de aparecer tal como lo indicamos en la variable de ambiente ORACLE_HOME. Utilizaremos la opción llamada Basic Installation. export CLASSPATH Por ultimo como el usuario oracle se debe de entrar al directorio en donde esta el software (10201_database_linux32/database/) para correr el instalador de Oracle con el siguiente comando. no seleccionar la opción de crear una base de datos y dar clic en Next.

dar clic en Next. se debe verificar y corregir para proseguir con la instalación. si se indica que hay problemas en este punto. y después en continuar. después dar clic en Next. . para la instalación.Taller de administración de Base de datos Oracle 10g 2009 En la siguiente pantalla el instalador verificara que el sistema cumpla con los requerimientos mínimos. NOTA: si se arroja un mensaje de un requisito por verificar y la nota acerca del es cobre Checking Network Configuration.

ejecutarlos en una terminal y después presionar ok en la ventana que lo solicito. . que es importante conservar.Taller de administración de Base de datos Oracle 10g 2009 La siguiente pantalla nos mostrara el progreso de la instalación: Una vez que ha terminado el proceso el instalador solicitara que se ejecuten un par de scripts de configuración como usuario root. puesto que sirven para utilizar la aplicación iSQL*Plus la cual permite ejecutar comandos SQL desde el navegador. La siguiente ventana nos mostrara un par de URL´s.

la ubicación donde se colocara el log de conexiones.0/db_1) (SID_NAME = base1) ) ) .8 Configuraciones de servicios de red El principal elemento de Oracle para dar servicios de red es el LISTENER. dicho elemento esta en todo momento escuchando las peticiones de conexión que se hacen a la base de datos.0/db_1/network/log SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = base1) (ORACLE_HOME = /u01/app/oracle/product/10. para recibir las peticiones de conexión. Dentro de el se indica que base de datos esta aceptando peticiones de conexión. el servidor.Taller de administración de Base de datos Oracle 10g 2009 2.2. Oracle maneja la configuración de los servicios de red principalmente en dos archivos. el protocolo que está utilizando y el puerto por el que se está escuchando y su estructura es como se muestra en el siguiente ejemplo: LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) LOG_DIRECTORY_LISTENER = /u01/app/oracle/product/10. el ORACLE_HOME. los cuales se encuentran ubicados en $ORACLE_HOME/network/admin/ a continuación se habla sobre ellos.  listener.ora: en este archivo se encuentra la configuración para el LISTENER que utilizara el sistema.2.

ora un servicio con la información del servidor B y la base de datos en el servidor B.XXX)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = base1) ) ) Ejemplo: Si se desea realizar una conexión de la base de datos en el servidor A a la base de datos en el servidor B.ora puede contener tantos servicios como se necesiten. El servidor A debe de tener en su tnsnames. 2. asignándoles a cada una un nombre de servicio.ora la información para permitir la conexión a su base de datos.ora del servidor A. 1.XXX. la dirección del servidor.ora: en este archivo se encuentra una lista de servicios que nos ayudaran a conectarnos a otras base de datos.XXX. El servidor B debe de tener en su listener. P . la estructura de un servicio en el tnsnames. BASE1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX.ora es como se muestra a continuación. En el servidor B se debe de iniciar el LISTENER con el comando: $ lsnrctl start ara probar la conexión desde el servidor A al servidor B se debe de ejecutar el siguiente comando en el servidor A: $ tnsping servidorB NOTA: se utiliza servidor B como nombre para el servicio utilizado en el tnsnames.Taller de administración de Base de datos Oracle 10g 2009  tnsnames. 3. y el cual contiene el protocolo que se utilizara. se requiere lo siguiente. NOTA: tnsnames. 4. el puerto al que se espera conectarse y el nombre de la base de datos a la que esperamos conectarnos.

en su mayor parte. Actualización de anomalía. muchas circunstancias excepcionales y casos especiales en que la interpretación de la normalización no cubrir todas las necesidades al 100 por ciento.. Tipo de anomalías:    Insertar anomalía. sin eliminar primero todos los registros hijos. por supuesto. 2) Define las claves principales.causada cuando un registro se elimina de una tabla maestra. Asegurándose de que cualquier actualización de clave primaria que se han propagado a los hijos relacionados con las claves foráneas en tabla. Definición de las formas normales de la Manera Más Fácil ¿Cómo puedo realizar una normalización de forma sencilla? ¿Por qué es fácil? En un mundo perfecto. la mayoría de los diseños modelo de base de datos relacional son muy similares. La normalización es. La secuencia de etapas implicadas en el proceso de normalización se llama formas normales. 3.1 Rol de la información para las empresas Ver presentación anexa.2 Elementos a tomar en cuenta en un diseño de BD Ver presentación anexa. Análisis y Diseño de una BD 3. en la tabla detalle.3 Reglas de negocio Ver presentación anexa.Taller de administración de Base de datos Oracle 10g 2009 3. es fácil y sobre todo es sentido común. garantizar la calidad de los elementos fabricados y la seguridad de funcionamiento. 3. Primer Forma Normal 1) Elimina la repetición de grupos. en la que tanto el maestro y los registros de detalle debe ser actualizado a fin de evitar registros huérfanos en detalle. 3. Eliminar anomalía.causada cuando se inserta datos en el detalle y no tiene registro principal. Hay. así como garantizar el repuesto en caso de ser necesario.. La normalización o estandarización es la redacción y aprobación de normas que se establecen para garantizar el acoplamiento de elementos construidos independientemente. con algunos conocimientos empresariales.es similar a la eliminación. .4 Normalización La normalización es la secuencia de las medidas por las que un modelo de base de datos relacional es creado y mejorado.

La clave primaria de la nueva entidad es aquel atributo sobre el cual el segundo atributo es dependiente. Segunda Forma Normal La segunda forma normal se refiere a las relaciones y dependencias funcionales entre atributos no-claves. El nuevo cuadro es una de las principales clave que consta de un solo campo. Si un atributo de una entidad es dependiente de otro atributo. la cual tiene relación de uno a muchos con la entidad original. la supresión de los datos de tablas transaccionales en las nuevas tablas. lo que deberá hacerse es remover los atributos no clave que dependen de otros atributos no clave. por tanto. 5) Todos los campos deben contener un único valor. De modo que si una entidad no se halla en segunda forma normal lo que deberemos hacer para convertirla será remover los atributos que son dependientes parcialmente (solo de parte) de la clave primaria. . eliminar los campos que son independientes de la clave principal.  Transforma las múltiples dependencias valoradas en dependencias funcionales. Una entidad que cumpla con la segunda forma normal debe tener las siguientes características: 1) La entidad debe estar en primera forma normal. 2) Que todos los atributos no claves son independientes de el resto de atributos no clave. Si una entidad tiene clave primaria compuesta de varios atributos y/o relaciones. Crear una nueva tabla para separar la parte parcialmente dependientes de la clave principal y sus dependientes campos. Tercera forma normal Para que una entidad esté en tercera forma normal deben cumplirse dos condiciones: 1) Que la entidad esté en segunda forma normal. pero cuando crea una tabla y tenemos valores repetidos estos campos son trasladados a una nueva tabla. 2NF crea relaciones de muchos a uno entre las relaciones dinámicas y los datos. De modo que si deseo transformar una entidad que no esté en tercera forma normal. entonces estos atributos deberían formar parte de una nueva entidad. 6) Todos los valores de cada campo debe tener el mismo dato. Esto implica que un valor de varios valores y no dependen de una clave principal. Cuarta forma normal Hace lo siguiente:  La tabla debe estar en 3NF o BCNF (Clave única) con 3NF. ya sea directamente o indirectamente. el cual no es parte de la clave primaria. Una clave primaria es única y. 4) Todos los campos distintos de la clave primaria deben depender de la clave principal. Indicando los dos puntos de una forma diferente. no se permiten valores duplicados. 2NF aparentemente realiza una función similar a la de 1NF.Taller de administración de Base de datos Oracle 10g 2009 3) Todos los registros deben ser identificados únicamente con una clave principal. Normalmente. deberán formar la base de una nueva entidad. 2) Que todos lo atributos no clave sean dependientes totalmente de la clave primaria. y si otro atributo depende únicamente de parte de tal identificador compuesto. 7) Crear una nueva tabla para mover la repetición de grupos de la tabla original. entonces el atributo y la parte de la clave primaria de la cual depende.

diseños de productos.5 Modelo entidad relación El modelo entidad-relación es el modelo conceptual más utilizado para el diseño conceptual de bases de datos. 3. Si no. Relación (interrelación) Es una correspondencia o asociación entre dos o más entidades. Cada relación tiene un nombre que describe su función. Las entidades se representan gráficamente mediante rectángulos y su nombre aparece en el interior. clientes. Un nombre de entidad sólo puede aparecer una vez en el esquema conceptual. a veces descrito como no trivial. Quinta forma normal Cumple las siguientes condiciones: 1) La tabla debe estar en 4NF. . Más tarde. la participación es opcional (parcial). el modelo entidad-relación sólo incluía los conceptos de entidad. El modelo entidad-relación está formado por un conjunto de conceptos que permiten describir la realidad mediante un conjunto de representaciones gráficas y lingüísticas. Las reglas que definen la cardinalidad de las relaciones son las reglas de negocio. una ocurrencia de la otra entidad participante.Taller de administración de Base de datos Oracle 10g 2009  Eliminar varios conjuntos de múltiples valores o varios valores dependencias. al menos. relación y atributo. empresas. Una entidad fuerte es una entidad que no es débil. Originalmente. oficios. Fue introducido por Peter Chen en 1976. como los atributos compuestos y las jerarquías de generalización. casas. empleados. Las relaciones se representan gráficamente mediante rombos y su nombre aparece en el interior. conciertos. Hay dos tipos de entidades: fuertes y débiles. concepto abstracto o suceso. se añadieron otros conceptos. La participación de una entidad en una relación es obligatoria (total) si la existencia de cada una de sus ocurrencias requiere la existencia de. excursiones. Por ejemplo: coches. Una entidad débil es una entidad cuya existencia depende de la existencia de otra entidad. Entidad Cualquier tipo de objeto o concepto sobre el que se recoge información: cosa. en lo que se ha denominado modelo entidad-relación extendido. etc. Las entidades que están involucradas en una determinada relación se denominan entidades participantes. 2) Las dependencias cíclicas deben ser eliminadas 3) En conclusion: 5NF es similar a 4NF en tanto que el intento de reducir al mínimo el número de campos de claves compuestas. El número de participantes en una relación es lo que se denomina grado de la relación La cardinalidad con la que una entidad participa en una relación especifica el número mínimo y el número máximo de correspondencias en las que puede tomar parte cada ocurrencia de dicha entidad. persona.

cada uno con un significado por sí mismo. Un atributo simple es un atributo que tiene un solo componente. el tamaño del registro se obtiene del tamaño y del tipo de dato de cada columna posea. nombre de vistas. Toda la información extensiva es portada por los atributos.7 Diccionario de Datos El diccionario de datos contiene la definición de todos los objetos que existen en la base de datos. A su vez. es posible calcular en bytes. por lo cual es necesario decidir que tipo de dato se debe usar para cada columna ya que en base a este punto se puede conocer el tamaño total del registro y así calcular la suma total por cada una de las tablas. Si no se especifica el tamaño y tipo de dato correcto. 3. en cambio esto puede ser totalmente contrario cuando se tiene millones de registros en una tabla. se debe considerar cuantos dígitos serán los máximos a insertar o si se tiene una columna de tipo varchar2. se pueden obtener beneficios destacados en cuanto al ahorro de espacio en disco. 3. tipos de datos. que no se puede dividir en partes más pequeñas que tengan un significado propio. si se tiene una columna que almacenará valores numéricos. Gráficamente. secuencias. etc.Taller de administración de Base de datos Oracle 10g 2009 Atributo Es una característica de interés o un hecho sobre una entidad o sobre una relación. es por esto la importancia del diseño de la base de datos. quizá el espacio en disco no se ve disminuido cuando se tienen tablas con pocos registros. se debe analizar cual será la información que contendrá la columna.6 Métricas de una BD La métrica de las bases de datos nos permite determinar el tamaño de los registros de nuestras tablas y de esta manera conocer el consumo de espacio en función del tiempo. Es una práctica muy útil para saber cuanto espacio será necesario y cuanto espacio podemos ahorrar. Un grupo de atributos se representa mediante un atributo compuesto cuando tienen afinidad en cuanto a su significado. Cada tipo de dato en Oracle tiene un tamaño diferente en bytes. el tamaño de los registros a futuro dependiendo de la frecuencia en que se vayan insertando registros en las tablas. índices. o en cuanto a su uso. Para seleccionar el tamaño y tipo de dato correcto. Un atributo compuesto es un atributo con varios componentes. Decidir el tipo de dato correcto y el tamaño adecuado es vital ya que haciéndolo acertadamente. se representan mediante bolitas que cuelgan de las entidades o relaciones a las que pertenece Los atributos pueden ser simples o compuestos. nombre de usuarios. Por ejemplo. tener en cuenta cual será la cadena máxima a insertar y en base a eso determinar la longitud del campo a declarar. Un atributo compuesto se representa gráficamente mediante un óvalo. El . Teniendo en cuenta la métrica. Los atributos representan las propiedades básicas de las entidades y de las relaciones. como por ejemplo nombre de las tablas.

3. all_ y user_. número de registros que las tablas contienen e información de seguridad para saber que usuarios tienen permitido el acceso a las tablas. comparar buen diseño vs Mal diseño Ver presentación anexa. nombre y tipos de datos en las columnas de las tablas. Las tablas con el prefijo user_ contienen solo las tablas que le pertenecen a un determinado usuario . Aquellas tablas que tienen el prefijo all_ contienen todas las tablas que le pertenecen a un usuario en específico además de las tablas a las que tiene permiso acceder dicho usuario.9 Hacer tangible un diseño de BD. Esta información es conocida como metadatos y se tienen dos tipos de vistas para acceder a estos datos: Data Dictionary Views Estas vistas se distinguen de las dynamic performance views por contener cualquiera de los tres prefijos: dba_. user_objects. Ejemplos de la información que contienen estas tablas incluyen el nombre de todas las tablas en la base. 3. Algunos ejemplos de estas vistas son: dba_users. las bases de datos Oracle contienen tablas que guardan información acerca de la misma base de datos. Adicionalmente. all_tables.Taller de administración de Base de datos Oracle 10g 2009 usuario SYS es el dueño del diccionario de datos y tiene todos los permisos sobre cualquier objeto de la base de datos.8 Buen diseño vs Mal diseño Ver presentación anexa. . Estas vistas están disponibles aún cuando la base de datos no está abierta mientras que las data dictionary views necesitan que la base este abierta para poder ser utilizadas. Las tablas que llevan el prefijo dba_ contienen todas las tablas de la base de datos pero solo usuarios con privilegios pueden haces uso de ellas. etc. Dynamic Performance Views Estas vistas se distinguen de las anteriores porque llevan el prefijo v$ y son útiles para ver las relaciones entre tablas y reglas definidas para almacenar información en las tablas.

dependiendo del tamaño definido para el extensión. un fichero que ocupe 1 Kb. (*) Espacio ocupado en el data block por la primera NEXT EXTENSION. El esquema muestra toda la cadena de almacenamiento de Oracle. la mínima unidad de almacenamiento de Oracle es el data block. y del tamaño definido para el data block. en realidad ocupa 4 Kb. Siguiendo con la cadena. y el espacio de los data blocks de Oracle se define durante la instalación y no puede ser cambiado. No depende de Oracle) · Data blocks de Oracle · Extents · Segments · DataFiles · Tablespaces (El más lógico). El tamaño de las unidades de asignación del sistema operativo (os blocks) se define durante el particionado del disco duro (FDISK. es . (#) Espacio ocupado en unidades de asignación del sistema operativo por los data blocks anteriores. Igual que la mínima unidad de almacenamiento de un disco duro es la unidad de asignación. ya que representa la mínima unidad de almacenamiento que es capaz de manejar Oracle. Como es lógico. Desde el nivel más físico al más lógico: · Unidades de asignación del sistema operativo (El más físico.Taller de administración de Base de datos Oracle 10g 2009 4. cada segmento (o cada extensión) se almacena en uno o varios bloques de datos. Diseño Físico de una BD 4. así si la unidad de asignación es de 4 Kb. FIPS…). El concepto de Data block es un concepto físico. el tamaño de un data block tiene que ser múltiplo del tamaño de una unidad de asignación.1 Data blocks Un data block es el último eslabón dentro de la cadena de almacenamiento. En un disco duro no es posible que un fichero pequeño ocupe menos de lo que indique la unidad de asignación.

4. . Un datafile está asociado a un solo tablespace y. 3… unidades de asignación. 8K. Son los "archivos de datos" donde se almacena la información físicamente. Un datafile puede tener cualquier nombre y extensión (siempre dentro de las limitaciones del sistema operativo). se irá ocupando el espacio que creó inicialmente. Un bloque de sistema operativo puede ser de 512 bytes a 2kb dependiendo del sistema operativo. aunque internamente esté vacío. Oracle hace esto para reservar espacio continuo en disco y evitar así la fragmentación. maestro-detalle. 12K… para que en el sistema operativo ocupen 1. y puede estar localizado en cualquier directorio del disco duro. 4. Un datafile tiene un tamaño predefinido en su creación (por ejemplo 100Mb) y este puede ser alterado en cualquier momento. la relación lógica entre tablespaces y datafiles es de 1-N. este ocupará tanto espacio en disco como hayamos indicado en su creación. aunque su localización típica suele ser $ORACLE_HOME/Database.2 OS blocks Son la estructura mínima de almacenamiento físico de información definidos al momento de particionar el disco duro a nivel de sistema operativo. a su vez. un tablespace está asociado a uno o varios datafiles. si cada unidad de asignación ocupa 4 K.3 Datafiles Un datafile es la representación física de un tablespace. 2. Es decir. Cuando creemos un datafile. Conforme se vayan creando objetos en ese tablespace. los data blocks pueden ser de 4K.Taller de administración de Base de datos Oracle 10g 2009 decir.

4.6 Funcionalidad de ASM Ver presentación anexa. 4.4 Consideraciones de disco Ver presentación anexa. .Taller de administración de Base de datos Oracle 10g 2009 4.5 Distribución de la BD en disco Ver presentación anexa.

Este tipo de configuración pone a cargo del sistema operativo la gestión y el mantenimiento de los archivos definidos por el DBA. dentro de una segunda base de datos utilizada solamente por ASM para llevar un registro de las localidades del grupo de discos. los cuales se pueden cambiar si así se desea. para ello pone a cargo de Oracle el mantenimiento del almacenamiento de la base de datos. . Oracle los toma como una unidad de almacenamiento individual.  Raw Devices: son discos que no son manejados por el sistema operativo. la distribución se muestra a continuación: • SGA 160 MB • PGA 16 MB • Procesos de Oracle 40 MB 5. en vez de utilizar un grupo de datafiles individuales. 5.1 Prerrequisitos para la instancia Cada instancia necesita un mínimo de 216 MB de memoria RAM para alojar las estructuras de memoria y los procesos de la misma.  ASM (Automated Storage Management): Es un mecanismo de almacenamiento nuevo.Taller de administración de Base de datos Oracle 10g 2009 5. disponible en la versión Oracle 10g.4 Tablespaces Default Cuando se crea una base de datos Oracle crea automáticamente los siguientes cuatro tablespace:  System: almacena los datos de las tablas de diccionario. cuando el sistema operativo se encarga de escribir y leer el disco duro. es Oracle el que se encarga directamente de estas tareas. sugiere una serie de nombres de archivos y directorios. y el código PL/SQL. Cuando se elige esta configuración DBCA.  Oracle maneja las definiciones de almacenamiento de la base de datos. Creación de una BD Oracle 5. ASM permite definir un grupo de discos para almacenamiento de archivos.3 Configuración de storage Oracle ofrece tres tipos de almacenamiento para la base de datos. basados en OFA.2 Prerrequisitos para la BD Como prerrequisito para la creación de una base de datos es necesario cumplir con los siguientes prerrequisitos: • Contar con 1GB libre de espacio en disco duro. Esta diseñado para aliviar la carga de disco y gestión de almacenamiento.  Temp: se utiliza para realizar grandes operaciones de ordenamiento. cuando se selecciona Raw Devices. es decir a diferencia de cómo se maneja siempre. • Una estructura de archivos para almacenar los datafiles por ejemplo: /u02/oradata/base1/ 5.  Al utilizar uno o varios grupos de discos como una unidad lógica.  Sysaux: almacena segmentos utilizados por otras funciones de oracle como Automatic Workload Repository OLAP. las cuales se mencionan a continuación:  File System: es la configuración de almacenamiento mas común para Oracle.

o que los clientes hagan conexiones persistentes y de larga duración a la base de datos. 5. Nota: para que se pueda ejecutar correctamente esta herramienta. Se utiliza esta modalidad cuando un gran numero de usuarios necesitan conectarse a la base de datos simultáneamente y al mismo tiempo utilizar eficientemente los recursos del sistema.5 Configuración dedicada En esta configuración para cada cliente que se conecte. disponible en disco duro (aproximadamente 1 Gb). Se debe de utilizar esta opción cuando se espere que el número total de conexiones de clientes sea pequeño.6 Configuración compartida Bajo esta configuración un número significativo de clientes comparten un conjunto de recursos que les fue asignado. ejecutaremos el comando dbca en una terminal de UNIX.Taller de administración de Base de datos Oracle 10g 2009   Users: se utiliza como tablespace default para almacenar la información de los usuarios de la base de datos. como se muestra en la pantalla. estén correctamente definidas. 5. Undotbs1: se utiliza para almacenar información de una transacción. para consistencia de lecutra y recuperación. . y también debemos tener el espacio necesario. Para iniciar la herramienta “dbca”. 5. debemos tener en cuenta que las variables de ambiente que se explicaron durante la instalación de Oracle. la base de datos asignara recursos específicamente para servir solo a ese cliente. A continuación se presenta un tutorial de cómo se crea una base de datos llamada “refac” paso a paso en DBCA. incluye una útil herramienta que nos permite crear bases de datos de manera visual.7 Utilización de la herramienta DBCA EL manejador de bases de datos Oracle.

aquí elegiremos la opción de “Crear una base de datos” y le daremos clic al botón “Next”. En la segunda pantalla veremos varias opciones para manejar las bases de datos que tenemos (crear una base de datos. Aquí tenemos que dar clic en el botón “Next”. borrar una base de datos. configurar una base de datos.). .Taller de administración de Base de datos Oracle 10g 2009 La primera pantalla que se nos muestra la herramienta es la pantalla de bienvenida y es la que se muestra arriba. etc.

En esta pantalla el asistente nos pide el nombre de la base de datos y el identificador de la misma. aquí es recomendable poner el mismo nombre en ambos campos para evitar confusiones. En nuestro ejemplo usaremos una base de propósito general por lo que seleccionaremos esta opción y daremos clic en “Next”. entre ellos podemos crear bases de datos personalizadas. bases de dataguard. . bases de propósito general. bases de datos para data warehouse.Taller de administración de Base de datos Oracle 10g 2009 Ahora la pantalla que vemos nos muestra los tipos de bases de datos que podemos crear.

esta herramienta puede llegar a ser muy útil. .Taller de administración de Base de datos Oracle 10g 2009 La pantalla que nos muestra ahora el dbca nos indica si queremos usar el Enterprise Manager para administrar la base de datos. también podemos especificar un solo password para todos estos usuarios. pero en este momento no la configuraremos por lo que deshabilitaremos esta opción y daremos clic en “Next”. En el siguiente paso nos pedirá que especifiquemos los passwords para los usuarios SYS y SYSTEM. el Enterprise Manager es otra herramienta de Oracle que nos permitirá administrar nuestra base de datos de manera grafica en un navegador Web. en este caso usaremos esta opción y daremos clic en “Next”.

seleccionaremos “File System” y damos clic en “Next” Especificaremos los directorios donde se guardaran los archivos de la base de datos aquí daremos clic en “Browser” y se nos mostrará una pantalla como la siguiente: .Taller de administración de Base de datos Oracle 10g 2009 Aquí se nos pregunta el mecanismo de almacenamiento que vamos a usar para nuestra base de datos.

Taller de administración de Base de datos Oracle 10g 2009 Aquí buscaremos el directorio que previamente creamos en la ruta “/u02” en este directorio buscamos “refac” lo seleccionamos y damos clic en “OK”. En la siguiente pantalla se nos muestran las opciones para la recuperación de la base de datos. . aquí no habilitaremos nada para nuestro ejemplo. después solo damos clic en “Next”.

en la primera pestaña se muestran los de memoria para la base de datos. pero en este caso solo usaremos la cantidad mínima de memoria disponible). por lo que damos clic en “Next” sin marcar nada.Taller de administración de Base de datos Oracle 10g 2009 En esta pantalla el asistente nos pregunta si queremos crear los esquemas de ejemplo que trae por defecto el manejador. aquí seleccionaremos una configuración típica y le daremos el porcentaje mínimo que se nos permita (más adelante se explicará en el taller la manera de cómo calcular esta distribución de memoria de acuerdo a nuestras necesidades y recursos. pero no habilitaremos nada en esta pantalla. . En esta pantalla se presentan parámetros importantes de la base de datos.

En la pestaña de “carácter set” se configura el juego de caracteres que usará la base de datos. también aquí dejaremos todo por default. .Taller de administración de Base de datos Oracle 10g 2009 En la pestaña de “Sizing” se nos pregunta el tamaño del Block Size. y el número de usuarios de Sistema operativo que se podrán conectar simultáneamente a la base de datos. nosotros dejaremos todo como viene por default. el lenguaje y los formatos de fecha.

pero en el ejemplo usaremos el primer modo. aquí verificaremos donde se van a guardar todos los archivos de la base de datos.Taller de administración de Base de datos Oracle 10g 2009 En esta última pestaña se debe de elegir el modo en que operará la base de datos. . y después daremos clic en “Next”. en el árbol de directorios de la izquierda nos podremos desplazar entre ellos. tenemos 2 opciones “Dedicated Server Mode” y “Shared Server Mode” estos modos serán también abordados en el taller. Ahora veremos una pantalla como esta.

Taller de administración de Base de datos Oracle 10g 2009 Primero verificaremos los control files todos deben de estar en la ruta que se muestra. Después verificaremos que los data files estén en la ruta correcta (/u02/refac). .

La penúltima pantalla que se nos muestra es esta.Taller de administración de Base de datos Oracle 10g 2009 Por último verificamos cada uno de los redo logs groups en la misma ruta y daremos clic en “Next”. . aquí solo activaremos la casilla de “Crear base de datos” y daremos clic en “Finish”.

Si todo fue correcto se comenzará a crear la base de datos con una pantalla como esta y habremos terminado.Taller de administración de Base de datos Oracle 10g 2009 Ahora solo se nos muestra una pantalla de confirmación donde se presentan todos los parámetros con que será creada la base de datos. . después de verificar estos parámetros daremos clic en “OK”.

aquí es donde se realizan todas las operaciones que va a realizar el programa. PL/SQL 6. etc). por eso se llama bloque anónimo.1 Bloques anónimos Estructura de un bloque de PL/SQL La unidad mínima de agrupamiento de código en PL/SQL es el bloque. Un bloque de PL/SQL contiene la ejecución. Un bloque de PL/SQL contiene las siguientes 4 secciones: ENCABEZADO (HEADER) IS SECCIÓN DE DECLARACIÓN BEGIN SECCIÓN DE EJECUCIÓN EXCEPTION EXCEPCIONES END. Bloque Anónimo Vamos a comenzar por el tipo de bloque mas sencillo que existe. PL/SQL permite tener bloques anónimos y bloques nombrados (procedimientos. cursores. éste tipo de bloque no contiene sección de encabezado por lo tanto no tiene un nombre asignado. etc. tipos de datos. básicamente los bloques anónimos sirven de contenedores para ejecutar pequeños scripts o hacer llamadas a otros bloques PL/SQL como procedures o funciones. Excepciones (opcional) Maneja las excepciones generadas por el programa en tiempo de ejecución. etc. functions. funciones.Taller de administración de Base de datos Oracle 10g 2009 6. Ejecución (obligatoria) Es el corazón de un programa de PL/SQL. . Esta parte identifica al bloque por medio de un nombre. la declaración de variables y la sección de manejo de excepciones (errores). Encabezado (opcional) Esta sección es utilizada para los bloques nombrados como los stored procedures. Declaración (opcional) Como su nombre lo indica aquí se realizan las declaraciones de variables. Este tipo de bloque no puede ser llamado por otro código debido a que no tiene un handler ó manejador por el cuál se identifique al programa. triggers.

Sentencias [EXCEPTION] -. salvo porque se reemplaza la seccion DECLARE por la secuencia PROCEDURE .. IS en la especificación del procedimiento.Sentencias control de excepcion END [<procedure_name>]. . se producirá. tipos.. declaración de variables.. Un procedimiento tiene un nombre. etc . Los parámetros pueden ser de entrada (IN). CREATE OR REPLACE PROCEDURE Actualiza_Saldo(cuenta NUMBER. un error.)] IS -.Declaracion de variables locales BEGIN -. . La sintaxis de un procedimiento almacenado es la siguiente: CREATE [OR REPLACE] PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT] <type>.... El uso de OR REPLACE permite sobreescribir un procedimiento existente. y se toma ese valor en caso de que no especifiquemos nada.2 Procedimientos Un procedimiento es un subprograma que ejecuta una acción especifica y que no devuelve ningún valor... de salida (OUT) o de entrada salida (IN OUT). Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo. constantes.. ] BEGIN … todo lo que se desea ejecutar … [ EXCEPTION . El valor por defecto es IN.. <param2> [IN|OUT|IN OUT] <type>. ] END. La sintaxis es muy parecida a la de un bloque anónimo. Debemos especificar el tipo de datos de cada parámetro.Taller de administración de Base de datos Oracle 10g 2009 Sintaxis: [ DECLARE . 6.. Hay que notar que las secciones en “[ ]” son opcionales y no es necesario ponerlas en un bloque anónimo a menos que se vayan a utilizar.. manejadores de excepciones . un conjunto de parámetros (opcional) y un bloque de código. Si se omite. y el procedimiento existe.

También podemos asignar un valor por defecto a los parámetros. utilizando la clausula DEFAULT o el operador de asiganción (:=) . Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo. END. . Si el sistema nos indica que el procedimiento se ha creado con errores de compilación podemos ver estos errores de compilacion con la orden: SHOW ERRORS en SQL *Plus. Estas son: Notación posicional: Se pasan los valores de los parámetros en el mismo orden en que el procedure los define. BEGIN Actualiza_Saldo(200501. COMMIT.Sentencias UPDATE SALDOS_CUENTAS SET SALDO = new_saldo. Notación nominal: Se pasan los valores en cualquier orden nombrando explicitamente el parámetro. END Actualiza_Saldo. COMMIT. CREATE OR REPLACE PROCEDURE Actualiza_Saldo(cuenta NUMBER. END Actualiza_Saldo.new_saldo => 2500). BEGIN Actualiza_Saldo(cuenta => 200501.2500).Declaracion de variables locales BEGIN -. Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de ejecutarlo (en realidad es válido para cualquier subprograma). END.Sentencias UPDATE SALDOS_CUENTAS SET SALDO = new_saldo. new_saldo NUMBER DEFAULT 10 ) IS -. FX_ACTUALIZACION = SYSDATE WHERE CO_CUENTA = cuenta.Declaracion de variables locales BEGIN -.Taller de administración de Base de datos Oracle 10g 2009 new_saldo NUMBER) IS -. FX_ACTUALIZACION = SYSDATE WHERE CO_CUENTA = cuenta.

Si se omite. exceptuando que solo pueden ser de entrada. La sintaxis de los parámetros es la misma que en los procedimientos almacenado.. Las funciones y procedimientos estan estructuradas de forma similar. BEGIN Valor := fn_Obtener_Precio('000100'). .3 Funciones Una función es un subprograma que procesa un valor. se producirá. y la función existe. un error. Si el sistema nos indica que el la función se ha creado con errores de compilación podemos ver estos errores de compilación con la orden SHOW ERRORS en SQL *Plus.Taller de administración de Base de datos Oracle 10g 2009 6. Ejemplo: CREATE OR REPLACE FUNCTION fn_Obtener_Precio(p_producto VARCHAR2) RETURN NUMBER IS result NUMBER. La sintaxis para construir funciones es la siguiente: CREATE [OR REPLACE] FUNCTION <fn_name>[(<param1> IN <type>. . END . Una vez creada y compilada la función podemos ejecutarla de la siguiente forma: DECLARE Valor NUMBER. [EXCEPTION] -. END. BEGIN return(result). EXCEPTION WHEN NO_DATA_FOUND THEN return 0.)] RETURN <return_type> IS result <return_type>.Sentencias control de excepcion END [<fn_name>]. <param2> IN <type>. BEGIN SELECT PRECIO INTO result FROM PRECIOS_PRODUCTOS WHERE CO_PRODUCTO = p_producto. return(result).. El uso de OR REPLACE permite sobreescribir una función existente. excepto que las funciones tienen una clausula de RETUNR para devolver un valor como resultado del procesamiento del valor de entrada.

En ella es posible declarar los tipos.]} -.. Haciendo una analogía con el mundo de C.) en la base de datos como una sola unidad. funciones. . DESCRIPCION. variables. Lo primero que debemos tener en cuenta es que los paquetes están formados por dos partes: la especificación y el cuerpo..). cursores y subprogramas disponibles para su uso posterior desde fuera del paquete.Declaraciones de procedimientos y funciones públicas {[FUNCTION <FunctionName>(<Parameter> <Datatype>... La sintaxis general para crear el cuerpo de un paquete es muy parecida a la de la especificación. excepciones. La especificación del paquete y su cuerpo se crean por separado. no se implementa el código. variables ..Declaraciones de tipos y registros públicas {[TYPE <TypeName> IS <Datatype>.). variables. tan solo se añade la palabra clave BODY. En el cuerpo de un package podemos declarar nuevos subprogramas y tipos. El cuerpo del paquete debe implementar lo que se declaró inicialmente en la especificación. En la especificación del paquete sólo se declaran los objetos (procedures.Declaraciones de variables y constantes publicas -. la especificación es como el archivo de cabecera de un programa en C.) RETURN <Datatype>. pero estos seran privados para el propio package.]} END <pkgName>. . Los objetos declarados en la especificación del paquete son accesibles desde fuera del paquete por otro script de PL/SQL o programa.También podemos declarar cursores {[<ConstantName> CONSTANT <Datatype> := <valor>.]} {[PROCEDURE <ProcedureName>(<Parameter> <Datatype>.. tipos . Para crear la especificación de un paquete la sintaxis general es la siguiente: CREATE [OR REPLACE] PACKAGE <pkgName> IS -. fn_Obtener_Precio(CO_PRODUCTO) FROM PRODUCTOS.. funciones.4 Paquetes Un paquete es una estructura que agrupa objetos de PL/SQL compilados(procedures. Esto nos permite agrupar la funcionalidad de los procesos en programas que guardan relación entre si.Taller de administración de Base de datos Oracle 10g 2009 Las funciones pueden utilizarse en sentencias SQL de manipulación de datos (SELECT. constantes.. 6. y se implementa el código de los subprogramas.]} {[<VariableName> <Datatype>. UPDATE.. INSERT y DELETE): SELECT CO_PRODUCTO.]} -. Es el donde debemos escribir el código de los subprogramas. La especificación es la interfaz con las aplicaciones.

Los packages permiten crear tipos.. PROCEDURE <ProcedureName>(<Parameter> <Datatype>.Declaraciones de variables y constantes privadas -. variables y subprogramas que son privados o públicos. .) IS -.Control de excepciones END. Cuando un procedimiento es llamado en un paquete.Implementeacion de la funcion return(<Result>)..Control de excepciones END. [EXCEPTION] -.Implementacion de procedimientos y funciones FUNCTION <FunctionName>(<Parameter> <Datatype>. se carga todo el paquete. Los paquetes pueden llegar a ser programas muy complejos y suelen almacenar gran parte de la lógica de negocio.) RETURN <Datatype> IS -.]} -..]} -.Variables locales de la funcion BEGIN -..Implementacion de procedimiento [EXCEPTION] -.]} {[<VariableName> <Datatype>. END <pkgName>. Las ventajas de usar packages:    Permite agrupar juntos objetos relacionados. Apesar que la primera vez puede ser muy costoso. la respuesta es más rápida en los llamados subsecuentes.. .Taller de administración de Base de datos Oracle 10g 2009 CREATE [OR REPLACE] PACKAGE BODY <pkgName> IS -.Variables locales de la funcion BEGIN -. Es posible modificar el cuerpo de un paquete sin necesidad de alterar por ello la especificación del mismo.Declaraciones de tipos y registros privados {[TYPE <TypeName> IS <Datatype>.También podemos declarar cursores {[<ConstantName> CONSTANT <Datatype> := <valor>. tipos y subprogramas como si fueran un solo modulo de PL/SQL.

. colN] [OR {DELETE|INSERT|UPDATE [OF col1. un error. UPDATE BEFORE . que se ejecuta como consecuencia de una determinada instrucción SQL (una operación DML: INSERT. antes o después de la orden.5 Triggers Un trigger es un bloque PL/SQL asociado a una tabla.. El uso de OR REPLACE permite sobreescribir un trigger existente.. FOR EACH ROW La cláusula WHEN sólo es válida para los disparadores con nivel de fila. La sintaxis para crear un trigger es la siguiente: CREATE [OR REPLACE] TRIGGER <nombre_trigger> {BEFORE|AFTER} {DELETE|INSERT|UPDATE [OF col1. Los triggers pueden definirse para las operaciones INSERT. DELETE. Los disparadores con nivel de fila se identifican por la cláusula FOR EACH ROW en la definición del disparador. . se producirá. col2.variables locales BEGIN -. colN].Taller de administración de Base de datos Oracle 10g 2009 6. UPDATE o DELETE) sobre dicha tabla.. Los disparadores con nivel de orden se activan sólo una vez. AFTER Descripción Define qué tipo de orden DML provoca la activación del disparador. El modificador BEFORE AFTER indica que el trigger se ejecutará antes o despues de ejecutarse la sentencia SQL definida por DELETE INSERT UPDATE. sobre las filas que satisfagan la restricción. Si se omite. se establece una restricción.. Si se acompaña del modificador WHEN. . . el trigger solo actuará. El alcance de los disparadores puede ser la fila o de orden. Valor INSERT.. y el trigger existe. UPDATE o DELETE. El modificador FOR EACH ROW indica que el trigger se disparará cada vez que se realizan operaciones sobre una fila de la tabla.Sentencias control de excepcion END <nombre_trigger>.Sentencias [EXCEPTION] -. La siguiente tabla resume los contenidos anteriores. y pueden ejecutarse antes o después de la operación.]} ON <nombre_tabla> [FOR EACH ROW [WHEN (<condicion>)]] DECLARE -.. col2.. Define si el disparador se activa antes o después de que se ejecute la orden. Los disparadores con nivel de fila se activan una vez por cada fila afectada por la orden que provocó el disparo. Si incluimos el modificador OF el trigger solo se ejecutará cuando la sentencia SQL afecte a los campos incluidos en la lista.

100. es legal en el cuerpo de un disparador. El disparador se activa como parte de la ejecución de la orden que provocó el disparo. Utilizando esta variable podemos acceder a los datos que se están insertando. Los disparadores se activan al ejecutarse la sentencia SQL. Estas variables se utilizan del mismo modo que cualquier otra variable PL/SQL. se ejecuta el disparador de tipo BEFORE (disparador previo) con nivel de orden.local variables BEGIN INSERT INTO PRECIOS_PRODUCTOS (CO_PRODUCTO.SYSDATE). UPDATE. o Se ejecuta la propia orden. DELTE) que ha ejecutado el trigger.  Si existe. En tal caso es necesario conocer el orden en el que se van a ejecutar. si existe. INSERT INTO PRODUCTOS (CO_PRODUCTO. DESCRIPCION) VALUES ('000100'. el disparador de tipo AFTER (disparador posterior) con nivel de fila. y . END . ROLLBACK o SAVEPOINT.Taller de administración de Base de datos Oracle 10g 2009 Dentro del ambito de un trigger disponemos de las variables OLD y NEW . Cualquier orden que sea legal en un bloque PL/SQL.PRECIO. el disparador de tipo BEFORE con nivel de fila. El trigger se ejecutará cuando sobre la tabla PRODUCTOS se ejecute una sentencia INSERT.  Se ejecuta.FX_ACTUALIZACION) VALUES (:NEW. Orden de ejecución de los triggers Una misma tabla puede tener varios triggers. con la salvedad de que no es necesario declararlas.CO_PRODUCTO. El siguiente ejemplo muestra un trigger que inserta un registro en la tabla PRECIOS_PRODUCTOS cada vez que insertamos un nuevo registro en la tabla PRODUTOS: CREATE OR REPLACE TRIGGER TR_PRODUCTOS_01 AFTER INSERT ON PRODUCTOS FOR EACH ROW DECLARE -.  Para cada fila a la que afecte la orden: o Se ejecuta si existe. con las siguientes restricciones:  Un disparador no puede emitir ninguna orden de control de transacciones: COMMIT. el disparador de tipo AFTER con nivel de orden.'PRODUCTO 000100'). son de tipo %ROWTYPE y contienen una copia del registro antes (OLD) y despues(NEW) de la acción SQL (INSERT. o Se ejecuta si existe. Restricciones de los triggers El cuerpo de un trigger es un bloque PL/SQL. actualizando o borrando.

La siguiente tabla muestra los valores de OLD y NEW. UPDATE. TRUE si la orden de disparo es UPDATE. NEW Valores que serán insertados cuando se complete la orden. Su comportamiento es el siguiente: Predicado INSERTING UPDATING DELETING Comportamiento TRUE si la orden de disparo es INSERT. Estas variables se utilizan del mismo modo que cualquier otra variable PL/SQL. Utilización de predicados de los triggers: INSERTING. UPDATING y DELETING Dentro de un disparador en el que se disparan distintos tipos de órdenes DML (INSERT. se confirma o cancela también el trabajo realizado por el disparador. TRUE si la orden de disparo es DELETE. antes del borrado de la fila. Valores originales de la fila. No definidos. FALSE en otro caso. ACCION SQL INSERT UPDATE DELETE OLD No definido. DELTE) que ha ejecutado el trigger. UPDATE y DELETE). son de tipo %ROWTYPE y contienen una copia del registro antes (OLD) y despues(NEW) de la acción SQL (INSERT. Por razones idénticas. antes de la Nuevos valores que serán escritos cuando se actualización. FALSE en otro caso. Los registros OLD y NEW son sólo válidos dentro de los disparadores con nivel de fila. complete la orden. Utilizando esta variable podemos acceder a los datos que se están insertando. hay tres funciones booleanas que pueden emplearse para determinar de qué operación se trata. UPDATING y DELETING. FALSE en otro caso. . El cuerpo del disparador no puede contener ninguna declaración de variables LONG o LONG RAW Utilización de :OLD y :NEW Dentro del ambito de un trigger disponemos de las variables OLD y NEW . Estos predicados son INSERTING. todos los campos toman el valor NULL. con la salvedad de que no es necesario declararlas. actualizando o borrando. todos los campos toman valor NULL. ningún procedimiento o función llamado por el disparador puede emitir órdenes de control de transacciones. Podemos usar OLD y NEW como cualquier otra variable PL/SQL.Taller de administración de Base de datos Oracle 10g 2009   forma parte de la misma transacción que dicha orden. Valores. Cuando la orden que provoca el disparo es confirmada o cancelada.

Taller de administración de Base de datos Oracle 10g 2009 Ejercicio Procedure Crear un procedimiento que recupere los montos de venta del mes en curso por sucursal. un mes inicial y un mes final. se resten los productos vendidos al inventario de la sucursal. Crear un trigger que cuando se efectué una venta. y el porcentaje que representa de la venta total mensual en forma descendente. Listando sucursal. y despliegue los montos de venta en cada sucursal asociada a esa zona en los últimos tres meses. Dicha lista que se envíe a un archivo de texto. Crear una función que reciba como parámetro una zona. proveedor. se le declare un sueldo de 30 mil pesos mas comisiones con un porcentaje de 10 si la sucursal hace ventas mayores al millón de pesos. . Los resultados debe enviarlos a un archivo de texto. Crear un package que consulte diariamente el inventario en todas las sucursales. Crear un procedimiento que consulte el monto de venta mensual por producto en cada sucursal. los montos de ventas y el porcentaje de incremento o decremento entre ambos meses. el nombre del vendedor con mayor venta en cada sucursal y el total de sus ventas. el nombre del producto. que haga la comparativa de ventas entre ambas y muestre. asociados al nombre del proveedor de cada producto. Crear un trigger que cuando se le asigne a un empleado el puesto de gerente de surcursal. porcentaje del monto total. y liste los productos que se encuentran agotados. Crear una función que reciba como parámetros una sucursal. monto de venta mensual.

Se pueden consultar los regustros en la tabla plan table utilizando la sentencia SELECT de forma que se pueden ver los pasos en el plan de ejecución para la sentencia que se analizó. Su manejo se hace de forma inteligente.Taller de administración de Base de datos Oracle 10g 2009 7. La sentencia EXPLAIN PLAN se ejecuta muy rápido. se necesitan privilegios de INSERT en la tabla PLAN TABLE. La diferencia es que cuando se ejecuta el EXPLAIN PLAN sobre vistas. Optimización de Queries 7. sin embargo es recomendable eliminarlos una vez que se terminen de utilizar. Esto es porque la sentencia es analizada de forma simple y su plan de ejecución almacenado en la tabla plan table. No se necesitan privilegios especiales de sistema para usar la sentencia EXPLAIN PLAN.  Lectura/Escritura   B-tree (árboles binarios) Function Based . Aumenta la velocidad de respuesta de la consulta. El plan de ejecución es una lista de tareas de ordenamientos que desgloza una operación de SQL potencialmente compleja en una serie de operaciones de acceso básico a datos. y se deben tener privilegios suficientes para ejecutar la setencia que se desea analizar. El plan de ejecución esta hecho disponible en forma de registros insertados en una tabla especial llama plan table. Sin embargo. mejorando su rendimiento y optimizando su resultado. La sentencia EXPLAIN PLAN permite ingresar una sentencia SQL a Oracle y la base de datos tiene que preparar el plan de ejecución sin tener que ejecutarlo. aun si la sentencia que esta siendo analizada es un query que pueda tardar horas. Se pueden mantener varios planes de ejecución en la tabla plan table. Es el propio Oracle quien decide qué índice se necesita. Hay tres tipos de índices en Oracle. La sentencia actual nunca es ejecutada por el EXPLAIN PLAN.2 Índices Un índice es una estructura de memoria secundaria que permite el acceso directo a las filas de una tabla (esté o no agrupada).1 Explain plan Antes que el servidor de base de datos pueda ejecutar una sentencia. 7. se necesitan permisos en todas las tablas con las que construyeron la vista. Tipos de Índices. cada uno de ellos con un identificador diferente. Oracle debe primero analizar la sentencia y desplegar el plan de ejecución.

. Bitmap --> 30 col. El mantenimiento de un índice tiene efecto sobre el rendimiento de las operaciones de eliminación.  Un índice basado en hashing para mantener las filas de un grupo de tablas (cluster) organizado por hash. Oracle de forma automática también crea índices. No indexe tablas que son actualizadas con mucha frecuencia. Al crearse la tabla se crea:  Un índice UNIQUE basado en B*-tree para mantener las columnas que se hayan definido como clave primaria de una tabla utilizando el constraint PRIMARY KEY de una tabla no organizada por índice.    Indexe solamente las tablas cuando las consultas no accedan a una gran cantidad de filas de la tabla. inserción y actualización.  Un índice UNIQUE basado en B*-tree para mantener la restricción de unicidad de cada grupo de columnas que se haya declarado como único utilizando el constraint UNIQUE. Consideraciones: Un índice sólo es efectivo cuando es utilizado. ORACLE impone dos restricciones:  El número máximo de columnas: Btree --> 32 col.  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. Las consultas muy complejas (en la cláusula WHERE) por lo general no ganan ventaja con el uso de los índices.Taller de administración de Base de datos Oracle 10g 2009   Reserve key Sólo lectura (read only)     Bitmap Bitmap join Index-organized table (algunas veces usados en lectura/escritura) Cluster y hash cluster  Domain (muy específicos en aplicaciones Oracle) Índices creados automáticamente. Indexe aquellas tablas que no tengan muchos valores repetidos en las columnas escogidas.  El espacio requerido para almacenar una clave no puede exceder la mitad del espacio disponible para almacenar datos en un bloque ORACLE (restricciones en Oracle 8i) Reglas en la construcción de Índices.

Taller de administración de Base de datos Oracle 10g 2009 Sintaxis.]index options ..]) UNIQUE garantizan que en una tabla (o “cluster”) no puedan existir dos filas con el mismo valor. ALTER INDEX [schema.] nombre_tabla (columna1 [. Básica CREATE INDEX nombre_indice ON [esquema. columna2. Modificación.. .

se utilizan ROWIDs restringidos para indicar la dirección de la fila. Si una fila posee para todas las columnas de la clave el valor NULL. Indexa tablas dinámicas con el valor único de los identificadores de columna. tablas pequeñas de datos estáticos. Si la tabla no está particionada. Hay que respetar una serie de convenios. en el índice no existirá una entrada correspondiente a dicha fila. Nivel 2. Los siguientes convenios son utilizados para el almacenamiento en un índice basado en B*. Nivel 1. Se estructura como un árbol cuya raíz contiene múltiples entradas y valores de claves que apuntan al siguiente nivel del árbol. Nivel 0.Tree: En caso de que un índice no sea UNIQUE. Esto se debe a que todas las filas de la tabla no se encuentran en un mismo segmento y con esta política el índice requiere menos . DROP INDEX [schema.Taller de administración de Base de datos Oracle 10g 2009 Eliminación.]index [FORCE] Estructura B* Tree. Indexa largas tablas o con poca cardinalidad. si múltiples filas poseen el mismo valor de la clave en la estructura del índice se repetirán los valores de dichas claves.

Son efectivos para columnas simples con poca cardinalidad.Taller de administración de Base de datos Oracle 10g 2009 espacio en disco. . Son más rápidos que los B*-Tree en entornos de read-only y almacenan valores de 0 ó 1 en el ROWID. Ejemplo: create bitmap index person_region on person (region). esto es muchos valores distintos. Estructura Bitmap.

Sign up to vote on this title
UsefulNot useful