Problemas al ejecutar jobs simultanemente en 11g
Estoy usando jobs para extraer información de varias base de datos remotas atrvez de un dblink para cada base. Los jobs los mando ejecutar desde un shell de unix. El problema que se me presenta es que al principio lo haci de manera simultanea y el proceso tardaba minutos en terminar de un tiempo para acá el proceso se ha vuelto muy lento y veo que la información se la trae de una por una cuando antes lo hacia de manera simultanea. ¿Qué puede ser?
1 respuesta
Respuesta de oraphp
1
1
oraphp, Analista programador en oracle, oracle forms, plsql, php para oracle
Todo depende de lo que estés haciendo, y la manera en que tengas configurado el dblink
Puedes ser más especifico, y si puedes me envías la instrucción que estas ejecutando, ¿para poderte ayudar?
Mientras... revisa si ha habido un cambio an las claves primarias de lo que estas trayendo.
Puedes ser más especifico, y si puedes me envías la instrucción que estas ejecutando, ¿para poderte ayudar?
Mientras... revisa si ha habido un cambio an las claves primarias de lo que estas trayendo.
Gracias por contestar oraphp, el esquema que manejo es de una base de datos central voy por información de 2 tablas a varias bases de datos remotas, posteriormente a esto se ejecuta otro proceso que actualiza de la base central a las bases remotas varias tablas pero este proceso en ocasiones se ejecuta y en otras no, cuando no se ejecuta no marca ningún error.
Valide las claves primarias pero estas no han cambiado, te anexo el proceso que utilizo
procedure spinsertadatos_ttp_eje(sql_dblink in varchar2, sql_trama in varchar2);
procedure spinsertadatos_ttp_ate(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date);
procedure spinsertadatos_ttp_ate_mot(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date);
procedure spinsertadatos_ttp_eje_edo(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date);
procedure spinserta_tt_procesa(sql_trama in varchar2, fecha_inicio date);
end insercion_tturno;
/
create or replace package body admtomtur.insercion_tturno as
procedure spinsertadatos_ttp_eje(sql_dblink in varchar2, sql_trama in varchar2)
is
sql_cadena varchar2(1000);
sql_aux varchar2(4);
cursor_id number;
sql_dummy integer;
sql_proceso varchar2(5);
sql_fecha_inf varchar2(10);
sql_codigo varchar2(5);
sql_descrip varchar2(50);
sql_fecha_hoy varchar2(10);
fecha_ini date;
sql_mensaje varchar2(100);
sql_namedir varchar2(60) := 'dir_tt';
sql_namefile_bita varchar2(15) := 'tturno.log';
sql_buffer varchar2(3000);
sql_file_bita utl_file.file_type;
my_exception_bita_audi exception;
sin_conexion exception;
pragma exception_init (sin_conexion, -12514);
partition_key exception;
pragma exception_init (partition_key, -14400);
extend_index exception;
pragma exception_init (extend_index, -01654);
null_value exception;
pragma exception_init (null_value, -01400);
connect_timeout exception;
pragma exception_init (connect_timeout, -12170);
tns_could_not_resolve_connect exception;
pragma exception_init (tns_could_not_resolve_connect, -12154);
tns_receptor exception;
pragma exception_init (tns_receptor, -12541);
begin
sql_file_bita := utl_file.fopen(sql_namedir,sql_namefile_bita,'a');
if not utl_file.is_open(sql_file_bita) then
raise my_exception_bita_audi;
end if;
sql_buffer := 'entrando spinsertadatos_ttp_eje trama: >'||sql_trama||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_aux := substr(sql_trama,1,4);
sql_proceso := substr(sql_trama,5,5);
sql_fecha_inf := substr(sql_trama,10,10);
sql_cadena := 'insert into ttp_eje (select id_eje, ejecutivo from ttp_eje@'||sql_dblink||' where id_eje not in (select id_eje from ttp_eje))';
cursor_id := dbms_sql.open_cursor;
dbms_sql.parse(cursor_id, sql_cadena, dbms_sql.native);
sql_dummy := dbms_sql.execute(cursor_id);
--commit;
sql_buffer := 'inserto ttp_eje sucursal: >'||sql_aux||'< fecha de inf: >'||sql_fecha_inf||'< no proceso: >'||sql_proceso||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
dbms_sql.close_cursor(cursor_id);
fecha_ini := sysdate;
spinsertadatos_ttp_ate(sql_dblink, sql_trama, fecha_ini);
exception
when no_data_found then
raise_application_error( -20301 , '@insercion_tturno.spinsertadatos_ttp_eje: no existen datos a procesar@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: no existen datos a procesar@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
when invalid_cursor then
raise_application_error( -20302 , '@insercion_tturno.spinsertadatos_ttp_eje: cursor invalido@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: cursor invalido@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when not_logged_on then
raise_application_error( -20303 , '@insercion_tturno.spinsertadatos_ttp_eje: desconexin o no estß firmado en la base de datos@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when login_denied then
raise_application_error( -20304 , '@insercion_tturno.spinsertadatos_ttp_eje: acceso denegado@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
when timeout_on_resource then
raise_application_error( -20305 , '@insercion_tturno.spinsertadatos_ttp_eje: se ha agotado el tiempo de espera@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: se ha agotado el tiempo de espera@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when dup_val_on_index then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: se intent insertar un valor duplicado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,45);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when sin_conexion or connect_timeout or tns_could_not_resolve_connect or tns_receptor then
--sql_buffer := 'insercion_tturno.spinsertadatos_ttp_eje: ' || sqlcode || ' descripcion: ' || sqlerrm;
utl_file.fflush(sql_file_bita);
utl_file.put_line(sql_file_bita,'@insercion_tturno.spinsertadatos_ttp_eje: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'<');
utl_file.fflush(sql_file_bita);
rollback;
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '12514' or sql_codigo = '12170' or
sql_codigo = '12154' or sql_codigo = '12541' then
sql_descrip := sql_codigo||': error al conectarse a la base de datos';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when partition_key or extend_index or null_value then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
rollback;
utl_file.put_line(sql_file_bita,'insercion_tturno.spinsertadatos_ttp_eje: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'< error: > '||sqlcode||'< descripcion: >'||sqlerrm||'<');
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '14400' then
sql_descrip := sql_codigo||': error de particion en la base de datos';
elsif sql_codigo = '01654' then
sql_descrip := sql_codigo||': error en indice';
elsif sql_codigo = '01400' then
sql_descrip := sql_codigo||': intento de insercin de un valor nulo';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when others then
raise_application_error( -20306 , '@insercion_tturno.spinsertadatos_ttp_eje:' || sqlerrm || '@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje >'||sqlerrm||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje >'||sqlerrm||'< punto de venta >'||sql_aux||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,25);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
sql_buffer := sql_mensaje;
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
end spinsertadatos_ttp_eje;
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure spinsertadatos_ttp_ate(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date)
Is
sql_formato_fecha varchar2(10) := 'dd-mm-yyyy';
sql_cadena varchar2(1000);
sql_aux varchar2(4);
cursor_id number;
sql_dummy integer;
sql_proceso varchar2(5);
sql_fecha_inf varchar2(10);
sql_codigo varchar2(5);
sql_descrip varchar2(50);
sql_fecha_hoy varchar2(10);
fecha_ini date;
sql_mensaje varchar2(100);
sql_namedir varchar2(60) := 'dir_tt';
sql_namefile_bita varchar2(15) := 'tturno.log';
sql_buffer varchar2(3000);
sql_file_bita utl_file.file_type;
my_exception_bita_audi exception;
sin_conexion exception;
pragma exception_init (sin_conexion, -12514);
partition_key exception;
pragma exception_init (partition_key, -14400);
extend_index exception;
pragma exception_init (extend_index, -01654);
null_value exception;
pragma exception_init (null_value, -01400);
connect_timeout exception;
pragma exception_init (connect_timeout, -12170);
tns_could_not_resolve_connect exception;
pragma exception_init (tns_could_not_resolve_connect, -12154);
tns_receptor exception;
pragma exception_init (tns_receptor, -12541);
begin
sql_file_bita := utl_file.fopen(sql_namedir,sql_namefile_bita,'a');
if not utl_file.is_open(sql_file_bita) then
raise my_exception_bita_audi;
end if;
sql_buffer := 'entrando spinsertadatos_ttp_ate trama: >'||sql_trama||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_aux := substr(sql_trama,1,4);
sql_proceso := substr(sql_trama,5,5);
sql_fecha_inf := substr(sql_trama,10,10);
sql_cadena := 'insert into ttp_ate (select id_oficina, id_serie, turno, fh_emi, id_eje, id_seriem, id_esc, turnoo, id_serieo, perdido, valor,';
sql_cadena := sql_cadena||' tpo_esp, tpo_lla, tpo_ate, fh_llama, fh_ateini, fh_atefin, id_cliente, cliente';
sql_cadena := sql_cadena||' from ttp_ate@'||sql_dblink||' where to_char(fh_emi,';
sql_cadena := sql_cadena||''''||sql_formato_fecha||''''||') = ';
sql_cadena := sql_cadena||''''||sql_fecha_inf||''''||' and id_oficina = '''||sql_aux||''')';
cursor_id := dbms_sql.open_cursor;
dbms_sql.parse(cursor_id, sql_cadena, dbms_sql.native);
sql_dummy := dbms_sql.execute(cursor_id);
--commit;
sql_buffer := 'inserto ttp_ate informacin faltante';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
dbms_sql.close_cursor(cursor_id);
fecha_ini := sysdate;
spinsertadatos_ttp_ate_mot(sql_dblink, sql_trama, fecha_ini);
exception
when no_data_found then
raise_application_error( -20307 , '@insercion_tturno.spinsertadatos_ttp_ate: no existen datos a procesar@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: no existen datos a procesar@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
when invalid_cursor then
raise_application_error( -20308 , '@insercion_tturno.spinsertadatos_ttp_ate: cursor invalido@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: cursor invalido@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when not_logged_on then
raise_application_error( -20309 , '@insercion_tturno.spinsertadatos_ttp_ate: desconexin o no estß firmado en la base de datos@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when login_denied then
raise_application_error( -20310 , '@insercion_tturno.spinsertadatos_ttp_ate: acceso denegado@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
when timeout_on_resource then
raise_application_error( -20311 , '@insercion_tturno.spinsertadatos_ttp_ate: se ha agotado el tiempo de espera@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: se ha agotado el tiempo de espera@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when dup_val_on_index then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: se intent insertar un valor duplicado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,45);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when sin_conexion or connect_timeout or tns_could_not_resolve_connect or tns_receptor then
--sql_buffer := 'insercion_tturno.spinsertadatos_ttp_ate: ' || sqlcode || ' descripcion: ' || sqlerrm;
utl_file.fflush(sql_file_bita);
utl_file.put_line(sql_file_bita,'@insercion_tturno.spinsertadatos_ttp_ate: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'<');
utl_file.fflush(sql_file_bita);
rollback;
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '12514' or sql_codigo = '12170' or
sql_codigo = '12154' or sql_codigo = '12541' then
sql_descrip := sql_codigo||': error al conectarse a la base de datos';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when partition_key or extend_index or null_value then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
rollback;
utl_file.put_line(sql_file_bita,'insercion_tturno.spinsertadatos_ttp_ate: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'< error: > '||sqlcode||'< descripcion: >'||sqlerrm||'<');
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '14400' then
sql_descrip := sql_codigo||': error de particion en la base de datos';
elsif sql_codigo = '01654' then
sql_descrip := sql_codigo||': error en indice';
elsif sql_codigo = '01400' then
sql_descrip := sql_codigo||': intento de insercin de un valor nulo';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when others then
raise_application_error( -20312 , '@insercion_tturno.spinsertadatos_ttp_ate:' || sqlerrm || '@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate >'||sqlerrm||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate >'||sqlerrm||'< punto de venta >'||sql_aux||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,25);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
sql_buffer := sql_mensaje;
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
end spinsertadatos_ttp_ate;
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure spinsertadatos_ttp_ate_mot(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date)
Is
sql_formato_fecha varchar2(10) := 'dd-mm-yyyy';
sql_cadena varchar2(1000);
sql_aux varchar2(4);
cursor_id number;
sql_dummy integer;
sql_proceso varchar2(5);
sql_fecha_inf varchar2(10);
sql_codigo varchar2(5);
sql_descrip varchar2(50);
sql_fecha_hoy varchar2(10);
fecha_ini date;
sql_mensaje varchar2(100);
sql_namedir varchar2(60) := 'dir_tt';
sql_namefile_bita varchar2(15) := 'tturno.log';
sql_buffer varchar2(3000);
sql_file_bita utl_file.file_type;
my_exception_bita_audi exception;
sin_conexion exception;
pragma exception_init (sin_conexion, -12514);
partition_key exception;
pragma exception_init (partition_key, -14400);
extend_index exception;
pragma exception_init (extend_index, -01654);
null_value exception;
pragma exception_init (null_value, -01400);
connect_timeout exception;
pragma exception_init (connect_timeout, -12170);
tns_could_not_resolve_connect exception;
pragma exception_init (tns_could_not_resolve_connect, -12154);
tns_receptor exception;
pragma exception_init (tns_receptor, -12541);
begin
sql_file_bita := utl_file.fopen(sql_namedir,sql_namefile_bita,'a');
if not utl_file.is_open(sql_file_bita) then
raise my_exception_bita_audi;
end if;
sql_buffer := 'entrando spinsertadatos_ttp_ate_mot trama: >'||sql_trama||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_aux := substr(sql_trama,1,4);
sql_proceso := substr(sql_trama,5,5);
sql_fecha_inf := substr(sql_trama,10,10);
sql_cadena := 'insert into ttp_ate_mot (select id_oficina, id_serie, turno, fh_mot, id_motivo, cantidad';
sql_cadena := sql_cadena||' from ttp_ate_mot@'||sql_dblink||' where to_char(fh_mot,';
sql_cadena := sql_cadena||''''||sql_formato_fecha||''''||') = ';
sql_cadena := sql_cadena||''''||sql_fecha_inf||''''||' and id_oficina = '''||sql_aux||''')';
cursor_id := dbms_sql.open_cursor;
dbms_sql.parse(cursor_id, sql_cadena, dbms_sql.native);
sql_dummy := dbms_sql.execute(cursor_id);
--commit;
sql_buffer := 'inserto ttp_ate_mot informacin faltante';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
dbms_sql.close_cursor(cursor_id);
fecha_ini := sysdate;
spinsertadatos_ttp_eje_edo(sql_dblink, sql_trama, fecha_ini);
exception
when no_data_found then
raise_application_error( -20313 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: no existen datos a procesar@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: no existen datos a procesar@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when invalid_cursor then
raise_application_error( -20314 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: cursor invalido@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: cursor invalido@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when not_logged_on then
raise_application_error( -20315 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: desconexin o no estß firmado en la base de datos@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when login_denied then
raise_application_error( -20316 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: acceso denegado@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when timeout_on_resource then
raise_application_error( -20317 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: se ha agotado el tiempo de espera@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: se ha agotado el tiempo de espera@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when dup_val_on_index then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: se intent insertar un valor duplicado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,45);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when sin_conexion or connect_timeout or tns_could_not_resolve_connect or tns_receptor then
--sql_buffer := 'insercion_tturno.spinsertadatos_ttp_ate_mot: ' || sqlcode || ' descripcion: ' || sqlerrm;
utl_file.fflush(sql_file_bita);
utl_file.put_line(sql_file_bita,'@insercion_tturno.spinsertadatos_ttp_ate_mot: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'<');
utl_file.fflush(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '12514' or sql_codigo = '12170' or
sql_codigo = '12154' or sql_codigo = '12541' then
sql_descrip := sql_codigo||': error al conectarse a la base de datos';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when partition_key or extend_index or null_value then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
utl_file.put_line(sql_file_bita,'insercion_tturno.spinsertadatos_ttp_ate_mot: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'< error: > '||sqlcode||'< descripcion: >'||sqlerrm||'<');
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '14400' then
sql_descrip := sql_codigo||': error de particion en la base de datos';
elsif sql_codigo = '01654' then
sql_descrip := sql_codigo||': error en indice';
elsif sql_codigo = '01400' then
sql_descrip := sql_codigo||': intento de insercin de un valor nulo';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when others then
raise_application_error( -20318 , '@insercion_tturno.spinsertadatos_ttp_ate_mot:' || sqlerrm || '@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot >'||sqlerrm||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot >'||sqlerrm||'< punto de venta >'||sql_aux||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,25);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
sql_buffer := sql_mensaje;
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
end spinsertadatos_ttp_ate_mot;
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure spinsertadatos_ttp_eje_edo(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date)
Is
sql_formato_fecha varchar2(10) := 'dd-mm-yyyy';
sql_cadena varchar2(1000);
sql_aux varchar2(4);
cursor_id number;
sql_dummy integer;
sql_cve_proceso varchar2(5);
sql_fecha_inf varchar2(10);
sql_codigo varchar2(5);
sql_descrip varchar2(50);
sql_fecha_hoy varchar2(10);
fecha_ini date;
sql_mensaje varchar2(100);
sql_namedir varchar2(60) := 'dir_tt';
sql_namefile_bita varchar2(15) := 'tturno.log';
sql_buffer varchar2(3000);
sql_file_bita utl_file.file_type;
my_exception_bita_audi exception;
sin_conexion exception;
pragma exception_init (sin_conexion, -12514);
partition_key exception;
pragma exception_init (partition_key, -14400);
extend_index exception;
pragma exception_init (extend_index, -01654);
null_value exception;
pragma exception_init (null_value, -01400);
connect_timeout exception;
pragma exception_init (connect_timeout, -12170);
tns_could_not_resolve_connect exception;
pragma exception_init (tns_could_not_resolve_connect, -12154);
tns_receptor exception;
pragma exception_init (tns_receptor, -12541);
begin
sql_file_bita := utl_file.fopen(sql_namedir,sql_namefile_bita,'a');
if not utl_file.is_open(sql_file_bita) then
raise my_exception_bita_audi;
end if;
sql_buffer := 'entrando spinsertadatos_ttp_eje_edo trama: >'||sql_trama||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_aux := substr(sql_trama,1,4);
sql_cve_proceso := substr(sql_trama,5,5);
sql_fecha_inf := substr(sql_trama,10,10);
sql_cadena := 'insert into ttp_eje_edo (select id_oficina, id_eje, evento, fh_eve, id_esc, id_pausa';
sql_cadena := sql_cadena||' from ttp_eje_edo@'||sql_dblink||' where to_char(fh_eve,';
sql_cadena := sql_cadena||''''||sql_formato_fecha||''''||') = ';
sql_cadena := sql_cadena||''''||sql_fecha_inf||''''||' and id_oficina = '''||sql_aux||''')';
cursor_id := dbms_sql.open_cursor;
dbms_sql.parse(cursor_id, sql_cadena, dbms_sql.native);
sql_dummy := dbms_sql.execute(cursor_id);
commit;
sql_buffer := 'inserto ttp_eje_edo sucursal: >'||sql_aux||'< fecha de inf: >'||sql_fecha_inf||'< no proceso: >'||sql_cve_proceso||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
dbms_sql.close_cursor(cursor_id);
sql_mensaje := sql_cve_proceso||sql_aux||'0'||'tt-00000'||'sucursal cargada exitosamente';
utl_file.fclose(sql_file_bita);
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_inicio);
exception
when no_data_found then
raise_application_error( -20319 , '@insercion_tiras.spinsertadatos_ttp_eje_edo: no existen datos a procesar@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: no existen datos a procesar@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when invalid_cursor then
raise_application_error( -20320 , '@insercion_tturno.spinsertadatos_ttp_eje_edo: cursor invalido@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: cursor invalido@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when not_logged_on then
raise_application_error( -20321 , '@insercion_tturno.spinsertadatos_ttp_eje_edo: desconexin o no estß firmado en la base de datos@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when login_denied then
raise_application_error( -20322 , '@insercion_tturno.spinsertadatos_ttp_eje_edo: acceso denegado@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: acceso denegado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when timeout_on_resource then
raise_application_error( -20323 , '@insercion_tturno.spinsertadatos_ttp_eje_edo: se ha agotado el tiempo de espera@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: se ha agotado el tiempo de espera@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when dup_val_on_index then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: se intent insertar un valor duplicado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,45);
sql_mensaje := sql_cve_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when sin_conexion or connect_timeout or tns_could_not_resolve_connect or tns_receptor then
--sql_buffer := 'insercion_tturno.spinsertadatos_ttp_eje_edo: ' || sqlcode || ' descripcion: ' || sqlerrm;
utl_file.fflush(sql_file_bita);
utl_file.put_line(sql_file_bita,'@insercion_tturno.spinsertadatos_ttp_eje_edo: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'<');
utl_file.fflush(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '12514' or sql_codigo = '12170' or
sql_codigo = '12154' or sql_codigo = '12541' then
sql_descrip := sql_codigo||': error al conectarse a la base de datos';
end if;
sql_mensaje := sql_cve_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when partition_key or extend_index or null_value then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
utl_file.put_line(sql_file_bita,'insercion_tturno.spinsertadatos_ttp_ate_mot: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'< error: > '||sqlcode||'< descripcion: >'||sqlerrm||'<');
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '14400' then
sql_descrip := sql_codigo||': error de particion en la base de datos';
elsif sql_codigo = '01654' then
sql_descrip := sql_codigo||': error en indice';
elsif sql_codigo = '01400' then
sql_descrip := sql_codigo||': intento de insercin de un valor nulo';
end if;
sql_mensaje := sql_cve_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when others then
raise_application_error( -20324 , '@insercion_tturno.spinsertadatos_ttp_eje_edo:' || sqlerrm || '@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo >'||sqlerrm||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo >'||sqlerrm||'< punto de venta >'||sql_aux||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,25);
sql_mensaje := sql_cve_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
sql_buffer := sql_mensaje;
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
end spinsertadatos_ttp_eje_edo;
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure spinserta_tt_procesa(sql_trama in varchar2, fecha_inicio date)
Is
sql_proceso...
Valide las claves primarias pero estas no han cambiado, te anexo el proceso que utilizo
procedure spinsertadatos_ttp_eje(sql_dblink in varchar2, sql_trama in varchar2);
procedure spinsertadatos_ttp_ate(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date);
procedure spinsertadatos_ttp_ate_mot(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date);
procedure spinsertadatos_ttp_eje_edo(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date);
procedure spinserta_tt_procesa(sql_trama in varchar2, fecha_inicio date);
end insercion_tturno;
/
create or replace package body admtomtur.insercion_tturno as
procedure spinsertadatos_ttp_eje(sql_dblink in varchar2, sql_trama in varchar2)
is
sql_cadena varchar2(1000);
sql_aux varchar2(4);
cursor_id number;
sql_dummy integer;
sql_proceso varchar2(5);
sql_fecha_inf varchar2(10);
sql_codigo varchar2(5);
sql_descrip varchar2(50);
sql_fecha_hoy varchar2(10);
fecha_ini date;
sql_mensaje varchar2(100);
sql_namedir varchar2(60) := 'dir_tt';
sql_namefile_bita varchar2(15) := 'tturno.log';
sql_buffer varchar2(3000);
sql_file_bita utl_file.file_type;
my_exception_bita_audi exception;
sin_conexion exception;
pragma exception_init (sin_conexion, -12514);
partition_key exception;
pragma exception_init (partition_key, -14400);
extend_index exception;
pragma exception_init (extend_index, -01654);
null_value exception;
pragma exception_init (null_value, -01400);
connect_timeout exception;
pragma exception_init (connect_timeout, -12170);
tns_could_not_resolve_connect exception;
pragma exception_init (tns_could_not_resolve_connect, -12154);
tns_receptor exception;
pragma exception_init (tns_receptor, -12541);
begin
sql_file_bita := utl_file.fopen(sql_namedir,sql_namefile_bita,'a');
if not utl_file.is_open(sql_file_bita) then
raise my_exception_bita_audi;
end if;
sql_buffer := 'entrando spinsertadatos_ttp_eje trama: >'||sql_trama||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_aux := substr(sql_trama,1,4);
sql_proceso := substr(sql_trama,5,5);
sql_fecha_inf := substr(sql_trama,10,10);
sql_cadena := 'insert into ttp_eje (select id_eje, ejecutivo from ttp_eje@'||sql_dblink||' where id_eje not in (select id_eje from ttp_eje))';
cursor_id := dbms_sql.open_cursor;
dbms_sql.parse(cursor_id, sql_cadena, dbms_sql.native);
sql_dummy := dbms_sql.execute(cursor_id);
--commit;
sql_buffer := 'inserto ttp_eje sucursal: >'||sql_aux||'< fecha de inf: >'||sql_fecha_inf||'< no proceso: >'||sql_proceso||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
dbms_sql.close_cursor(cursor_id);
fecha_ini := sysdate;
spinsertadatos_ttp_ate(sql_dblink, sql_trama, fecha_ini);
exception
when no_data_found then
raise_application_error( -20301 , '@insercion_tturno.spinsertadatos_ttp_eje: no existen datos a procesar@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: no existen datos a procesar@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
when invalid_cursor then
raise_application_error( -20302 , '@insercion_tturno.spinsertadatos_ttp_eje: cursor invalido@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: cursor invalido@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when not_logged_on then
raise_application_error( -20303 , '@insercion_tturno.spinsertadatos_ttp_eje: desconexin o no estß firmado en la base de datos@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when login_denied then
raise_application_error( -20304 , '@insercion_tturno.spinsertadatos_ttp_eje: acceso denegado@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
when timeout_on_resource then
raise_application_error( -20305 , '@insercion_tturno.spinsertadatos_ttp_eje: se ha agotado el tiempo de espera@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: se ha agotado el tiempo de espera@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when dup_val_on_index then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje: se intent insertar un valor duplicado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,45);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when sin_conexion or connect_timeout or tns_could_not_resolve_connect or tns_receptor then
--sql_buffer := 'insercion_tturno.spinsertadatos_ttp_eje: ' || sqlcode || ' descripcion: ' || sqlerrm;
utl_file.fflush(sql_file_bita);
utl_file.put_line(sql_file_bita,'@insercion_tturno.spinsertadatos_ttp_eje: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'<');
utl_file.fflush(sql_file_bita);
rollback;
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '12514' or sql_codigo = '12170' or
sql_codigo = '12154' or sql_codigo = '12541' then
sql_descrip := sql_codigo||': error al conectarse a la base de datos';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when partition_key or extend_index or null_value then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
rollback;
utl_file.put_line(sql_file_bita,'insercion_tturno.spinsertadatos_ttp_eje: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'< error: > '||sqlcode||'< descripcion: >'||sqlerrm||'<');
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '14400' then
sql_descrip := sql_codigo||': error de particion en la base de datos';
elsif sql_codigo = '01654' then
sql_descrip := sql_codigo||': error en indice';
elsif sql_codigo = '01400' then
sql_descrip := sql_codigo||': intento de insercin de un valor nulo';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when others then
raise_application_error( -20306 , '@insercion_tturno.spinsertadatos_ttp_eje:' || sqlerrm || '@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje >'||sqlerrm||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje >'||sqlerrm||'< punto de venta >'||sql_aux||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,25);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
sql_buffer := sql_mensaje;
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
end spinsertadatos_ttp_eje;
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure spinsertadatos_ttp_ate(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date)
Is
sql_formato_fecha varchar2(10) := 'dd-mm-yyyy';
sql_cadena varchar2(1000);
sql_aux varchar2(4);
cursor_id number;
sql_dummy integer;
sql_proceso varchar2(5);
sql_fecha_inf varchar2(10);
sql_codigo varchar2(5);
sql_descrip varchar2(50);
sql_fecha_hoy varchar2(10);
fecha_ini date;
sql_mensaje varchar2(100);
sql_namedir varchar2(60) := 'dir_tt';
sql_namefile_bita varchar2(15) := 'tturno.log';
sql_buffer varchar2(3000);
sql_file_bita utl_file.file_type;
my_exception_bita_audi exception;
sin_conexion exception;
pragma exception_init (sin_conexion, -12514);
partition_key exception;
pragma exception_init (partition_key, -14400);
extend_index exception;
pragma exception_init (extend_index, -01654);
null_value exception;
pragma exception_init (null_value, -01400);
connect_timeout exception;
pragma exception_init (connect_timeout, -12170);
tns_could_not_resolve_connect exception;
pragma exception_init (tns_could_not_resolve_connect, -12154);
tns_receptor exception;
pragma exception_init (tns_receptor, -12541);
begin
sql_file_bita := utl_file.fopen(sql_namedir,sql_namefile_bita,'a');
if not utl_file.is_open(sql_file_bita) then
raise my_exception_bita_audi;
end if;
sql_buffer := 'entrando spinsertadatos_ttp_ate trama: >'||sql_trama||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_aux := substr(sql_trama,1,4);
sql_proceso := substr(sql_trama,5,5);
sql_fecha_inf := substr(sql_trama,10,10);
sql_cadena := 'insert into ttp_ate (select id_oficina, id_serie, turno, fh_emi, id_eje, id_seriem, id_esc, turnoo, id_serieo, perdido, valor,';
sql_cadena := sql_cadena||' tpo_esp, tpo_lla, tpo_ate, fh_llama, fh_ateini, fh_atefin, id_cliente, cliente';
sql_cadena := sql_cadena||' from ttp_ate@'||sql_dblink||' where to_char(fh_emi,';
sql_cadena := sql_cadena||''''||sql_formato_fecha||''''||') = ';
sql_cadena := sql_cadena||''''||sql_fecha_inf||''''||' and id_oficina = '''||sql_aux||''')';
cursor_id := dbms_sql.open_cursor;
dbms_sql.parse(cursor_id, sql_cadena, dbms_sql.native);
sql_dummy := dbms_sql.execute(cursor_id);
--commit;
sql_buffer := 'inserto ttp_ate informacin faltante';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
dbms_sql.close_cursor(cursor_id);
fecha_ini := sysdate;
spinsertadatos_ttp_ate_mot(sql_dblink, sql_trama, fecha_ini);
exception
when no_data_found then
raise_application_error( -20307 , '@insercion_tturno.spinsertadatos_ttp_ate: no existen datos a procesar@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: no existen datos a procesar@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
when invalid_cursor then
raise_application_error( -20308 , '@insercion_tturno.spinsertadatos_ttp_ate: cursor invalido@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: cursor invalido@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when not_logged_on then
raise_application_error( -20309 , '@insercion_tturno.spinsertadatos_ttp_ate: desconexin o no estß firmado en la base de datos@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when login_denied then
raise_application_error( -20310 , '@insercion_tturno.spinsertadatos_ttp_ate: acceso denegado@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
when timeout_on_resource then
raise_application_error( -20311 , '@insercion_tturno.spinsertadatos_ttp_ate: se ha agotado el tiempo de espera@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: se ha agotado el tiempo de espera@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
when dup_val_on_index then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate: se intent insertar un valor duplicado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,45);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when sin_conexion or connect_timeout or tns_could_not_resolve_connect or tns_receptor then
--sql_buffer := 'insercion_tturno.spinsertadatos_ttp_ate: ' || sqlcode || ' descripcion: ' || sqlerrm;
utl_file.fflush(sql_file_bita);
utl_file.put_line(sql_file_bita,'@insercion_tturno.spinsertadatos_ttp_ate: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'<');
utl_file.fflush(sql_file_bita);
rollback;
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '12514' or sql_codigo = '12170' or
sql_codigo = '12154' or sql_codigo = '12541' then
sql_descrip := sql_codigo||': error al conectarse a la base de datos';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when partition_key or extend_index or null_value then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
rollback;
utl_file.put_line(sql_file_bita,'insercion_tturno.spinsertadatos_ttp_ate: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'< error: > '||sqlcode||'< descripcion: >'||sqlerrm||'<');
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '14400' then
sql_descrip := sql_codigo||': error de particion en la base de datos';
elsif sql_codigo = '01654' then
sql_descrip := sql_codigo||': error en indice';
elsif sql_codigo = '01400' then
sql_descrip := sql_codigo||': intento de insercin de un valor nulo';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when others then
raise_application_error( -20312 , '@insercion_tturno.spinsertadatos_ttp_ate:' || sqlerrm || '@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate >'||sqlerrm||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate >'||sqlerrm||'< punto de venta >'||sql_aux||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,25);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
sql_buffer := sql_mensaje;
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
end spinsertadatos_ttp_ate;
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure spinsertadatos_ttp_ate_mot(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date)
Is
sql_formato_fecha varchar2(10) := 'dd-mm-yyyy';
sql_cadena varchar2(1000);
sql_aux varchar2(4);
cursor_id number;
sql_dummy integer;
sql_proceso varchar2(5);
sql_fecha_inf varchar2(10);
sql_codigo varchar2(5);
sql_descrip varchar2(50);
sql_fecha_hoy varchar2(10);
fecha_ini date;
sql_mensaje varchar2(100);
sql_namedir varchar2(60) := 'dir_tt';
sql_namefile_bita varchar2(15) := 'tturno.log';
sql_buffer varchar2(3000);
sql_file_bita utl_file.file_type;
my_exception_bita_audi exception;
sin_conexion exception;
pragma exception_init (sin_conexion, -12514);
partition_key exception;
pragma exception_init (partition_key, -14400);
extend_index exception;
pragma exception_init (extend_index, -01654);
null_value exception;
pragma exception_init (null_value, -01400);
connect_timeout exception;
pragma exception_init (connect_timeout, -12170);
tns_could_not_resolve_connect exception;
pragma exception_init (tns_could_not_resolve_connect, -12154);
tns_receptor exception;
pragma exception_init (tns_receptor, -12541);
begin
sql_file_bita := utl_file.fopen(sql_namedir,sql_namefile_bita,'a');
if not utl_file.is_open(sql_file_bita) then
raise my_exception_bita_audi;
end if;
sql_buffer := 'entrando spinsertadatos_ttp_ate_mot trama: >'||sql_trama||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_aux := substr(sql_trama,1,4);
sql_proceso := substr(sql_trama,5,5);
sql_fecha_inf := substr(sql_trama,10,10);
sql_cadena := 'insert into ttp_ate_mot (select id_oficina, id_serie, turno, fh_mot, id_motivo, cantidad';
sql_cadena := sql_cadena||' from ttp_ate_mot@'||sql_dblink||' where to_char(fh_mot,';
sql_cadena := sql_cadena||''''||sql_formato_fecha||''''||') = ';
sql_cadena := sql_cadena||''''||sql_fecha_inf||''''||' and id_oficina = '''||sql_aux||''')';
cursor_id := dbms_sql.open_cursor;
dbms_sql.parse(cursor_id, sql_cadena, dbms_sql.native);
sql_dummy := dbms_sql.execute(cursor_id);
--commit;
sql_buffer := 'inserto ttp_ate_mot informacin faltante';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
dbms_sql.close_cursor(cursor_id);
fecha_ini := sysdate;
spinsertadatos_ttp_eje_edo(sql_dblink, sql_trama, fecha_ini);
exception
when no_data_found then
raise_application_error( -20313 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: no existen datos a procesar@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: no existen datos a procesar@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when invalid_cursor then
raise_application_error( -20314 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: cursor invalido@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: cursor invalido@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when not_logged_on then
raise_application_error( -20315 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: desconexin o no estß firmado en la base de datos@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when login_denied then
raise_application_error( -20316 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: acceso denegado@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when timeout_on_resource then
raise_application_error( -20317 , '@insercion_tturno.spinsertadatos_ttp_ate_mot: se ha agotado el tiempo de espera@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: se ha agotado el tiempo de espera@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
when dup_val_on_index then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot: se intent insertar un valor duplicado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,45);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when sin_conexion or connect_timeout or tns_could_not_resolve_connect or tns_receptor then
--sql_buffer := 'insercion_tturno.spinsertadatos_ttp_ate_mot: ' || sqlcode || ' descripcion: ' || sqlerrm;
utl_file.fflush(sql_file_bita);
utl_file.put_line(sql_file_bita,'@insercion_tturno.spinsertadatos_ttp_ate_mot: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'<');
utl_file.fflush(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '12514' or sql_codigo = '12170' or
sql_codigo = '12154' or sql_codigo = '12541' then
sql_descrip := sql_codigo||': error al conectarse a la base de datos';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when partition_key or extend_index or null_value then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
utl_file.put_line(sql_file_bita,'insercion_tturno.spinsertadatos_ttp_ate_mot: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'< error: > '||sqlcode||'< descripcion: >'||sqlerrm||'<');
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '14400' then
sql_descrip := sql_codigo||': error de particion en la base de datos';
elsif sql_codigo = '01654' then
sql_descrip := sql_codigo||': error en indice';
elsif sql_codigo = '01400' then
sql_descrip := sql_codigo||': intento de insercin de un valor nulo';
end if;
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when others then
raise_application_error( -20318 , '@insercion_tturno.spinsertadatos_ttp_ate_mot:' || sqlerrm || '@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot >'||sqlerrm||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate(sql_aux, sql_fecha_inf);
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_ate_mot >'||sqlerrm||'< punto de venta >'||sql_aux||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,25);
sql_mensaje := sql_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
sql_buffer := sql_mensaje;
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
end spinsertadatos_ttp_ate_mot;
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure spinsertadatos_ttp_eje_edo(sql_dblink in varchar2, sql_trama in varchar2, fecha_inicio date)
Is
sql_formato_fecha varchar2(10) := 'dd-mm-yyyy';
sql_cadena varchar2(1000);
sql_aux varchar2(4);
cursor_id number;
sql_dummy integer;
sql_cve_proceso varchar2(5);
sql_fecha_inf varchar2(10);
sql_codigo varchar2(5);
sql_descrip varchar2(50);
sql_fecha_hoy varchar2(10);
fecha_ini date;
sql_mensaje varchar2(100);
sql_namedir varchar2(60) := 'dir_tt';
sql_namefile_bita varchar2(15) := 'tturno.log';
sql_buffer varchar2(3000);
sql_file_bita utl_file.file_type;
my_exception_bita_audi exception;
sin_conexion exception;
pragma exception_init (sin_conexion, -12514);
partition_key exception;
pragma exception_init (partition_key, -14400);
extend_index exception;
pragma exception_init (extend_index, -01654);
null_value exception;
pragma exception_init (null_value, -01400);
connect_timeout exception;
pragma exception_init (connect_timeout, -12170);
tns_could_not_resolve_connect exception;
pragma exception_init (tns_could_not_resolve_connect, -12154);
tns_receptor exception;
pragma exception_init (tns_receptor, -12541);
begin
sql_file_bita := utl_file.fopen(sql_namedir,sql_namefile_bita,'a');
if not utl_file.is_open(sql_file_bita) then
raise my_exception_bita_audi;
end if;
sql_buffer := 'entrando spinsertadatos_ttp_eje_edo trama: >'||sql_trama||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_aux := substr(sql_trama,1,4);
sql_cve_proceso := substr(sql_trama,5,5);
sql_fecha_inf := substr(sql_trama,10,10);
sql_cadena := 'insert into ttp_eje_edo (select id_oficina, id_eje, evento, fh_eve, id_esc, id_pausa';
sql_cadena := sql_cadena||' from ttp_eje_edo@'||sql_dblink||' where to_char(fh_eve,';
sql_cadena := sql_cadena||''''||sql_formato_fecha||''''||') = ';
sql_cadena := sql_cadena||''''||sql_fecha_inf||''''||' and id_oficina = '''||sql_aux||''')';
cursor_id := dbms_sql.open_cursor;
dbms_sql.parse(cursor_id, sql_cadena, dbms_sql.native);
sql_dummy := dbms_sql.execute(cursor_id);
commit;
sql_buffer := 'inserto ttp_eje_edo sucursal: >'||sql_aux||'< fecha de inf: >'||sql_fecha_inf||'< no proceso: >'||sql_cve_proceso||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
dbms_sql.close_cursor(cursor_id);
sql_mensaje := sql_cve_proceso||sql_aux||'0'||'tt-00000'||'sucursal cargada exitosamente';
utl_file.fclose(sql_file_bita);
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_inicio);
exception
when no_data_found then
raise_application_error( -20319 , '@insercion_tiras.spinsertadatos_ttp_eje_edo: no existen datos a procesar@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: no existen datos a procesar@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when invalid_cursor then
raise_application_error( -20320 , '@insercion_tturno.spinsertadatos_ttp_eje_edo: cursor invalido@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: cursor invalido@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when not_logged_on then
raise_application_error( -20321 , '@insercion_tturno.spinsertadatos_ttp_eje_edo: desconexin o no estß firmado en la base de datos@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: desconexin o no estß firmado en la base de datos@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when login_denied then
raise_application_error( -20322 , '@insercion_tturno.spinsertadatos_ttp_eje_edo: acceso denegado@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: acceso denegado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when timeout_on_resource then
raise_application_error( -20323 , '@insercion_tturno.spinsertadatos_ttp_eje_edo: se ha agotado el tiempo de espera@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: se ha agotado el tiempo de espera@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
when dup_val_on_index then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo: se intent insertar un valor duplicado@ >'||sqlcode||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,45);
sql_mensaje := sql_cve_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when sin_conexion or connect_timeout or tns_could_not_resolve_connect or tns_receptor then
--sql_buffer := 'insercion_tturno.spinsertadatos_ttp_eje_edo: ' || sqlcode || ' descripcion: ' || sqlerrm;
utl_file.fflush(sql_file_bita);
utl_file.put_line(sql_file_bita,'@insercion_tturno.spinsertadatos_ttp_eje_edo: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'<');
utl_file.fflush(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '12514' or sql_codigo = '12170' or
sql_codigo = '12154' or sql_codigo = '12541' then
sql_descrip := sql_codigo||': error al conectarse a la base de datos';
end if;
sql_mensaje := sql_cve_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when partition_key or extend_index or null_value then
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
utl_file.put_line(sql_file_bita,'insercion_tturno.spinsertadatos_ttp_ate_mot: detectada como contingente: >'||sql_aux||'< dblink: >'||sql_dblink||'< error: > '||sqlcode||'< descripcion: >'||sqlerrm||'<');
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
if sql_codigo = '14400' then
sql_descrip := sql_codigo||': error de particion en la base de datos';
elsif sql_codigo = '01654' then
sql_descrip := sql_codigo||': error en indice';
elsif sql_codigo = '01400' then
sql_descrip := sql_codigo||': intento de insercin de un valor nulo';
end if;
sql_mensaje := sql_cve_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
when others then
raise_application_error( -20324 , '@insercion_tturno.spinsertadatos_ttp_eje_edo:' || sqlerrm || '@' );
if dbms_sql.is_open(cursor_id) then
dbms_sql.close_cursor(cursor_id);
end if;
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo >'||sqlerrm||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
rollback;
eliminacion_tturno.spelimina_ttp_ate_mot(sql_aux, sql_fecha_inf);
sql_buffer := '@insercion_tturno.spinsertadatos_ttp_eje_edo >'||sqlerrm||'< punto de venta >'||sql_aux||'<';
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
sql_codigo := substr(sqlerrm,5,5);
sql_descrip := sql_codigo||substr(sqlerrm,10,25);
sql_mensaje := sql_cve_proceso||sql_aux||'1'||'tt-'||sql_codigo||sql_descrip;
sql_buffer := sql_mensaje;
utl_file.put_line(sql_file_bita,sql_buffer);
utl_file.fflush(sql_file_bita);
utl_file.fclose(sql_file_bita);
fecha_ini := sysdate;
insercion_tturno.spinserta_tt_procesa(sql_mensaje, fecha_ini);
sql_fecha_hoy := to_char(sysdate,'dd-mm-yyyy');
sql_mensaje := sql_aux||sql_fecha_inf||sql_fecha_hoy||'000'||rpad(sql_descrip,50,' ')||0;
insercion_succontin.spinsertacon_tt_suc_contin(sql_mensaje);
end spinsertadatos_ttp_eje_edo;
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure spinserta_tt_procesa(sql_trama in varchar2, fecha_inicio date)
Is
sql_proceso...
Mirando tu código no veo que el problema esté en el (aunque si se ve que exige bastante de la conexión que estés utilizando), de otra manera no te habría funcionado antes, pero ahora me dices que el proceso se ejecuta unas veces si y otras no, lo que me hace pensar en el ancho de la banda que estas utilizando, te comento que ese dato es clave, ya que oracle no te va a informar nada por tratarse de una base de datos externa.
Revisa por favor lo siguiente:
1. Ancho de banda
2.Si se ha instalado un firewall que esté demorando el proceso de listener y se cae el servicio de la base de datos.
3.El estado de los paquetes, si de pronto alguno de esos paquetes o una de las vistas si utilizas alguna no esté descompilada
Intenta también borrar el dblink y volverlo a crear, en ocasiones me ha funcionado esto y (eso si... no preguntes porque... los sistemas son misteriosos.. a veces parece que hasta pensaran en nuestra contra...)
Revisa por favor lo siguiente:
1. Ancho de banda
2.Si se ha instalado un firewall que esté demorando el proceso de listener y se cae el servicio de la base de datos.
3.El estado de los paquetes, si de pronto alguno de esos paquetes o una de las vistas si utilizas alguna no esté descompilada
Intenta también borrar el dblink y volverlo a crear, en ocasiones me ha funcionado esto y (eso si... no preguntes porque... los sistemas son misteriosos.. a veces parece que hasta pensaran en nuestra contra...)
- Compartir respuesta
- Anónimo
ahora mismo