viernes, 3 de abril de 2009

¿Qué es un Tnsnames?

También llamado método LOCAL: indica que la resolución se hace a través de otro archivo de configuración llamado tnsnames.ora, residente en la misma ubicación.

Servicios de conexión (TNSNAMES.ORA)

El nombre de un servicio es aquel que engloba las características necesarias para que una conexión entre un cliente y un servidor puedan llevarse a cabo. Los nombres de estos servicios se van a definir dentro del archivo de configuración TNSNAMES.ORA, los cuales van a servir como string de conexión para los usuarios que deseen acceder a una base de datos determinada.
Para definir un servicio necesitaremos saber:
  • La maquina de destino de la conexión o una dirección IP que la identifique. En esta maquina esta ubicada la Base de Datos.
  • El protocolo que se va a utilizar para establecer la conexión con el servidor.
  • La dirección o el puerto por donde esta escuchando el listener del servidor.
  • El identificador de la instancia de la base de datos sobre la cual vamos a realizar las futuras
    operaciones.

    Ejemplo de un archivo TNSNAMES.ORA :

    Bd_desa.world =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL = TCP)
    (HOST = maq_desa)
    (Port = 1521)
    )
    )
    (CONNECT_DATA = (SID = DESA)
    )
    )

Existe un servicio de conexión llamado Bd_desa, el cual va a servir al usuario como string de
conexión para comunicarse, a la base de datos DESA, ubicada en la maquina maq_desa,
siempre y cuando envíe sus peticiones de conexión utilizando un protocolo de tipo TCP y que
dichas peticiones sean enviadas al puerto 1521 de la maquina maq_desa, que es allí donde
estará escuchando el listener encargado de resolver dichas solicitudes.

¿Qué es un Listener?

TNS Listener es un proceso servidor que provee la conectividad de red con la base de datos Oracle. El listener está configurado para escuchar la conexión en un puerto específico en el servidor de base de datos. Cuando se pide una conexión a la base de datos, el listener devuelve la información relativa a la conexión. La información de una conexión para una instancia de una base de datos provee el nombre de usuario, la contraseña y el SID de la base de datos. Si estos datos no son correctos se devolverá un mensaje de error.

  • Por defecto el puerto del listener es el 1521
  • El listener no limita el número de conexiones a la base de datos.

Toda la información del listener la contiene un archivo denominado listener.ora ( $ORACLE_HOME/network/admin. )

El comando para gestionar el listener es lsnrctl. Mediante este comando podemos:

  • Parar el listener.
  • Ver el estado del listener.
  • Arrancar el listener.
  • Rearrancar el listener.
SEGURIDAD LISTENER ORACLE 10G (securing the listener)

El principal paso para realizar la seguridad en el listener es ponerle una contraseña password. El primer método para poner una contraseña al listener es editando el fichero listener.ora y escribiendo la siguiente línea:

PASSWORDS_LISTENER = orapass

Cuando guardemos el fichero con los cambios realizamos un reload del listener

lsnrctl> reload

Nota: El comando para entrar en el listener es lsnrctl ( $ORACLE_HOME/bin )

El segundo método para poder cambiar la contraseña al listener es el siguiente:

lsnrctl> change_password

Este comando te pedirá la clave antigua y la nueva clave.Si es la primera vez que ejecutas este comando la contraseña antigua ( old password ) habrá que dejarla en blanco.

El comando SET y SAVE CONFIG permite guardar esos cambios en el listener porque ahora el listener está gobernado por un password.

lsnrctl > set password
lsnrctl > save config

La información antigua se guardará enlistener.bck y listener.ora se actualizará con los nuevos datos

UNA VEZ QUE EL PASSWORD ESTÉ CREADO ESTE SERÁ REQUERIDO PARA CUALQUIER TAREA ADMINISTRATIVA( ej: parar el listener ).

Área Global del Sistema, SGA

Sirve para facilitar la transferencia de información entre usuarios y también almacena la información estructural de la BD más frecuentemente requerida.

La SGA se divide en varias partes:

Buffers de BD, Database Buffer Cache

Es el caché que almacena los bloques de datos leidos de los segmentos de datos de la BD, tales como tablas, índices y clusters. Los bloques modificados se llamas bloques sucios. El tamaño de buffer caché se fija por el parámetro DB_BLOCK_BUFFERS del fichero init.ora.
Como el tamaño del buffer suele ser pequeño para almacenar todos los bloques de datos leidos, su gestión se hace mediante el algoritmo LRU.


