Método más adecuado para actualizar una base de datos con contenido de otra

Me gustaría saber cuál es el método más eficaz para mantener actualizada una base de datos con los datos de otra, es decir teniendo dos máquinas diferentes. Los datos que se actualizarían no sería toda la base de datos cada vez, sino una serie de registros de cada tabla en función de una serie de condiciones.
Estamos hablando de un datawarehouse balanceado entre dos máquinas (es decir, de un gran volumen de información), una donde se procesan los datos y otra donde, una vez actualizada con los datos de la anterior, son consultados por los usuarios.

1 respuesta

Respuesta
1
Soy LUMOSA, mira supongamos que tienes dos based de datos BASE1 Y BASE2 en dos servidores diferentes entonces:
1. Necesitas crear un usuario con sus respectivos roles y privilegios en ambas bases de datos (el mismo usuario).
2. Crea un DATABASE LINK entre BASE1 y BASE2 (o viceversa dependiendo de donde a donde tienes que ir a consultar o actualizar)
3. Recuerda definir el alias de conexión en el TNSNAMES. ORA
4.Para verificar que tu DATABASE LINK quede bien, haz un test de tu base de datos así:
SELECT * FROM DUAL@master
Aqui master es
Otra forma de consultar información si es una base de datos masiva es crear
SNAPSHOT en el MASTER SITE (el shapshot log) y el la base remota.
Mira consulta el www.metalink.oracle.con los documentos 22589.1,114148.1,1020404.6 y algo sobre DATABASE LINK
Nota:si desea me escribes cual es tu ambiente u podemos generar el script para tal fi.
Que dios te bendiga y guarde...
No me has comentado de tus avances...
Lumosa
Es mucha información para pasarla a través de un dblink (por ejemplo hay tablas en las que se actualizarían cada día 5 millones de registros y pasar esto de una máquina a otra supone horas).
¿No hay algún método más óptimo? Ahora estoy haciendo pruebas con un export de los datos, ftp a la máquina destino e import en la máquina destino, a ver como va, aunque me temo que los tiempos también se disparan.
Como dices que se actualizan solo alhunas tablas entonces prueba hacer EXPORT/IMPORT por tabla
Ejemplo:
exp system/clave tables=(usuario.tabla1,usuario.tabla2,..) file=/ruta/archivo.dmp
el IMPORT seria:
imp system/clave fromuser=usuario touser=usuario
file=/ruta/archivo.dmp tables(tabla1,tabla2,..)
Prueba y miras como te va...
También prueba lo siguiente:
Sea A la base de datos remota y sea B la base de datos local.
Supongamos que vas a copiar una tabla llamada NOMINA que esta en la base A a la base B.
1. Desde B, entra a SQL con el usuario dueno de la tabla.
$sqlplus usuario/clave@B
ENTONCES EJECUTA:
sql>COPY FROM usuario/clave@A TO usuario/clave@B CREATE NOMINA USING SELECT aqui va el query que tu deseas
FROM NOMINA
WHERE condicion de la clausula
Nota:si el comando no te cabe en la linea donde estas ecribiendo colócale al final de la linea un güin (-) como linea de continuación..
Lumosa.
En el comando COPY también puedes colocar:
APPEND --> inserta filas si la tabla existe
CREATE --> Crea la tabla e inserta.
REPLACE -->reemplaza registros
SUERTE.. lumosa..
¿No respondes a la respuesta dada?
Por favor responde acerca de la solución y cierra la pregunta
Podrías cerrar tu pregunta...
Lumosa...
Si no te sirvió nada de la enviado o solucionaste tu problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas