Tema 26.docx
Document Details
Uploaded by Oganesson93
Universidad de Valladolid
Tags
Full Transcript
Tema 26. Administración de base de datos ORACLE: Arquitectura. Instancia de Base de Datos. Procesos. Ficheros de datos. Ficheros de log, de control y de parámetros. Creación de bases de datos. Diccionario de Datos. Vistas del Diccionario de Datos. Arquitectura de Oracle Para comunicar con el servi...
Tema 26. Administración de base de datos ORACLE: Arquitectura. Instancia de Base de Datos. Procesos. Ficheros de datos. Ficheros de log, de control y de parámetros. Creación de bases de datos. Diccionario de Datos. Vistas del Diccionario de Datos. Arquitectura de Oracle Para comunicar con el servidor de bases de datos, Oracle Database proporciona un sistema de al menos dos capas. Lo que implica a un cliente y a un servidor, los cuales utilizan alguna red de computadoras para dicha conexión. La comunicación entre el cliente y el servidor se realiza a través de dos procesos: - Proceso de usuario. Software que se ejecuta en el lado del cliente y se encarga de recoger las instrucciones lanzadas por el usuario y enviarlas al servidor. - Proceso servidor. Software que se ejecuta en el servidor de bases de datos y que se encarga de procesar el código lanzado por el usuario. Existen dos formas de trabajar del servidor: - Servidor dedicado: es la forma más normal de trabajar. En ella por cada proceso servidor atiende a un único proceso de usuario. Dicho de otro modo, hay tantos procesos servidores como procesos de usuario. - Servidor compartido. En este caso cada proceso servidor atiende a varios procesos de usuario. Uno, o más, procesos, llamados dispatchers (repartidores), se encargan de asignar a cada proceso de usuario el proceso servidor adecuado. En este modo se ahorra memoria, ya que la memoria de usuarios se almacena en la zona global compartida (llamada SGA) pero no es tan eficiente. -- -- -- -- Hay dos elementos en la comunicación cliente/servidor que conviene diferenciar: - Conexión. Mecanismo de comunicación entre el lado del cliente y el lado del servidor. A los extremos de esa comunicación se encuentran los procesos de usuario y de servidor. - Un proceso cliente realiza una petición a la base de datos. - Listener es un proceso del servidor que "escucha" las peticiones de los procesos cliente y recoge dicha petición. - Puede pasar: - Servidor dedicado: El listener estable conexión entre cliente y servidor y comenzarán a comunicarse el proceso de usuario con el proceso servidor correspondiente. - Servidor compartido: El listener redirigirá la petición al dispatcher correspondiente para que sea este el que gestione la comunicación entre el proceso cliente y el servidor. - Sesión. Abarca la comunicación desde el mismo cliente hasta llegar a la base de datos. Una sesión requiere autentificar al usuario y otorgarle los recursos necesarios para una correcta comunicación. La sesión finaliza cuando el usuario abandona la aplicación de usuario o bien cuando desconecta. Un mismo usuario puede establecer varias sesiones (normalmente). Los datos de la sesión se almacenan en el servidor. Los administradores pueden indagar sobre las sesiones actuales a través de la vista V\$SESSION. Un servidor Oracle Database es el conjunto formado por estos dos elementos: - La instancia de Oracle. Formada por el conjunto de procesos y las estructuras de datos en memoria que requiere el servidor cuando está en funcionamiento. - Archivos de la base de datos. Los archivos en disco que almacenan de forma permanente la información de la base de datos. La base de datos en sí, la forman los archivos de datos, los de control y los Redo Log. ![](media/image4.png) **Instancia de base de datos** Un servidor de Oracle puede poseer más de una instancia, pero en general en este tema trabajaremos bajo la hipótesis de tener un sistema de instancia simple. Las instancias múltiples se dan en sistemas distribuidos, en los que es posible disponer de más de una instancia (alojada en diferentes servidores) para la misma base de datos. Los datos en la instancia poseen dos grandes estructuras de almacenamiento: - PGA (Program Global Area). Zona de la memoria en la que se guardan los datos referentes a un proceso servidor concreto. Existe una PGA por proceso servidor. Si el modo de trabajo es dedicado, si hay 5 conexiones habrá 5 procesos servidores y, por lo tanto, 5 PGAs. Al conjunto de todas las PGAs en uso, en un momento dado, se le llama instancia PGA. El tamaño de la instancia PGA se puede calibrar dentro de las opciones de configuración. - SGA (Server Global Area). Zona de la memoria en la que se guardan los datos globales de la instancia. Esos datos son los que comparten todos los procesos servidores. Podemos destacar: - Caché de búferes de datos: Está dividida en bloques y es la estructura (normalmente) que más ocupa en la SGA. Cuando una instrucción provoca modificar datos, inicialmente esos datos se graban en esta caché después de un commit de la transacción. Después, cada cierto tiempo, se grabarán todos los cambios de golpe en los ficheros de datos (concretamente cuando ocurra un *checkpoint*). La estrategia principal es escribir lo menos posible en el disco que es lo que más se tarda. - #### Búfer de Redo Log: Su función es almacenar la información acerca de los últimos cambios (DML confirmados y DDL) realizados sobre la base de datos. Esta información se vuelca continuamente, mediante el proceso LGWR, a los archivos Redo Log en disco. Es un búfer circular.. **Procesos** Tipos de procesos: - Proceso de usuario. - Procesos de Oracle. Compuestos por: - Proceso servidor. - Procesos en segundo plano. Los procesos servidores atienden a los procesos de usuario. Sus labores fundamentales son: - Analizar el código SQL o PL/SQL lanzado por el proceso de usuario - Establecer el plan de ejecución de la consulta SQL lanzada por el usuario - Lee o modifica los datos requeridos por ese código en la memoria SGA o en el disco (si no están en la SGA). - Devolver los resultados al proceso de usuario o indicarle, si es el caso, el error producido. Los procesos en segundo plano se ejecutan al lanzar la instancia de Oracle y quedan residentes en memoria realizando diversas labores en el servidor. La vista V\$DBPROCESS permite obtener información de los procesos en memoria. A continuación, se detallan las acciones de los principales procesos: - #### DBWn: El **proceso de escritura de base de datos **(DataBase Writer Process). Escribe los bloques modificados de la caché de búferes de datos (dirty buffers) de la SGA a los archivos de datos en disco. Eso no ocurre en todo momento, sino cuando se produce un evento de tipo **checkpoint**. La *n* en el nombre (DBWn) indica que no hay un solo proceso DBW, sino que puede haber hasta 20 dependiendo de la potencia del servidor (*DBW0*, *DBW1*,...) - #### LGWR: Proceso de escritura de logs (LoG WriteR Process). Proceso encargado de escribir en los archivos redo log. Escribe los datos del búfer de Redo Log (en la SGA) a los archivos Redo Log en disco. - #### CKPT: Proceso encargado de registrar la llegada de un checkpoint, momento en el que se graban búferes de datos en los archivos de datos. CKPT graba en los archivos de control la posición de checkpoint y el SCN (indica la transacción que se está grabando) correspondiente en los Red Log. - #### SMON: System Monitor. Proceso encargado de monitorizar el sistema. - #### PMON: Process Monitor. Se encarga de gestionar el fallo en un proceso de usuario. - #### ARCn: Procesos de archivado (archiver processes), encargado de escribir los archivos redo log históricos. Una base de datos Oracle necesita los siguientes archivos para grabar la información de la misma: - Archivos de datos - Archivos de control - Archivos Red Log Además, posee (o puede poseer) Archivos de parámetros para que la ejecución sea correcta. **Archivos de datos** Son los archivos que almacenan los datos en sí de la base de datos. Graban la información de las tablas. Para optimizar su funcionamiento y su gestión, Oracle utiliza una estructura que relaciona la lógica de la base de datos, con la parte física. En realidad, estas estructuras forman un esquema de la base de datos que se situarían conceptualmente entre el esquema interno y el físico de la base de datos. Oracle las llama estructuras lógicas de almacenamiento. ![](media/image6.png) - ##### Tablespaces: son una estructura lógica. En la base de datos, se manejan objetos a nivel lógico (tablas, columnas, filas, vistas, índices,...). La información de esos objetos se tiene que almacenar en archivos de datos. Oracle crea los **tablespaces** como un elemento intermedio entre el nivel lógico y el nivel físico de la base de datos. - ##### Segmentos: En cada tablespace contiene segmentos, que están relacionados directamente con un objeto de la base de datos (una tabla, un índice...). Existen 4 tipos de segmentos: - ##### de datos - ##### de índices - ##### temporales (espacio temporal para realizar las operaciones intermedias de la instrucción SQL) - ##### de Rollback (almacenan los viejos valores de los datos que han sido modificados por las transacciones. Su objetivo es mantener la consistencia, realizar rollbacks y utilizarse en operaciones de recuperación de la BD). Un archivo de datos puede contener varios segmentos y un mismo segmento puede estar presente en más de un archivo de datos. - Extensiones: Los segmentos se dividen en extensiones. Las extensiones son divisiones dentro del segmento que permiten asegurar que el sistema tiene reservado un conjunto de bloques contiguos en el disco. Es decir, las extensiones evitan fragmentar en exceso los discos. - Bloques de datos: Es el elemento de datos más pequeño distinguible por Oracle. Cada extensión consta de una serie de bloques. El tamaño de bloque se puede configurar por parte del DBA para optimizar el rendimiento. Un bloque de datos se corresponde con varios bloques del S.O. **Archivos de log** Los Redo Log son dos o más archivos que sirven para almacenar las instrucciones de las transacciones de cambios que se van confirmando en la base de datos. No graban datos, sino la información necesaria para que esa instrucción se lleve a cabo. Sirven para recuperar los datos en caso de desastre. En los redo log se graban las instrucciones de transacciones confirmadas y los datos necesarios para volver a realizarlas. La información en los redo log se graba casi instantáneamente, por lo que siempre están más al día que los archivos de datos. Además, sirven como histórico de los cambios realizados en la base de datos. Lo que puede permitir retornar a la base de datos a un punto concreto. Los ficheros Redo Log funcionan de forma circular. Cuando se llena uno, se produce un evento de tipo **log switch**. Si ocurre un log switch en el último archivo, se usa el primero, sobrescribiendo la información que tuviera. ![](media/image8.png) ### histórico de archivos redo log (archive redo log) Los archivos redo log tienen un comportamiento circular, es decir que cuando llegamos al último archivo, si se llena; entonces los siguientes datos pasan al primero, borrando la secuencia que estuviera grabada en él. Pero puede que los datos no estén grabados todavía cuando pasemos al primer archivo y los pisemos, por lo que en caso de caída del sistema les perdemos y eso sería una situación de desastre. El registro histórico de archivo redo log (también llamado *archivados redo log*) evitan esta situación. Para ello la base de datos debe de estar en modo ARCHIVELOG entonces cada vez que ocurre un evento log switch (es decir cada vez que hay un cambio de secuencia), el proceso ARC*n* (la *n* significa que puede haber varios: *ARC0*, *ARC1*,...) graba una copia de la secuencia actual en el histórico. **Archivos de control** Se trata de archivos binarios y de tamaño pequeño que contienen la estructura de la base de datos, es decir metadatos. Este archivo también se puede multiplexar para aumentar la seguridad, con lo que puede haber varios. Lo normal es tener al menos dos, ya que es un recurso crítico. Los archivos de control contienen: - Nombre de la base de datos - Fecha y hora de la creación de la base de datos - Información sobre checkpoints. - Modo de archivado de la base de datos. - Número de secuencia del redo log actual. - Metadatos para labores de backup y recuperación de datos. - Ubicación de los archivos de datos, redo log e históricos redo log - Información sobre los tablespaces actuales **Archivos de parámetros** Contienen los parámetros generales de configuración de la base de datos. Los parámetros son el conjunto de una clave y un valor. Los parámetros sirven para cambiar y conocer la configuración de Oracle. Cada parámetro refleja un aspecto del funcionamiento de Oracle; modificándole, modificaremos el comportamiento de la instancia de Oracle. Hay dos tipos de archivos de parámetros: - SPFILE. Se trata de un archivo de parámetros binario. El formato habitual del archivo de parámetros es este y sólo permite su edición modificando los parámetros desde Oracle. - PFILE. Archivo de parámetros en forma de texto. La ventaja es que se puede editar su contenido incluso desde fuera de Oracle (directamente con un editor de texto). **Creación de una base de datos en Oracle** Para crear una base de datos, una vez instalado oracle, debemos seguir los siguientes pasos: 1. Definir ORACLE\_SID 2. Crear el fichero INIT.ORA: fichero de texto que contiene los parámetros de configuración de la base de datos. Entre esos parámetros estará la ubicación de los ficheros de control. 3. Definir fichero de passwords: con los usuarios de administración especiales (el resto de usuarios se almacenan en tablas). 4. Arrancar la instancia: 5. Crea la base de datos con el nombre(o SID) que definimos. - Crea los ficheros de datos para la BD (datafiles) - Crea los ficheros de control (control files) - Crea los redo log. - Crea el tablespace SYSTEM y el segmento de rollback SYSTEM - Crea el diccionario de datos. - Crea a los usuarios SYS y SYSTEM. - Especifica el conjunto de caracteres que se almacenarán. - Monta y abre la BD para su uso. En Oracle, el **diccionario de datos** es un conjunto de tablas de solo lectura que contiene información sobre la estructura y el contenido de la base de datos (METADATOS), son creadas al crear la Base de datos. Para mostrar el contenido de estas tablas se utilizan las vistas predefinidas del diccionario de datos. **Vistas del diccionario de datos** Estas vistas se pueden agrupar en estáticas y dinámicas. Las estáticas son vistas predefinidas: - USER\_: Muestran objetos que pertenecen al usuario/a que hace la consulta. - ALL\_: Muestran objetos a los que el usuario tiene acceso (sean o no de su propiedad). - DBA\_: Muestran todos los objetos de la base de datos. Las vistas del diccionario de datos se crean automáticamente cuando se crea la base de datos Oracle y se pueden consultar utilizando SQL. Hay otras vistas que se generan dinámicamente, es decir contienen información que va cambiando durante la ejecución de la base de datos. Se las distingue porque comienzan con el texto V\$: - V\$INSTANCE: Muestra el estado de la instancia de la base de datos - V\$PARAMETER: Lista de los parámetros y sus valores actualmente en funcionamiento - V\$DATABASE: Información sobre la base de datos activa - V\$SESSION: Sesiones activas Principio del formulario Final del formulario....