Buffer Redo Log

Los registros Redo describen los cámbios realizados en la BD y son escritos en los ficheros redo log para que puedan ser utilizados en las operaciones de recuperación hacia adelante, roll-forward, durante las recuperaciones de la BD. Pero antes de ser escritos en los ficheros redo log son escritos en un caché de la SGA llamado redo log buffer. El servidor escribe periódicamente los registros redo log en los ficheros redo log.
El tamaño del buffer redo log se fija por el parámetro LOG_BUFFER.


Área de SQL Compartido, Shared SQL Pool

En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas. Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es así, no la analiza y pasa directamente a ejecutar la que mantinene en memoria. De esta manera se premia la uniformidad en la programación de las aplicaciones. La igualdad se entiende que es lexicografica, espacios en blanco y variables incluidas. El contenido de la zona de SQL compartido es:
  • Plan de ejecución de la sentencia SQL.
  • Texto de la sentencia.
  • Lista de objetos referenciados.
Los pasos de procesamiento de cada petición de análisis de una sentencia SQL son:

  • Comprobar si la sentencia se encuentra en el área compartida.
  • Comprobar si los objetos referenciados son los mismos.
  • Comprobar si el usuario tiene acceso a los objetos referenciados.

Si no, la sentencia es nueva, se analiza y los datos de análisis se almacenan en la zona de SQL compartida.
También se almacena en la zona de SQL compartido el caché del diccionario. La información sobre los objetos de la BD se encuentra almacenada en las tablas del diccionario. Cuando esta información se necesita, se leen las tablas del diccionario y su información se guarda en el caché del diccionario de la SGA.
Este caché también se administra mediante el algoritmo LRU. El tamaño del caché está gestionado internamente por el servidor, pero es parte del shared pool, cuyo manaño viene determinado por el parámetro SHARED_POOL_SIZE.

Area Global del Programa - PGA

Un área global del programa (PGA) es una región de memoria que contiene datos y la información de control para un proceso del servidor. Es una memoria no compartida creada por Oracle cuando se comienza un proceso del servidor. El acceso a él es exclusivo a ese proceso del servidor y es leído y escrito solamente por el código de Oracle que actúa a nombre de él.

Se compone de:

  • Área SQL privada.
  • Memoria de Sesión.

Área SQL privada.

Es el área donde se guarda información de una instrucción SQL ejecutada, cada sesión tiene un área privada SQL. Si se lanza la misma instrucción SQL muchas sesiones pueden tener como área privada una misma área compartida. en el área persistente y el área de tiempo de ejecución. La persistente se libera cuando se cierra el cursor, la de tiempo de ejecución se libera cuando se termina la ejecución de la instrucción.


Áreas de SQL y cursores.
La localización del área privada depende del tipo de conexión establecida en el servidor. Si la conexión se hace dedicada el área privada se guarda en la PGA, si es compartida se guarda en la SGA.


Memoria de sesión
La memoria de la sesión es la memoria asignada para mantener las variables de
una sesión (información de la conexión) y otra información relacionada con la una sesión Para un servidor compartido, se comparte la memoria de la sesión, no es privada.

viernes, 27 de marzo de 2009

Roles de un Administrador de Base de Datos

Administrador de base de datos

El administrador de base de datos (DBA) es la persona responsable de los aspectos ambientales de una base de datos. En general esto incluye:

  • Recuperabilidad - Crear y probar Respaldos
  • Integridad - Verificar o ayudar a la verificación en la integridad de datos
  • Seguridad - Definir y/o implementar controles de acceso a los datos
  • Disponibilidad - Asegurarse del mayor tiempo de encendido
  • Desempeño - Asegurarse del máximo desempeño incluso con las limitaciones
  • Desarrollo y soporte a pruebas - Ayudar a los programadores e ingenieros a utilizar eficientemente la base de datos.
  • El diseño lógico y físico de las bases de datos a pesar de no ser obligaciones de un administrador de bases de datos, es a veces parte del trabajo. Esas funciones por lo general están asignadas a los analistas de bases de datos ó a los diseñadores de bases de datos.

Los deberes de un administrador de bases de datos dependen de la descripción del puesto, corporación y políticas de Tecnologías de Información (TI). Por lo general se incluye recuperación de desastres (respaldos y pruebas de respaldos), análisis de desempeño y optimización, y algo de asistencia en el diseño de la base de datos.

