MERGE con dblinks: parche 4311273

Si quieres utilizar MERGE con tablas remotas a través de un dblink sin que aparezca el “ORA-02064: operación distribuida no soportada” (“ORA-02064: distributed operation not supported“) deberás instalar el parche 4311273.

Aquí tenemos dos Oracle 10.2.0.3 en dos servidores: uno Linux con el parche 4311273, y otro Windows sin él:

carlos@db01.windows> select * from V$VERSION;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

carlos@db01.windows> desc  prueba05;
 Nombre                                    ¿Nulo?   Tipo
 ----------------------------------------- -------- ----------------------------
 ID_N                                      NOT NULL NUMBER(38)
 C_TXT1                                             VARCHAR2(10)
 C_TXT2                                             VARCHAR2(10)

carlos@db01.windows> select * from prueba05;

      ID_N C_TXT1     C_TXT2
---------- ---------- ----------
         1

carlos@db01.windows>
carlos@db01.linux> select * from V$VERSION;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

carlos@db01.linux> desc prueba01;
 Nombre                                    ¿Nulo?   Tipo
 ----------------------------------------- -------- ----------------------------
 ID_N                                      NOT NULL NUMBER
 C_TXT                                              VARCHAR2(25)

carlos@db01.linux> select * from prueba01;

      ID_N C_TXT
---------- -------------------------
         1 UNO

carlos@db01.linux>

Si en la máquina windows (la que no tiene el parche) intentamos MERGE sobre un dblink:

carlos@db01.windows> merge into prueba05 a
  2  using carlos.prueba01@db01.linux b
  3  on (a.id_n = b.id_n)
  4   when matched then update set a.c_txt1=b.c_txt;
merge into prueba05 a
           *
ERROR en línea 1:
ORA-02064: operación distribuida no soportada

carlos@db01.windows>

Pero si hacemos lo mismo en la máquina Linux (con el parche instalado) tenemos:

carlos@db01.linux> merge into prueba01 a
  2  using carlos.prueba05@db01.windows b
  3  on (a.id_n = b.id_n)
  4  when matched then update set a.c_txt=b.c_txt1;

1 fila fusionada.

carlos@db01.linux>

La instalación del parche no tiene mayor dificultad que la descarga desde metalink y la utilización de OPatch.

Saludos.

Carlos.

About these ads

2 respuestas a MERGE con dblinks: parche 4311273

  1. Jeru dice:

    Hola Carlos

    Para este error he encontrado otra solución que me permito comentar:

    Usé la sentencia PRAGMA AUTONOMOUS_TRANSACTION; creando un procedimiento que llama al paquete que necesito el cual contine varios commits que me estana causando el error (“ORA-02064: distributed operation not supported“), eso me permitio hacer la inserción que necesitaba desde la bd origen mediante un dblink publico.
    Espero sirva de ayuda.

  2. CarlosAL dice:

    Jeru:

    No entiendo muy bien lo que sugieres, pero utilizar una (segunda) transacción autónoma (PRAGMA AUTONOMOUS_TRANSACTION -que no es una sentencia sino un ‘pragma’-) no creo que sea una buena idea si quieres controlar que tu transacción sea coherente y, a fin de cuentas, ‘ACID’ (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad)

    Saludos.

    Carlos.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 46 seguidores

A %d blogueros les gusta esto: