Oracle - FILE_WATCHER

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 23 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

FILE_WATCHER

Publicado por fbutrons (1 intervención) el 23/07/2019 14:38:02
Buenas tardes,

Estoy intentando hacer una prueba de file_watcher pero cuando ejecuto el job me muestra el siguiente error:

ORA-27473: argument 1 does not exist

La idea es que cuando entre el fichero FRAN.txt inserte en una tabla el valor 1

Los pasos son los siguientes:

1 -
Creo credenciales de usuario con administrador del sistema windows.
2-
1
CREATE TABLE TEST_FILEWATHER(valor number)
3-
1
2
3
4
5
6
7
8
9
BEGIN
    DBMS_SCHEDULER.create_file_watcher(
    file_watcher_name => 'test_file_watcher',
    directory_path    => 'C:\BDU_INPUT',
    file_name         => 'FRAN.dmp',
    credential_name   => 'my_cred_admin',
    destination       => NULL,
    enabled           => FALSE);
END;
4-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BEGIN
    DBMS_SCHEDULER.create_program(
    program_name        => 'file_watcher_test_prog',
    program_type        => 'stored_procedure',
    program_action      => 'file_watcher_test_proc',
    number_of_arguments => 1,
    enabled             => FALSE);
END;
 
BEGIN
  DBMS_SCHEDULER.define_metadata_argument(
    program_name       => 'file_watcher_test_prog',
    metadata_attribute => 'event_message',
    argument_position  => 1);
END;
5-
1
2
3
4
5
6
7
8
create or replace procedure file_watcher_test_proc(p_sfwr sys.scheduler_filewatcher_result)
as
v_sql varchar2(98);
begin
v_sql:='INSERT INTO TEST_FILEWATHER VALUES (1)';
EXECUTE IMMEDIATE V_SQL;
COMMIT;
end;
6-
1
2
3
4
5
6
7
8
9
BEGIN
  DBMS_SCHEDULER.create_job(
    job_name        => 'file_watcher_test_job',
    program_name    => 'file_watcher_test_prog',
    event_condition => NULL,
    queue_spec      => 'test_file_watcher',
    auto_drop       => FALSE,
    enabled         => FALSE);
END;
7-
1
2
3
BEGIN
  DBMS_SCHEDULER.set_attribute('file_watcher_test_job','parallel_instances',TRUE);
END;
8-
1
2
3
EXEC DBMS_SCHEDULER.enable('test_file_watcher');
EXEC DBMS_SCHEDULER.enable('file_watcher_test_prog');
EXEC DBMS_SCHEDULER.enable('file_watcher_test_job');
9-
1
2
3
4
5
BEGIN
  DBMS_SCHEDULER.RUN_JOB(
    JOB_NAME            => 'file_watcher_test_job',
    USE_CURRENT_SESSION => FALSE);
END;

Muchas gracias por vuestra ayuda
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: 704
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

FILE_WATCHER

Publicado por Rafael (328 intervenciones) el 12/08/2019 12:33:18
Hola:

La logica aqui ....

Tu has creado un JOB... que es un FILEWATCHER....

1. En tu descripcion dice que esperas el fichero "FRAN.txt" en tu codigo 'FRAN.dmp' esto es muy importante por que si la extension no es la misma ... algo fallara.

Ahora para probarlo ... crea un fichero con el nombre 'FRAN.dmp' despues de poner ENABLE ... es decir tu paso 9 deberia ser poner el fichero en la ruta 'C:\BDU_INPUT', si no le falta el argumento sys.scheduler_filewatcher_result a tu procedimiento...

Saludos
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