lavori pianificati simultanei e ora-27477


0

Necessità: fare in modo che Oracle avvii uno script di shell che esegue l'elaborazione su tabelle e dati nel database Oracle. Lo script è istanziato da attività specifica dei client Web.

Problema: i client Web istanzeranno questo lavoro contemporaneamente. Per eseguire script di shell da Oracle, è necessario farlo utilizzando lo scheduler Oracle. Questo lavoro è impostato per l'esecuzione immediata da Oracle. Quello che vedo nella documentazione ORA-27477 è che Oracle non consente l'esecuzione simultanea di lavori con lo stesso nome.

Contesto: dobbiamo eseguire questo particolare processo di elaborazione dalla shell perché utilizza C per eseguire il lavoro pesante. Il porting di quel codice su PL / SQL non è un'opzione. Anche qui c'è un sacco di codice legacy che mi rende triste, ma questa è la vita.

Risposte:


0

È possibile creare un nuovo lavoro per ogni esecuzione oppure è possibile copiare un lavoro esistente con DBMS_SCHEDULER.COPY_JOB. In entrambi i casi, è possibile utilizzare il DBMS_SCHEDULER.GENERATE_JOB_NAMEper generare nomi univoci per i lavori.


Non sapevo di questa funzione di generazione del nome, che sembra promettente. Dopo aver creato e utilizzato il lavoro, abbandonare il lavoro sarebbe il metodo corretto per evitare che migliaia di lavori con nomi univoci vengano raccolti nel tempo?
mlehmeher,

Non è necessario eliminare manualmente i lavori. È possibile impostare l' auto_dropattributo su TRUE durante la creazione del lavoro, quindi il lavoro verrà eliminato automaticamente una volta completato.
Balazs Papp,

Tutto questo funziona. Ottima informazione Il prossimo passo sarebbe passare il nome generato al programma target. C'è un modo per farlo? Sarebbe utile poterlo passare allo script del sistema operativo per evitare collisioni quando sono in esecuzione più lavori contemporaneamente.
mlehmeher,

Dai un'occhiata a DBMS_SCHEDULER.CREATE_JOB( number_of_arguments => ..., ...)e DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE.
Balazs Papp,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.