Help: I want to auto schedule a load using file watcher but it runs only once for the first time and after that it is not running at all

Hi All,
I am trying  to execute the below code as provided from one of the blogs. i am able to run the job only once based on a file watcher object(i.e. for very first time) and after that the job is not running at all and if  i schedule the job to run automatically based on interval of 10 or more minutes it is executing properly). Please let me know or guide me if i have missed any step or configuration.that is needed.
Version of Oracle 11.2.0.1.0
OS : Windows 7 Prof
Given all the necessary privileges
BEGIN
  DBMS_SCHEDULER.CREATE_CREDENTIAL(
     credential_name => 'cred',
     username        => 'XXXX',
     password        => 'XXXX');
END;
CREATE TABLE ZZZZ (WHEN timestamp, file_name varchar2(100),
   file_size number, processed char(1));
CREATE OR REPLACE PROCEDURE YYYY
  (payload IN sys.scheduler_filewatcher_result) AS
BEGIN
  INSERT INTO ZZZZ VALUES
     (payload.file_timestamp,
      payload.directory_path || '/' || payload.actual_file_name,
      payload.file_size,
      'N');
END;
BEGIN
  DBMS_SCHEDULER.CREATE_PROGRAM(
    program_name        => 'prog1',
    program_type        => 'stored_procedure',
    program_action      => 'YYYY',
    number_of_arguments => 1,
    enabled             => FALSE);
  DBMS_SCHEDULER.DEFINE_METADATA_ARGUMENT(
    program_name        => 'prog1',
    metadata_attribute  => 'event_message',
    argument_position   => 1);
  DBMS_SCHEDULER.ENABLE('prog1');
END;
BEGIN
  DBMS_SCHEDULER.CREATE_FILE_WATCHER(
    file_watcher_name => 'file_watcher1',
    directory_path    => 'D:\AAAA',
    file_name         => '*.txt',
    credential_name   => 'cred',
    destination       => NULL,
    enabled           => FALSE);
END;
BEGIN
  DBMS_SCHEDULER.CREATE_JOB(
    job_name        => 'job1',
    program_name    => 'prog1',
    queue_spec      => 'file_watcher1',
    auto_drop       => FALSE,
    enabled         => FALSE);
  DBMS_SCHEDULER.SET_ATTRIBUTE('job1','PARALLEL_INSTANCES',TRUE);
END;
EXEC DBMS_SCHEDULER.ENABLE('file_watcher1,job1');
Regards,
kumar.

Please post a copy and paste of a complete run of a test case, similar to what I have shown below.
SCOTT@orcl12c> SELECT banner FROM v$version
  2  /
BANNER
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
PL/SQL Release 12.1.0.1.0 - Production
CORE    12.1.0.1.0    Production
TNS for 64-bit Windows: Version 12.1.0.1.0 - Production
NLSRTL Version 12.1.0.1.0 - Production
5 rows selected.
SCOTT@orcl12c> CONN / AS SYSDBA
Connected.
SYS@orcl12c> -- set file watcher interval to one minute:
SYS@orcl12c> BEGIN
  2    DBMS_SCHEDULER.SET_ATTRIBUTE
  3       ('file_watcher_schedule',
  4        'repeat_interval',
  5        'freq=minutely; interval=1');
  6  END;
  7  /
PL/SQL procedure successfully completed.
SYS@orcl12c> CONNECT scott/tiger
Connected.
SCOTT@orcl12c> BEGIN
  2    -- create credential using operating system user and password (fill in your own):
  3    DBMS_SCHEDULER.CREATE_CREDENTIAL
  4       (credential_name     => 'cred',
  5        username          => '...',
  6        password          => '...');
  7  END;
  8  /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> -- create table to insert results into:
SCOTT@orcl12c> CREATE TABLE ZZZZ
  2    (WHEN      timestamp,
  3      file_name varchar2(100),
  4      file_size number,
  5      processed char(1))
  6  /
Table created.
SCOTT@orcl12c> -- create procedure to insert results:
SCOTT@orcl12c> CREATE OR REPLACE PROCEDURE YYYY
  2    (payload IN sys.scheduler_filewatcher_result)
  3  AS
  4  BEGIN
  5    INSERT INTO ZZZZ VALUES
  6        (payload.file_timestamp,
  7         payload.directory_path || '/' || payload.actual_file_name,
  8         payload.file_size,
  9         'N');
