Entrada de datos y validación.
Procesamiento de ayudas.
Recuperación de errores.
A continuación mostramos las arquitecturas
cliente–servidor 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 SQLRedo 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/apuntadoresUser 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 fileCheckpoint: sincroniza todo lo que se tenga en
memoria, con sus correspondientes archivos en
disco
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 | ||
CREATE [PUBLIC] SYNONYM | Crear sinónimos | ||
CREATE [ANY] TABLE | Crear tablas. El usuario debe tener | ||
CREATE [ANY] VIEW | Crear vistas. | ||
ALTER ANY INDEX | Alterar cualquier | ||
ALTER ANY TABLE | Alterar cualquier tabla | ||
DROP ANY INDEX | Borrar cualquier | ||
DROP ANY SYNONYM | Borrar cualquier | ||
DROP PUBLIC SYNONYM | Borrar sinónimos | ||
DROP ANY VIEW | Borrar cualquier vista. | ||
DROP ANY TABLE | Borrar cualquier tabla. | ||
SELECT ANY TABLE | Efectuar selecciones de cualquier | ||
INSERT ANY TABLE | Insertar en cualquier tabla o | ||
DELETE ANY TABLE | Borrar filas de cualquier tabla o | ||
ALTER SESSION | Alterar los parámetros de la | ||
CREATE SESSION | Conectarse a la BD. | ||
CREATE PROFILE | Crear perfiles de usuario. | ||
CREATE ROLE | Crear roles. | ||
CREATE ROLLBACK SEGMENT | Creación de segmentos de | ||
CREATE TABLESPACE | Crear espacios de tablas. | ||
CREATE USER | Crear usuarios. | ||
ALTER PROFILE | Alterar perfiles | ||
ALTER ANY ROLE | Alterar cualquier rol. | ||
ALTER ROLLBACK SEGMENT | Alterar segmentos de | ||
ALTER TABLESPACE | Alterar espacios de | ||
ALTER USER | Alterar usuarios. | ||
DROP PROFILE | Borrar un perfil | ||
DROP ANY ROLE | Borrar cualquier rol. | ||
DROP ROLLBACK SEGMENT | Borrar un segmento de rollback | ||
DROP TABLESPACE | Borrar un espacio de | ||
DROP USER | Borrar un usuario. Añadir | ||
ALTER DATABASE | Permite una sentencia ALTER | ||
GRANT ANY PRIVILEGE | Otorgar cualquiera de estos | ||
GRANT ANY ROLE | Otorgar cualquier rol a un | ||
UNLIMITED TABLESPACE | Puede usar una cantidad de | ||
DROP PROFILE | Borrar un perfil |
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 | ||||
UPDATE | Puede actualizar filas en una tabla o | ||||
DELETE | Puede borrar filas dentro de la tabla | ||||
ALTER | Puede alterar la tabla. | ||||
INDEX | Puede crear índices de una | ||||
REFERENCES | Puede crear claves ajenas que | ||||
EXECUTE | Puede ejecutar un procedimiento, | ||||
READ | Permite leer archivos asociados con |
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
Insertaremos el disco 1 para comenzar la
instalación, estos CDs puede descargarse gratuitamente de
la propia pagina www.oracle.com
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.
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.
Escogemos el tipo de instalación de vamos a
realizar: Enterprise Edition
Para la configuración de la base de
datos es simple de uso general
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:
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.
En esta página tenemos que poner la ruta en donde
va a estar nuestra base de datos
Escogemos el juego de caracteres ALT32UTF8
ya que si escogemos por defecto nosotros no sabemos cual es el
que en el sistema operativo.
Nos muestra que vamos instalar en un pequeño
detalle damos clic en instalar.
Cada vez que nos pida el otro disco
ingresamos el indicado y aceptamos.
En esta se inician las herramientas de
configuración.
En esta se copia los archivos y se
inicializa la base de datos.
Aquí introducimos las claves para ingresar a
nuestra base de datos tanto como SYS y SYSTEM.
Muestra que ya a terminado la instalación y damos
clic en salir.
Ingresar a la
base de datos
Damos clic en inicio, todos los programas,
Oracle-OraHome92, Enterprise Manager Console.
Nos muestra la siguiente pantalla, y
escogemos iniciar en modo autónomo, aceptamos.
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.
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.
Crear un
TableSpace o espacio de tablas
Para crear un tableSpace, vamos a Almacenamiento, damos
clic derecho en Tablespace y crear.
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.
Crear
Usuario
Para crear usuario damos clic en Seguridad, clic derecho
en Usuarios y crear
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
En rol damos los siguientes privilegios, CONNECT, DBA,
RESOURCE, EXP_FULL_DATABASE.
Damos clic en la pestaña sistema.
En sistema damos los siguientes privilegios
CREATE DATABASE LINK, CREATE CLUSTER, CREATE DIMENSION, CREATE
PUBLIC DATABASE LINK, CREATE PUBLIC SYNONYM, y
creamos.
Como Crear
Esquema y tabla
Para crear un esquema primero debemos crear
un objeto, damos clic en Objeto del menú y
crear.
Escogemos tabla y creamos.
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.
Creamos los campos de la tabla
Creamos una clave primaria.
Siguiente.
Ponemos si es nulo los campos que
requiera.
Por ultimo nos indica generado en sql.
Terminar.
Ahora nos posesionamos en esquema y
buscamos a nuestro esquema y los expandimos para ver su
árbol.
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
Ponemos el nombre los parámetros,
sino hay datos ingresados entonces queda por defecto.
Ahora vamos hacer el disparador para que
funcione
Desplegamos la tabla FAC_COMPRA y damos
clic derecho en disparadores y crear.
En general ponemos el nombre escogemos el
esquema y ponemos estas líneas de
código.
Clic en la pestaña evento
En evento escogemos el esquema, la tabla y damos un
visto en Insertar, clic en Avanzado.
Damos un visto en Disparador para cada fila, escribimos
en Antigua como: OLD y Nueva como: NEW. Damos clic en
crear
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
El programa de instalación nos muestra la
pantalla de bienvenida para la instalación, en este
momento tenemos que dar click en siguiente.
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.
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:
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:
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!
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
Página anterior | Volver al principio del trabajo | Página siguiente |