Descargar

Sistemas distribuidos (página 2)

Enviado por FRANCO ROLDÁN


Partes: 1, 2

  • Entrada de datos y validación.

  • Procesamiento de ayudas.

  • Recuperación de errores.

  • A continuación mostramos las arquitecturas clienteservidor más populares:

    • Arquitectura Cliente-Servidor de Dos Capas.- Consiste en una capa de presentación y lógica de la aplicación; y la otra de la base de datos. La primera capa encapsula la presentación y la lógica, la segunda gestiona el almacenamiento y puede almacenar parte de la lógica (procedimientos almacenados, triggers). Normalmente esta arquitectura se utiliza en las siguientes situaciones:

    • Cuando se requiera poco procesamiento de datos en la organización.

    • Cuando se tiene una base de datos centralizada en un solo servidor.

    • Cuando la base de datos es relativamente estática.

    • Cuando se requiere un mantenimiento mínimo.

    • Arquitectura Cliente-Servidor de Tres Capas- Consiste en una capa de la Presentación, otra capa de la lógica de la aplicación y otra capa de la base de datos. Agriega una capa intermedia (middle tier) que permite priorizacion y gestion de peticiones de balances. Normalmente esta arquitectura se utiliza en las siguientes situaciones:

    • Cuando se requiera mucho procesamiento de datos en la aplicación.

    • En aplicaciones donde la funcionalidad este en constante cambio.

    • Cuando los procesos no están relativamente muy relacionados con los datos.

    • Cuando se requiera aislar la tecnología de la base de datos para que sea fácil de cambiar.

    • Cuando se requiera separar el código del cliente para que se facilite el mantenimiento.

    • Esta muy adecuada para utilizarla con la tecnología orientada a objetos.

    Oracle 9i

    Esta es una plataforma de manejo de datos que tiene como unas 50 aplicaciones, este es considerado como un sistema de base de datos más complejo, este trabaja con la estructura cliente servidor.

    ARQUITECTURA DE ORACLE

    El motor de base de datos tiene 2 componentes:

    Base de datos

    Los ficheros del sistema como los

    Control File: que son donde están las variables iníciales de BD, aquí es donde se puede alzarlas instancias con espacio de memoria y resoplados en frio.

    Data File: reside los datos del diccionario y usuarios es decir contiene los archivos del esquema de la base de datos.

    Redo Log Files: archivos log o Históricos, realiza auditoria de base de datos, recupera en caso de errores o fallos

    INSTANCIA: Espacio de memoria reservada (70% y 90 % memoria libre).

    DBMS

    Es un sistema robusto que es capaz de emplear algoritmos de almacenamiento y recuperación de información para poder implementar un modelo de datos de manera física garantizando que todas las transacciones que se realizan con respecto a dichos datos sean "ácidas" (Atomicity, Consistency, Isolation, Duration).

     Arquitectura de un manejador de bases de datos (DBMS)

    Una base de datos en ejecución consta de 3 cosas:

    • Archivos

    • Control (ctl): almacenan información acerca de la estructura de archivos de la base.

    • Rollback (rbs): cuando se modifica el valor de alguna tupla en una transacción, los valores nuevos y anteriores se almacenan en un archivo, de modo que si ocurre algún error, se puede regresar (rollback) a un estado anterior.

    • Redo (rdo): bitácora de toda transacción, en muchos dbms incluye todo tipo de consulta incluyendo aquellas que no modifican los datos.

    • Datos (dbf): el tipo más común, almacena la información que es accesada en la base de datos.

    • Indices (dbf) (dbi): archivos hermanos de los datos para acceso rápido.

    • Temp (tmp): localidades en disco dedicadas a operaciones de ordenamiento o alguna actividad particular que requiera espacio temporal adicional.

    • Memoria

    • Shared Global Area (SGA): es el área más grande de memoria y quizás el más importante

    • Shared Pool: es una caché que mejora el rendimiento ya que almacena parte del diccionario de datos y el parsing de algunas consultas en SQL

    • Redo Log Buffer: contiene un registro de todas las transacciones dentro de la base, las cuales se almacenan en el respectivo archivo de Redo y en caso de siniestro se vuelven a ejecutar aquellos cambios que aún no se hayan reflejado en el archivo de datos (commit).

    • Large Pool: espacio adicional, generalmente usado en casos de multithreading y esclavos de I/O.

    • Java Pool: usado principalmente para almacenar objetos Java

    • Program Global Area (PGA): información del estado de cursores/apuntadores

    • User Global Area(UGA): información de sesión, espacio de stack

    • Procesos

    • Threading

    • System Monitor: despierta periódicamente y realiza algunas actividades entre las que se encuentran la recuperación de errores, recuperación de espacio libre en tablespaces y en segmentos temporales.

    • Process Monitor: limpia aquellos procesos que el usuario termina de manera anormal, verificando consistencias, liberación de recursos, bloqueos.

    • Database Writer: escribe bloques de datos modificados del buffer al disco, aquellas transacciones que llegan a un estado de commit.

    • Log Writer: escribe todo lo que se encuentra en el redo log buffer hacia el redo file

    • Checkpoint: sincroniza todo lo que se tenga en memoria, con sus correspondientes archivos en disco

    edu.red

    Figura: Instancia de una base de datos en Oracle

    Componentes de SGA

    El Área Global del sistema es un conjunto de estructuras de memoria compartida que contienen datos e información de control para una determinada instancia ORACLE. El SGA se mantiene en la memoria virtual del computador en el que reside la instancia ORACLE. Si dentro de la instancia existe la posibilidad de que más de un usuario se encuentren conectados simultáneamente, los datos dentro del SGA de la instancia son compartidos entre todos los usuarios. Es por esto que algunas veces al SGA también se le suele denominar Shared Global Area.

    El SGA está compuesta por:

    SHARED POOL: Esta estructura se utiliza durante el procesamiento de comandos. Su

    tamaño también es configurable. Contiene dos zonas específicas:

    Library Cache, almacena la siguiente información relacionada con una instrucción de SQL:

    Texto de la instrucción.

    – Arbol de parsing, es decir la versión compilada de la instrucción.

    Plan de Ejecución, es decir la secuencia de pasos a ser realizados para ejecutar la instrucción a bajo nivel de acuerdo con los resultados producidos por el optimizador de consultas.

    Basándose en esta información, si una consulta es ejecutada nuevamente, y su información permanece todavía en el Library Cache, no será necesario compilar de nuevo la instrucción. En tal sentido este componente de la arquitectura permite mejorar el rendimiento de las aplicaciones que se ejecutan periódicamente.

    • Data Dictionary Cache, también conocido como Dictionary Cache o Row Cache, almacena la información de uso más reciente sobre el diccionario de datos. Esta información incluye definición de columnas, usuarios, passwords y privilegios. Durante la fase de compilación, esta información es necesaria para resolver los nombres de los objetos utilizados en un comando SQL y para validar los privilegios de acceso.

    DATABASE BUFFER CACHE: Su función es mantener bloques de datos leídos directamente de los archivos de datos. Cuando se procesa una consulta, el servidor busca los bloques de datos requeridos en esta estructura. Si el bloque no se encuentra en esta estructura, el proceso servidor lee el bloque de la memoria secundaria y coloca una copia en esta estructura. De esta forma, otras peticiones que requieran de este bloque de datos no requerirán de acceso a memoria secundaria (lecturas físicas).

    REDO LOG BUFFER: Es un buffer circular que mantiene todos los cambios que han sido realizados sobre la base de datos por operaciones de insert, update, delete, create, alter y drop. Las entradas de este buffer contienen toda la información necesaria para reconstruir los cambios realizados a la base de datos por medio de cualquier sentencia del DDL o del DML (el bloque que ha sido cambiado, la posición de cambio y el nuevo valor).

    Large Pool: espacio adicional, generalmente usado en casos de multithreading y esclavos de I/O.

    Java Pool: usado principalmente para almacenar objetos Java

    Componentes de PGA

    El PGA constituye una región de memoria asociada a cada proceso servidor, la cual contiene datos e información de control para cada una de las sesiones que los usuarios mantienen con el RDBMS ORACLE a través de éste proceso servidor. Por lo tanto el PGA no es un área de memoria compartida. Una región de memoria para almacenar un PGA es solicitada cuando un

    proceso usuario establece una sesión de trabajo con el manejador de datos. El tipo de información que se almacena en el PGA depende de las opciones instaladas para el servidor ORACLE.

    El PGA contiene los siguientes componentes:

    SORT AREA, que es utilizada para llevar a cabo los posibles ordenamientos de filas requeridos antes de que las filas sean procesadas o devueltas al usuario como resultado de una consulta.

    STACK SPACE, el cual contiene las variables de sesión de usuario y sus valores.

    CURSOR STATE, el cual almacena el estado de los diferentes cursores que están siendo utilizados en la sesión del usuario.

    SESSION INFORMATION, la cual mantiene información sobre los privilegios que el usuario que ejecuta la sesión.

    Privilegios de sistema de Oracle 9i

    Permite al usuario hacer ciertas tareas sobre la BD, como por ejemplo crear un Tablespace. Estos permisos son otorgados por el administrador o por alguien que haya recibido el permiso para administrar ese tipo de privilegio.

    En general los permisos de sistema, permiten ejecutar comandos del tipo DDL (Data definition Language), como CREATE, ALTER y DROP o del tipo DML (Data Manipulation Language).

    Privilegio

    Descripción

    CREATE ANY INDEX

    Crear cualquier índice.

    CREATE [PUBLIC] SYNONYM

    Crear sinónimos [públicos].

    CREATE [ANY] TABLE

    Crear tablas. El usuario debe tener cuota en el espacio de tablas, o ha de tener asignado el privilegio UNLIMITED TABLESPACE.

    CREATE [ANY] VIEW

    Crear vistas.

    ALTER ANY INDEX

    Alterar cualquier índice.

    ALTER ANY TABLE

    Alterar cualquier tabla

    DROP ANY INDEX

    Borrar cualquier índice.

    DROP ANY SYNONYM

    Borrar cualquier sinónimo.

    DROP PUBLIC SYNONYM

    Borrar sinónimos públicos.

    DROP ANY VIEW

    Borrar cualquier vista.

    DROP ANY TABLE

    Borrar cualquier tabla.

    SELECT ANY TABLE

    Efectuar selecciones de cualquier tabla o vista.

    INSERT ANY TABLE

    Insertar en cualquier tabla o vista.

    DELETE ANY TABLE

    Borrar filas de cualquier tabla o vista, y también truncar.

    ALTER SESSION

    Alterar los parámetros de la sesión.

    CREATE SESSION

    Conectarse a la BD.

    CREATE PROFILE

    Crear perfiles de usuario.

    CREATE ROLE

    Crear roles.

    CREATE ROLLBACK SEGMENT

    Creación de segmentos de rollback.

    CREATE TABLESPACE

    Crear espacios de tablas.

    CREATE USER

    Crear usuarios.

    ALTER PROFILE

    Alterar perfiles existentes.

    ALTER ANY ROLE

    Alterar cualquier rol.

    ALTER ROLLBACK SEGMENT

    Alterar segmentos de rollback.

    ALTER TABLESPACE

    Alterar espacios de tablas.

    ALTER USER

    Alterar usuarios.

    DROP PROFILE

    Borrar un perfil existente.

    DROP ANY ROLE

    Borrar cualquier rol.

    DROP ROLLBACK SEGMENT

    Borrar un segmento de rollback existente.

    DROP TABLESPACE

    Borrar un espacio de tablas.

    DROP USER

    Borrar un usuario. Añadir CASCADE si el usuario posee objetos.

    ALTER DATABASE

    Permite una sentencia ALTER DATABASE.

    GRANT ANY PRIVILEGE

    Otorgar cualquiera de estos privilegios.

    GRANT ANY ROLE

    Otorgar cualquier rol a un usuario.

    UNLIMITED TABLESPACE

    Puede usar una cantidad de almacenamiento ilimitada.

    DROP PROFILE

    Borrar un perfil existente.

    Privilegios de objeto de Oracle 9i

    Este tipo de privilegios le permite al usuario hacer cierta acción en un objeto de la base de datos, como puede ser una tabla, vista, función etc. Si a un usuario no se le dan estos privilegios solo podrías acceder a sus propios objetos. Y estos tipos de privilegios los da el dueño del objeto, el administrador o alguien que haya recibido este permiso explícitamente. Los privilegios sobre objetos consienten que un objeto (creado por un usuario) estos privilegios puede ser de SELECT, UPDATE, DELETE, INSERT.

    Privilegio

    Descripción

    SELECT

    Puede consultar a un objeto.

    INSERT

    Puede insertar filas en una tabla o vista. Puede especificarse las columnas donde se permite insertar dentro de la tabla o vista.

    UPDATE

    Puede actualizar filas en una tabla o vista. Puede especificarse las columnas donde se permite actualizar dentro de la tabla o vista.

    DELETE

    Puede borrar filas dentro de la tabla o vista.

    ALTER

    Puede alterar la tabla.

    INDEX

    Puede crear índices de una tabla.

    REFERENCES

    Puede crear claves ajenas que referencie a esta tabla.

    EXECUTE

    Puede ejecutar un procedimiento, paquete o función.

    READ

    Permite leer archivos asociados con objetos BFILE en el directorio del sistema

    Roles y perfiles

    ROLES

    Los roles son conjuntos de privilegios. Un rol puede tener garantizados una serie de privilegios tanto del sistema como sobre objetos, y a la vez puede tener garantizado otros roles.

    Por default cuando creamos un usuario desde el Enterprise Manager se le asigna el permiso de Connect, lo que permite al usuario conectarse a la BD y crear sus propios objetos en su propio esquema. De otra manera, debemos asignarlos en forma manual.

    Sintaxis para crear un Rol y asignarlo a un usuario:

    SQL> CREATE ROLE appl_dba;

    Opcionalmente, se puede asignar una clave al Rol:

    SQL> SET ROLE appl_dba IDENTIFIED BY app_pwd;

    Para asignar este Rol a un usuario:

    SQL> GRANT appl_dba TO FPROLDAN;

    Otro uso común de los roles es asignarles privilegios a nivel de Objetos, por ejemplo en una Tabla de Facturas en donde sólo queremos que se puedan hacer Querys e Inserts:

    SQL> CREATE ROLE consulta;

    SQL> GRANT SELECT, INSERT on CLIENTE.FACTURA TO consulta;

    PERFILES

    Los perfiles permiten definir limitaciones de recursos. Por ejemplo podemos definir un perfil que limite el número de sesiones abiertas concurrentemente por un usuario cualquiera, y posteriormente aplicar este perfil a uno o más usuarios concretos.

    Instalación de Oracle 9i

    edu.red

    Insertaremos el disco 1 para comenzar la instalación, estos CDs puede descargarse gratuitamente de la propia pagina www.oracle.com

    edu.red

    Ponemos siguiente en la pantalla de bienvenida y luego nos aparece la pantalla en donde nos va a mostrar la ruta de donde se va a copiar los archivos de instalación, ponemos siguiente.

    edu.red

    En esta página vamos a escoger que tipo de instalación queremos. En este caso escogemos Oracle9i Database 9.2.0.1.0 para el servidor caso contario, si ya existe un servidor escogemos Oracle9i Client 9.2.0.1.0

    Damos clic en siguiente.

    edu.red

    Escogemos el tipo de instalación de vamos a realizar: Enterprise Edition

    edu.red

    Para la configuración de la base de datos es simple de uso general

    edu.red

    Seleccionaremos el puerto 2030. Este parámetro es muy importante pues, si decidimos cambiar el puerto por defecto, cuando queramos que un cliente se conecte al servidor deberemos especificar el puerto que hayamos seleccionado en este punto de la instalación:

    edu.red

    En este punto de la instalación vamos a identificar el nombre de la base de datos, en donde en los datos global debe ir el nombre completo de la base con todo dominio, y en el SID va solo el nombre de la BD, en este caso no hay dominio.

    edu.red

    En esta página tenemos que poner la ruta en donde va a estar nuestra base de datos

    edu.red

    Escogemos el juego de caracteres ALT32UTF8 ya que si escogemos por defecto nosotros no sabemos cual es el que en el sistema operativo.

    edu.red

    Nos muestra que vamos instalar en un pequeño detalle damos clic en instalar.

    edu.red

    Cada vez que nos pida el otro disco ingresamos el indicado y aceptamos.

    edu.red

    En esta se inician las herramientas de configuración.

    edu.red

    En esta se copia los archivos y se inicializa la base de datos.

    edu.red

    Aquí introducimos las claves para ingresar a nuestra base de datos tanto como SYS y SYSTEM.

    edu.red

    Muestra que ya a terminado la instalación y damos clic en salir.

    edu.red

    Ingresar a la base de datos

    Damos clic en inicio, todos los programas, Oracle-OraHome92, Enterprise Manager Console.

    edu.red

    Nos muestra la siguiente pantalla, y escogemos iniciar en modo autónomo, aceptamos.

    edu.red

    Abrimos la base de datos que creamos y nos muestra esta ventana para poner nuestro usuario y contraseña, que pusimos anteriormente en la configuración.

    edu.red

    Y nos muestra la pantalla principal con todo el árbol de nuestra base de datos, en la parte derecha esta el host, el puerto, nuestro nombre de servicio y el TNS.

    edu.red

    Crear un TableSpace o espacio de tablas

    Para crear un tableSpace, vamos a Almacenamiento, damos clic derecho en Tablespace y crear.

    edu.red

    Nos aparece la siguiente pantalla en donde se pone el nombre del tablespace en este caso yo he puesto TOTAV y también tenemos que poner el nombre del Datafile DOTAV para diferenciar el uno del otro al comienzo e puesto T para Tablesapace y D para Datafile y crear.

    edu.red

    Crear Usuario

    Para crear usuario damos clic en Seguridad, clic derecho en Usuarios y crear

    edu.red

    En esta parte ponemos el nombre de usuario, ponemos la contraseña, en tablespace escogemos el que creamos. Damos un clic en la pestaña Rol

    edu.red

    En rol damos los siguientes privilegios, CONNECT, DBA, RESOURCE, EXP_FULL_DATABASE.

    Damos clic en la pestaña sistema.

    edu.red

    En sistema damos los siguientes privilegios CREATE DATABASE LINK, CREATE CLUSTER, CREATE DIMENSION, CREATE PUBLIC DATABASE LINK, CREATE PUBLIC SYNONYM, y creamos.

    edu.red

    Como Crear Esquema y tabla

    Para crear un esquema primero debemos crear un objeto, damos clic en Objeto del menú y crear.

    edu.red

    Escogemos tabla y creamos.

    edu.red

    Nos muestra lo siguiente, en donde tenemos que poner el nombre de nuestra tabla de la base de datos, escogemos el Esquema que es el Usuario y el tablespace. Siguiente.

    edu.red

    Creamos los campos de la tabla

    edu.red

    Creamos una clave primaria. Siguiente.

    edu.red

    Ponemos si es nulo los campos que requiera.

    edu.red

    Por ultimo nos indica generado en sql. Terminar.

    edu.red

    Ahora nos posesionamos en esquema y buscamos a nuestro esquema y los expandimos para ver su árbol.

    edu.red

    Crear una secuencia

    Este genera números de forma incremental o decremento con límite o no.

    Damos clic en Esquema, buscamos a nuestro esquema, clic derecho en secuencia, crear

    edu.red

    Ponemos el nombre los parámetros, sino hay datos ingresados entonces queda por defecto.

    edu.red

    Ahora vamos hacer el disparador para que funcione

    Desplegamos la tabla FAC_COMPRA y damos clic derecho en disparadores y crear.

    edu.red

    En general ponemos el nombre escogemos el esquema y ponemos estas líneas de código.

    Clic en la pestaña evento

    edu.red

    En evento escogemos el esquema, la tabla y damos un visto en Insertar, clic en Avanzado.

    edu.red

    Damos un visto en Disparador para cada fila, escribimos en Antigua como: OLD y Nueva como: NEW. Damos clic en crear

    edu.red

    Para verificar si esta correcto debemos ingresar los datos en la tabla sin poner el campo de secuencia en insertar y automáticamente debe ponerse el numero.

    Distribución replicación de base de datos Oracle

    Introducción

    El presente documento muestra la forma de replicar de manera sencilla los datos de una base de datos en oracle hacia otro servidor oracle, mediante el uso de vistas materializadas.

    La replicación te permite tener una copia exacta de una base de datos alojada en un servidor (maestro) que se guardará en otro servidor (esclavo). Todas las modificaciones que se hagan en la base de datos del servidor maestro se actualizarán inmediatamente en el servidor esclavo.

    Esto no es una copia de seguridad, ya que si borramos una fila en la base de datos maestra, también se borrará en la base de datos esclava. A continuación tenemos los pasos para instalar y configurar nuestro servidor para replicar datos.

    Bases de datos distribuidas

    Se trata de una base de datos a nivel lógico (los usuarios la manejan como una base de datos normal), pero que en realidad (físicamente) está implementada en varias ubicaciones físicas, incluso en máquinas diferentes y distantes.

    Cada máquina ejecuta su propia instancia y conjuntos de archivos y todas se conectan en red para hacer que el usuario no tenga que cambiar su código para reflejar esta distribución. La dificultad de esta estructura suele estar aliviada por medio de instantáneas que graban momentáneamente los datos de las tablas distantes. Permiten trabajar con los datos copiados y se programan para que cada cierto tiempo recojan nuevamente los datos a fin de reflejar sus cambios.

    Gracias a las instantáneas no hace falta una sobrecarga tan excesiva de las instantáneas de la base de datos.

    Las computadoras, o nodos en un entorno de base de datos distribuida, actuarán como clientes y servidores en función de si están solicitando los datos de otra base de datos en un nodo diferente o de facilitar datos a un nodo distinto que así lo soliciten. Cada sitio es autónomo, es decir, administrar de forma independiente. Las bases de datos son distintos, las entidades separadas que comparten sus datos. Los beneficios de la autonomía de la obra son:

    * Las bases de datos diferentes que cooperaron en el entorno distribuido pueden réplica local de la organización las necesidades y deseos. Esto es especialmente útil en lugares donde puede haber dos organizaciones que necesitan compartir algunos, pero no todos, los datos. Un ejemplo podría ser dos empresas del sector aeroespacial que cooperaron en la plataforma espacial. Es posible que necesiten compartir datos de diseño, pero no quieren compartir la información financiera.

    * Los datos locales es controlada por el administrador de base de datos local. Esto limita la responsabilidad a un nivel manejable.

    * El fracaso en un nodo tiene menos probabilidades de afectar a otros nodos. El sistema mundial es al menos parcialmente disponibles en la medida como un solo nodo de la base de datos está activo. No solo fallo pondrá fin a todo el procesamiento o ser un cuello de botella de rendimiento. Por ejemplo, si el nodo de Pittsburgh se cae, no afectará el nodo de Omaha, Omaha, siempre y cuando no requieran ninguno de los datos de Pittsburgh.

    * La falta de recuperación se encuentra en un nodo para cada.

    * Un diccionario de datos existe para cada base de datos local.

    * Los nodos pueden actualizar el software de forma independiente, dentro de lo razonable. Como DBA tendrá que comprender las estructuras y los límites del entorno distribuido si están obligados a mantener un entorno distribuido

    Replicación de base de datos con Oracle

    edu.red

    edu.red

    El programa de instalación nos muestra la pantalla de bienvenida para la instalación, en este momento tenemos que dar click en siguiente.

    edu.red

    edu.red

    REPLICACION DE BASE DE DATOS CON ORACLE

    Aceptamos los términos y condiciones del programa y pulsamos siguiente, en seguida seleccionamos la ubicación de los archivos de instalación, si queremos instalarlos en otra ubicación podemos seleccionarla pulsando el botón Examinar, después de esto pulsamos siguiente.

    edu.red

    edu.red

    Ahora tecleamos una contraseña para los usuarios SYS y SYSTEM, los cuales son los usuarios (dba) administradores en oracle, y pulsamos en siguiente, ahora nos mostrara un resumen de la instalación si estamos de acuerdo con este daremos clic en instalar.

    Configurando El Servidor

    Ahora editaremos el archivo "C:oracleproduct10.2.0db_1networkadmintnsnames.ora", y agregaremos las siguientes líneas de configuración (resaltadas en cursiva y negrita) para que el servidor oracle reconozca nuestro servidor remoto, usando una resolución de nombres tns.

    # tnsnames.ora Network

    Configuration File:

    D:oracleproduct10.2.0db_1net

    workadmintnsnames.ora

    # Generated by Oracle

    configuration tools.

    LISTENER_ORCL =

    (ADDRESS =

    (PROTOCOL = TCP)

    (HOST =

    RAMMSCORP.gateway.2wire.net)

    (PORT = 1522)

    )

    ORCL =

    (DESCRIPTION =

    (ADDRESS =

    (PROTOCOL = TCP)

    (HOST =

    RAMMSCORP.gateway.2wire.net)

    (PORT = 1522)

    )

    (CONNECT_DATA =

    (SERVER = DEDICATED)

    (SERVICE_NAME = orcl)

    )

    )

    YOS =

    (DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS =

    (COMMUNITY = TCP)

    (PROTOCOL = TCP)

    (HOST = yosy1)

    (PORT = 1521)

    )

    )

    (CONNECT_DATA =

    (SID = XE)

    )

    )

    EXTPROC_CONNECTION_DATA =

    (DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS =

    (PROTOCOL = IPC)

    (KEY = EXTPROC1)

    )

    )

    (CONNECT_DATA =

    (SID = PLSExtProc)

    (PRESENTATION = RO)

    )

    )

    Donde YOS es el nombre del servidor remoto que agregamos, es decir un alias, PROTOCOL es el protocolo de comunicación hacia el servidor, HOST es el nombre ó la dirección IP de la computadora que tiene el servidor, PORT indica el numero de puerto al cual se conectara el servidor y finalmente SID que es el nombre de servicio del servidor remoto.

    De esta manera nos podremos conectar con el servidor remoto usando la nomenclatura de conexión: Usuario/Password@Alias_Del_Servidor:[Puerto] Donde Usuario es cualquier usuario valido del servidor remoto, Password es la contraseña del usuario remoto, @Alias_del_servidor es el nombre que hemos añadido en el archivo de configuración tnsnames.ora, y finalmente el Puerto que indica a que puerto se conectara este parámetro es opcional, por defecto las conexiones se realizan al puerto 1521.

    Una vez editado y configurado archivo, tendremos que configurar nuestro servidor estableciendo un DBLink ó un enlace a base de datos.

    Usando la siguiente instrucción: Create database link "Nombre_Del_DBLink" connect to Usuario identified by "Password" using 'HOST[: PUERTO]/SID' De la siguiente instrucción tenemos Nombre_Del_DBLink el cual es un nombre cualquiera para identificar a que base de datos estamos ligados, Usuario el cual debe de ser un usuario remoto valido, Password es la contraseña del usuario remoto, HOST es el nombre ó dirección ip del servidor, PUERTO indica el numero del puerto al que se conectara el parámetro es opcional, el puerto por defecto es el 152, y por ultimo SID es el nombre del servicio al cual se conectara nuestro servidor.

    La cual nos proporcionara la facilidad de hacer consultas del tipo:

    Objeto@DBLink

    Donde Objeto puede ser cualquier tipo de objeto en la base de datos remota y @DBLink es el enlace a la base de datos, de este modo podremos usar las tablas, vistas, triggers y demás objetos en el servidor.

    Estos pasos de configuración se hacen en los dos servidores para que se puedan comunicar, es decir tenemos que dar de alta el servidor 1 en el servidor 2 y viceversa; además tenemos que dar de alta un DBLink para cada uno de ellos, una vez teniendo configurados los servidores podremos iniciar la replicación.

    Replicando Datos

    Ahora antes de replicar los datos tenemos que tener datos, necesitamos tener cuando menos una tabla en la base de datos, ahora crearemos una tabla para hacer esta práctica la cual llamaremos: COMPRAS; la cual estará en el servidor 1 (RAMMS) y será replicada hacia el servidor 2 (YOS).

    Utilizaremos las sentencias de SQL Plus para crear la tabla con los siguientes campos de la siguiente manera:

    CREATE TABLE RAMMS.COMPRAS

    (

    CODIGO VARCHAR2 (8 BYTE) NOT

    NULL,

    PROVEEDOR VARCHAR2 (30

    BYTE) NOT NULL,

    PRODUCTO VARCHAR2 (45 BYTE)

    NOT NULL,

    PRECIOCOMPRA INTEGER NOT

    NULL,

    PRECIOVENTA INTEGER NOT

    NULL,

    CANTIDAD NUMBER NOT NULL

    )

    Y posteriormente:

    ALTER TABLE RAMMS.COMPRAS

    ADD (

    PRIMARY KEY

    (CODIGO)

    USING INDEX

    TABLESPACE USERS

    PCTFREE 10

    INITRANS 2

    MAXTRANS 255

    STORAGE (

    INITIAL 64K

    MINEXTENTS 1

    MAXEXTENTS

    UNLIMITED

    PCTINCREASE 0

    ));

    Después de crear la tabla agregaremos datos en ella, quedando de la siguiente manera:

    edu.red

    Ahora realizaremos una consulta desde el servidor 2 (YOS) usando los DBLink, quedando de la siguiente manera:

    SELECT * FROM COMPRAS@DBLINKRAMMS

    Arrojando la siguiente información:

    edu.red

    Como podemos observar la consulta funciona es decir que podemos consultar objetos desde el servidor 2, ahora crearemos en el servidor 1 (RAMMS), una tabla LOG para la replicación de la tabla COMPRAS, con la siguiente instrucción:

    CREATE MATERIALIZED VIEW LOG ON RAMMS.COMPRAS

    NOCACHE

    LOGGING

    NOPARALLEL;

    Esta tabla guardara los datos cambiados y actualizara de manera instantánea todas las replicas de la tabla COMPRAS.

    Ahora desde el servidor 2 (YOS) crearemos nuestra vista materializada para recibir los datos de la tabla original, a este procedimiento de replica se le denomina replica en forma de instantánea o de snapshot, lo haremos usando la siguiente instrucción.

    CREATE MATERIALIZED VIEW RAMMS.COMPRAS

    BUILD IMMEDIATE

    REFRESH FAST ON COMMIT

    AS

    SELECT * FROM COMPRAS@DBLINKRAMMS;

    Ahora en el servidor 2 (YOS), ya disponemos de una copia exacta de la tabla

    compras del servidor 1 (RAMMS), y se actualizara automáticamente cuando

    se haga un commit en las transacciones, ahora podemos ejecutar la

    sentencia:

    SELECT * FROM COMPRAS;

    E inmediatamente después podremos apreciar el resultado de la consulta, nótese que en el servidor 2,no existían datos para la tabla COMPRAS de hecho COMPRAS no es una tabla es una ¡vista!

    edu.red

    De esta manera cualquier cambio realizado en el servidor 1, se verá reflejado inmediatamente en el servidor 2, de esta manera tenemos la información actualizada y lo más importante distribuida en varios nodos al mismo tiempo.

     

     

    Autor:

    Franco Roldán

    Partes: 1, 2
     Página anterior Volver al principio del trabajoPágina siguiente