10  END;
11  /
Procedure created.
SCOTT@orcl12c> -- create program, define metadata, and enable:
SCOTT@orcl12c> BEGIN
  2    DBMS_SCHEDULER.CREATE_PROGRAM
  3       (program_name          => 'prog1',
  4        program_type          => 'stored_procedure',
  5        program_action      => 'YYYY',
  6        number_of_arguments => 1,
  7        enabled          => FALSE);
  8    DBMS_SCHEDULER.DEFINE_METADATA_ARGUMENT(
  9       program_name         => 'prog1',
10       metadata_attribute  => 'event_message',
11       argument_position   => 1);
12    DBMS_SCHEDULER.ENABLE ('prog1');
13  END;
14  /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> BEGIN
  2    -- create file watcher:
  3    DBMS_SCHEDULER.CREATE_FILE_WATCHER
  4       (file_watcher_name   => 'file_watcher1',
  5        directory_path      => 'c:\my_oracle_files',
  6        file_name          => 'f*.txt',
  7        credential_name     => 'cred',
  8        destination          => NULL,
  9        enabled          => FALSE);
10  END;
11  /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> BEGIN
  2    -- create job:
  3    DBMS_SCHEDULER.CREATE_JOB
  4       (job_name          => 'job1',
  5        program_name          => 'prog1',
  6        queue_spec          => 'file_watcher1',
  7        auto_drop          => FALSE,
  8        enabled          => FALSE);
  9    -- set attributes:
10    DBMS_SCHEDULER.SET_ATTRIBUTE ('job1', 'PARALLEL_INSTANCES', TRUE);
11  END;
12  /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> -- enable:
SCOTT@orcl12c> EXEC DBMS_SCHEDULER.enable ('file_watcher1, job1');
PL/SQL procedure successfully completed.
SCOTT@orcl12c> -- write file (file must not exist previously):
SCOTT@orcl12c> CREATE OR REPLACE DIRECTORY upncommon_dir AS 'c:\my_oracle_files'
  2  /
Directory created.
SCOTT@orcl12c> declare
  2    filtyp utl_file.file_type;
  3  begin
  4    filtyp := utl_file.fopen ('UPNCOMMON_DIR', 'file1.txt', 'W', NULL);
  5    utl_file.put_line (filtyp, 'File has arrived ' || SYSTIMESTAMP, TRUE);
  6    utl_file.fclose (filtyp);
  7  end;
  8  /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> -- wait long enough (may take more than one minute) for job to run:
SCOTT@orcl12c> EXEC DBMS_LOCK.SLEEP (100)
PL/SQL procedure successfully completed.
SCOTT@orcl12c> -- check for results:
SCOTT@orcl12c> SELECT * FROM zzzz
  2  /
WHEN
FILE_NAME
FILE_SIZE P
22-OCT-13 10.12.28.309000 PM
c:\my_oracle_files/file1.txt
        57 N
1 row selected.
SCOTT@orcl12c> declare
  2    filtyp utl_file.file_type;
  3  begin
  4    filtyp := utl_file.fopen ('UPNCOMMON_DIR', 'file2.txt', 'W', NULL);
  5    utl_file.put_line (filtyp, 'File has arrived ' || SYSTIMESTAMP, TRUE);
  6    utl_file.fclose (filtyp);
  7  end;
  8  /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> -- wait long enough (may take more than one minute) for job to run:
SCOTT@orcl12c> EXEC DBMS_LOCK.SLEEP (100)
PL/SQL procedure successfully completed.
SCOTT@orcl12c> -- check for results:
SCOTT@orcl12c> SELECT * FROM zzzz
  2  /
WHEN
FILE_NAME
FILE_SIZE P
22-OCT-13 10.12.28.309000 PM
c:\my_oracle_files/file1.txt
        57 N
22-OCT-13 10.14.08.580000 PM
c:\my_oracle_files/file2.txt
        57 N
2 rows selected.

Similar Messages

Maybe you are looking for