Disponibilidad.- Significa que los usuarios autorizados tengan acceso a los datos cuando lo necesiten para atender a las necesidades del negocio. De manera incremental los negocios han ido requiriendo que su información esté disponible todo el tiempo (7x24", o siete días a la semana, 24 horas del día). La industria de TI ha respondido a estas necesidades con redundancia de red y hardware para incrementar las capacidades administrativas en línea.

Recuperabilidad.- La recuperabilidad significa que, si se da algún error en los datos, hay un bug de programa ó de hardware, el DBA (Administrador de base de datos) puede traer de vuelta la base de datos al tiempo y estado en que se encontraba en estado consistente antes de que el daño se causara. Las actividades de recuperación incluyen el hacer respaldos de la base de datos y almacenar esos respaldos de manera que se minimice el riesgo de daño ó pérdida de los mismos, tales como hacer diversas copias en medios de almacenamiento removibles y almacenarlos fuera del área en antelación a un desastre anticipado. La recuperación es una de las tareas más importantes de los DBA's.
La recuperabilidad, frecuentemente denominada "recuperación de desastres", tiene dos formas primarias. La primera son los respaldos y después las pruebas de recuperación.La recuperación de las bases de datos consisten en información y estampas de tiempo junto con bitácoras los cuales se cambian de manera tal que sean consistentes en un momento y fecha en particular. Es posible hacer respaldos de la base de datos que no incluyan las estampas de tiempo y las bitácoras, la diferencia reside en que el DBA debe sacar de línea la base de datos en caso de llevar a cabo una recuperación.
Las pruebas de recuperación consisten en la restauración de los datos, después se aplican las bitácoras a esos datos para restaurar la base de datos y llevarla a un estado consistente en un tiempo y momento determinados. Alternativamente se puede restaurar una base de datos que se encuentra fuera de línea sustituyendo con una copia de la base de datos. Si el DBA (o el administrador) intentan implementar un plan de recuperación de bases de datos sin pruebas de recuperación, no existe la certeza de que los respaldos sean del todo válidos.

Integridad.- La integridad de una base de datos significa que, la base de datos ó los programas que generaron su contenido, incorporen métodos que aseguren que el contenido de los datos del sistema no se rompan así como las reglas del negocio. Por ejemplo, un distribuidor puede tener una regla la cual permita que solo los clientes individuales puedan solicitar órdenes; a su vez cada orden identifique a uno y solo un proveedor. El servidor Oracle y otros DBMSs relacionales hacen cumplir este tipo de reglas del negocio con limitantes, las cuales pueden ser configuradas implícitamente a través de consultas. Para continuar con este ejemplo, en el proceso de inserción de una nueva orden a la base de datos, esta a su vez tendría que cerciorarse de que el cliente identificado existen en su tabla para que la orden pueda darse.

Seguridad.- Seguridad significa la capacidad de los usuarios para acceder y cambiar los datos de acuerdo a las políticas del negocio, así como, las decisiones de los encargados. Al igual que otros metadatos, una DBMS relacional maneja la seguridad en forma de tablas. Estas tablas son las "llaves del reino" por lo cual se deben proteger de posibles intrusos.RendimientoEl rendimiento significa que la base de datos no cause tiempos de respuesta poco razonables. En sistemas muy complejos cliente/servidor y de tres capas, la base de datos es solo uno de los elementos que determinan la experiencia de los usuarios en línea y los programas desatendidos. El rendimiento es una de las mayores motivaciones de los DBA para coordinarse con los especialistas de otras áreas del sistema fuera de las líneas burocráticas tradicionales.

Desarrollo/Soporte a pruebas.- Uno de los deberes menos respetados por el administrador de base de datos es el desarrollo y soporte a pruebas, mientras que algunos otros encargados lo consideran como la responsabilidad más importante de un DBA. Las actividades de soporte incluyen la colecta de datos de producción para llevar a cabo pruebas con ellos; consultar a los programadores respecto al desempeño; y hacer cambios a los diseños de tablas de manera que se puedan proporcionar nuevos tipos de almacenamientos para las funciones de los programas.

Prevención de riesgos.-
Otra tarea del DBA es la de calendarizar mantenciones a las bases de datos (archivos lógicos) o cooperar en el mantenimiento de las máquinas al administrador del sistema. El DBA debe fortalecer sus esfuerzos en orden a eliminar problemas o situaciones potencialmente peligrosas.

Instalación de nuevos componentes del software.- Una de las tareas principales del DBA consiste en la instalación periódica de nuevas actualizaciones de software de Oracle, tanto en lo referente a programas de aplicaciones como a herramientas administrativas. También es recomendable que el propio DBA y otros usuarios de Oracle prueben la instalación y nuevas configuraciones antes de migrarlas a los ambientes de producción.
Interacción con el administrador del sistema.- En la mayoría de los casos los programas sólo pueden ser instalados o accedidos por el administrador del sistema. En este caso, el DBA debe trabajar siempre muy bien coordinado con él para garantizar que tanto la instalación y configuración de software como de hardware permita un adecuado funcionamiento del motor de base de datos y de las aplicaciones.

Monitorización.- El DBA debe monitorear continuamente el rendimiento del sistema y estar preparado para efectuar ajustes de sintonización de éste. En ciertas oportunidades esto involucra cambiar sólo algunos parámetros y otras veces reconstruir índices o reestructurar tablas.

Tareas adicionales:

Otras tareas de importancia que corresponden con frecuencia realizar a un DBA son:

  • Apoyar en el diseño y optimización de modelos de datos.
  • Analizar datos y efectuar recomendaciones concernientes a mejorar el rendimiento y la eficiencia en el manejo de aquellos datos que se encuentran almacenados.
  • Asistir a los desarrolladores con sus conocimientos de SQL y de construcción de procedimientos almacenados y triggers, entre otros.
  • Documentar y mantener un registro periódico de las mantenciones, actualizaciones de hardware y software, cambios en las aplicaciones y, en general, todos aquellos eventos relacionados con cambios en el entorno de utilización de una base de datos.
  • Apoyar en la definición de estándares de diseño y nomenclatura de objetos.

Bibliografia:

Arquitectura de Base de Datos Oracle



INTRODUCCIÓN

No podemos aspirar a que nuestras aplicaciones de BD funcionen bien si no conocemos la arquitectura de la BD. Por ello es indispensable conocer los factores y parámetros que influyen en el funcionamiento de nuestro SGBD para poder solucionar los problemas que se pueden plantear en cuanto nos salgamos de las aplicaciones estándares y básicas de BD, o en cuanto tengamos algún problema.

Antes de pasar a analizar la arquitectura de la BD es necesario conocer ciertos conceptos como son:

Instancias.- Una instancia de BD es un conjunto de procesos del servidor Oracle que tiene su propia área global de memoria y una base de datos asociada a ellos.

Base de datos (BD).- Una Base de Datos Oracle es un conjunto de datos almacenado y accesible según el formato de tablas relacionales. Una tabla relacional tiene un nombre y unas columnas. Los datos están almacenados en las filas. Las tablas pueden estar relacionadas con otras. Además una Base de Datos Oracle está almacenada físicamente en ficheros, y la correspondencia entre los ficheros y las tablas es posible gracias a las estructuras internas de la BD, que permiten que diferentes tipos de datos estén almacenados físicamente separados. Está división lógica se hace gracias a los espacios de tablas, tablespaces.

Espacios de tablas (tablespaces).- Un espacio de tablas es una división lógica de la BD. Cada BD tiene al menos uno (SYSTEM). Un espacio de tablas puede pertenecer sólo a una BD. Los espacios de tablas se utilizan para mantener juntos los datos de usuarios o de aplicaciones para facilitar su mantenimiento o mejorar las prestaciones del sistema. De esta manera, cuando se crea una tabla se debe indicar el espacio de tablas al que se destina. Por defecto se depositan en el espacio de tablas SYSTEM, que se crea por defecto. Este espacio de tablas es el que contiene el diccionario de datos, por lo que conviene reservarlo para el uso del servidor, y asignar las tablas de usuario a otro.


ARQUITECTURA DE ORACLE

La arquitectura ORACLE tiene tres componentes básicos que son:

  • Las estructuras para almacenar datos y el código ejecutable

  • Los procesos que corren el sistema de bases de datos y las tareas de cada usuario conectado a la base de datos.

  • Los archivos que sirven para el almacenamiento físico, en disco, de la información de la base de datos.
    A continuación se ilustra mediante un gráfico la arquitectura de ORACLE.



ESTRUCTURAS DE MEMORIA


  • Cuando se arranca la BD, Oracle reserva un área de memoria llamada System Global Area (SGA) y arranca una serie de procesos.

  • Una instancia es la combinación de la SGA y los procesos.

  • Estructuras básicas asociadas a una instancia:

    Área de código de programas:
    Porciones de memoria usadas para almacenar código que está siendo o puede ser ejecutado.
    El tamaño de esta área es fijo y depende del sistema operativo.
    Area global del programa:
    Cada vez que un proceso de usuario se conecta a la BD y se crea una sesión se le aloja un área global del programa.
    Contiene datos e información de control de dicho proceso.
    Area de ordenación:
    Cuando una consulta solicita una ordenación de un resultado, ORACLE utiliza una zona de memoria del proceso de usuario.
    El tamaño de este área puede crecer según las necesidades hasta un valor máximo (SORT_AREA_SIZE).
    Si la ordenación requiere más espacio se recurre a un proceso de ordenación parcial y mezcla de resultados.
    Area global del sistema:

    Búferes del bloque de datos (DBB):
    Es una porción del SGA que almacena los bloques de datos más recientemente usados. Pueden contener datos modificados todavía no escritos a disco.
    Aumenta la eficiencia del sistema ya que se requieren menos accesos a disco.
    Se organizan en dos listas: buferes sucios y LRU (menos usados recientemente).
    LRU: contiene búferes libres, búferes que están siendo accedidos y búferes que han sido modificados y no han sido trasladados a la de búferes sucios.
    Cuando un proceso necesita un bloque en el DBB, accede al bufer adecuado y lo traslada al extremo (MRU) de la lista.
    Si el bloque requerido no esta en el DBB, lee el bloque de disco y lo almacena en un búfer del DBB.-Busca un bufer libre.
    - Si en esta búsqueda encuentra buferes sucios los mueve a la lista correspondiente.
    - Si lo encuentra procede a leer los bloques en el bufer moviéndolo al final de la lista.
    - Si no encuentra huecos llama al proceso de escritura para que guarde varios búferes sucios a disco.
    - Excepción: el mecanismo de funcionamiento cambio cuando un proceso de usuario recorre una tabla entera: se ponen al final de la lista.
    El tamaño de DBB se especifica mediante el parámetro DB_BLOCK_BUFFERS expresado en bloques de la BD.
    Búfer del registro de rehacer:
    Bufer circular que mantiene información sobre los cambios realizados en la BD.
    Información necesario par reconstruir los cambios hechos a la BD por las instrucciones: insert, update, delete, create, alter o drop.
    Existe un proceso encargado de escribir esta información en el fichero de rehacer correspondiente.
    El tamaño de este bufer se especifica mediante el parámetro LOG_BUFFER.

    Fondo compartido:
    Es un área donde se encuentran construcciones tales como el área de SQL compartida y la cache del diccionario de datos.
    Cada sentencia SQL se representa por una parte privada y una compartida.
    - Área compartida: árbol de análisis y el plan de ejecución de la sentencia SQL.
    - Área privada contiene variables de enlace y búferes temporales.
    Información almacenada en la caché del diccionario de datos:
    - Nombre de todas las tablas y vistas de la BD.
    - Nombre y tipos de todas las columnas de las tablas de la BD.
    - Privilegios de todos los usuarios.
    Tamaño de este área: SHARED_POOL_SIZE.

LOS PROCESOS

Los procesos se dividen en dos categorías: procesos de usuario y procesos de Oracle.

  • Procesos de usuario son las aplicaciones en sí, que realizan peticiones a la BD.

  • Los procesos ORACLE se pueden dividir en 2 tipos:

    Procesos servidores: atienden las peticiones del usuario y se comunican con ORACLE a través de SGA.
    - Compilan y ejecutan las sentencias SQL.
    - Leen los bloques de datos desde el disco a los buferes.
    - Devuelve el resultado de las operaciones a la aplicación.

    Procesos background gestionan los recursos de la BD.
    - Escritor de la BD (DBWR).
    - Escritor de registros (LGWR).
    - Punto de control (CKPT).
    - Supervisor del sistema (SMON).
    - Supervisor del proceso (PMON).
    - Archivador (ARCH).
    - Recuperador (RECO).
    - Bloqueo (LCKn).
    - Despachador (Dnnn).

LOS ARCHIVOS

Los archivos que maneja ORACLE se clasifican en cuatro grupos como se observa en la siguiente figura:


Los Archivos de datos (DataFile).- estos archivos sirven para el almacenamiento físico de las tablas, índices o agrupamientos (clusters) y procedimientos. Estos Archivos, son los únicos que contienen los datos de los usuarios.


BIBLIOGRAFÍA: