DB2 - Bases federadas y cursores

 
Vista:
sin imagen de perfil

Bases federadas y cursores

Publicado por Fredd (1 intervención) el 16/09/2022 01:52:15
Hola a todos
Necesito de su guía para trabajar con bases federadas en DB2, específicamente con cursores

Bases de datos: dblocal y dbremote
En la base dbremote tengo las tablas history_a y history_b
En la base dblocal tengo las tablas table_1 y table_2; y los apodos history_a y history_b (tablas federadas)

* Caso 1
En la tabla history_a debo cargar miles de resgitros de table_1.
Con un procedimiento almacenado NO es posible hacer una carga masiva en bases federadas con la opción LOAD FROM SELECT... OF CURSOR
CALL SYSPROC.ADMIN_CMD('LOAD FROM (DATABASE dblocal select C1, C2 from table_1' OF CURSOR INSERT INTO history_a))

Se recibe el error SQL2305N

ERROR [] [IBM][DB2/LINUXPPC64LE]
SQL2305N La tabla especificada es una vista o un apodo.
El programa de utilidad no se puede ejecutar en una vista o un apodo

Para solucionar hago uso de un procedimiento almacenado con la opción INSERT INTO table SELECT...
CREATE PROCEDURE myProcedure ()
begin
INSERT INTO history_a (select C1, C2 from table_1);
end;
La carga es satisfactoria aunque el tiempo es más alto usando INSERT comparado con el tiempo al usar LOAD
Q1: ¿Hay alguna manera de mejorar el rendimiento al hacer cargas masivas en bases federadas?

* Caso 2
En un procedimiento almacenado necesito devolver en el conjunto de datos de una consulta SQL que usa tablas locales y tablas federadas.

CREATE PROCEDURE myProcedure ()
begin
declare myCursor cursor with return to caller for select t1.c1, t2.c1, F_ha.c1, F_hb.c3... from table_1 t1, table_2 t2, history_a F_ha, history_b F_hb where...;
open myProcedure;
end;

Se recibe el error SQL0109N

ERROR [42601] [IBM][DB2/LINUXPPC64LE]
SQL0109N La sentencia o comando no se ha procesado porque no se soporta la siguiente cláusula en el contexto donde se utiliza: "WITH ISOLATION USE AND KEEP".

Q2: ¿Qué alternativas tengo para devolver el conjunto de datos desde una base federada?

--------------------------------------
[db2inst4@srv-db-dba-01 ~]$ db2level
DB21085I This instance or install (instance name, where applicable:
"db2inst4") uses "64" bits and DB2 code release "SQL11014" with level
identifier "0205010F".
Informational tokens are "DB2 v11.1.4.5", "special_40414",
"DYN1911120100PPCLE_40414", and Fix Pack "5".
Product is installed at "/opt/ibm/db2/V11.1".

[db2inst4@srv-db-dba-01 ~]$
--------------------------------------

Muchas gracias por su ayuda
Fredd
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