Oracle - Consulta para ver diferencias en tablas "iguales"

 
Vista:
sin imagen de perfil

Consulta para ver diferencias en tablas "iguales"

Publicado por jcontti (2 intervenciones) el 13/12/2017 20:41:07
Buenas, que tal soy nuevo en el foro, en realidad siempre encuentro una solución y nunca posteo, esta vez es la excepción:( .
Tengo un problema con una tabla llamada "tipos_operacion" en Oracle, esta tabla contiene los tipos de operaciones que se hacen en el sistema ejemplo: recibos, facturas, anulacion de caja, etc. Estas operaciones tienen un código y nombre que en todas las bases tendrían que ser igual, pero no lo son...en la actualidad tengo esta tabla en 15 instancias diferentes, necesito hacer que todas estén iguales, es decir:

tabla ejemplo "tabla1"

codigo - nombre
1 factura
2 orden de pago
3 anulación
4 recibo


tabla ejemplo "tabla2"

codigo - nombre
1 anulacion
2 orden de pago
3 facturacion
4 recibo


Un estilo así sería, pero con 200 registros por tabla en las cuales la mayoría coinciden, necesito una consulta que me muestre cuales son las diferencias, entre la tabla 1 y la tabla 2. He estado haciendo consultas con union, subconsultas, etc. Pero no logro dar en la tecla...

Ojala me puedan ayudar, desde ya gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Consulta para ver diferencias en tablas "iguales"

Publicado por Rafael (328 intervenciones) el 14/12/2017 09:13:14
Hola jcontti

Si pusieras las consultas que estas usando ... quizás pordriamos ayudarte mejor ...

Ahora bien dices que tienes 15 instancias diferentes, supongo que mediante un DBLink las ves todas en un solo sitio, o son schemas diferentes??? Vaya como sea creo entender que puedes tener un sitio donde ves todas a la vez.

Ahora para garantizar que todas son iguales por que no pruebas una sentencia MERGE

Para ello elige la tabla de la instancia que sera la que realmente esta como quieres y esta completa.
Luego realizas un MERGE a cada tabla que vas a igualar.
Ejemplo:
1
2
3
4
5
6
7
8
MERGE INTO tabla_destino A
    USING tabla_origen B
    ON (A.codigo = B.codigo)
  WHEN MATCHED THEN
    UPDATE SET A.nombre = B.nombre
  WHEN NOT MATCHED THEN
    INSERT (codigo, nombre)
    VALUES (B.codigo, B.nombre);

Otra opcion por que no exportas la tabla origen o correct mediante EXPDP, y la importas en cada instancia?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Consulta para ver diferencias en tablas "iguales"

Publicado por jcontti (2 intervenciones) el 14/12/2017 17:55:25
Muchas gracias por tu sugerencia Rafael!
no había tenido en cuenta el MERGE, me facilita muchísimo las cosas.
Contestando a tu pregunta, no tengo realizado DBlink (todavia), soy nuevo en esto de administrar bases de datos y soy la única persona en la empresa para la cual trabajo en que sabe de bases de datos, tengo que empezar a ordenar las cosas que nunca antes se habían pensado. Tengo pensado empezar a usar Oracle Enterprise Manager ya que he leido que facilitará mi trabajo.
Nuevamente te agradezco tu tiempo!

Tema resuelto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar