Oracle8i Supplied PL/SQL Packages Reference Release 2 (8.1.6) Part Number A76936-01 |
|
DBMS_JOB, 2 of 2
Subprogram | Description |
---|---|
SUBMIT Procedure |
Submits a new job to the job queue. |
REMOVE Procedure |
Removes specified job from the job queue. |
CHANGE Procedure |
Alters any of the user-definable parameters associated with a job. |
WHAT Procedure |
Alters the job description for a specified job. |
NEXT_DATE Procedure |
Alters the next execution time for a specified job. |
INSTANCE Procedure |
Assigns a job to be run by a instance. |
INTERVAL Procedure |
Alters the interval between executions for a specified job. |
BROKEN Procedure |
Disables job execution. |
RUN Procedure |
Forces a specified job to run. |
USER_EXPORT Procedure |
Recreates a given job for export. |
USER_EXPORT Procedure |
Recreates a given job for export with instance affinity. |
This procedure submits a new job. It chooses the job from the sequence sys
.jobseq
.
DBMS_JOB.SUBMIT ( job OUT BINARY_INTEGER, what IN VARCHAR2, next_date IN DATE DEFAULT sysdate, interval IN VARCHAR2 DEFAULT 'null', no_parse IN BOOLEAN DEFAULT FALSE, instance IN BINARY_INTEGER DEFAULT any_instance, force IN BOOLEAN DEFAULT FALSE);
The parameters instance
and force
are added for job queue affinity. Job queue affinity gives users the ability to indicate whether a particular instance or any instance can run a submitted job.
This submits a new job to the job queue. The job calls the procedure DBMS_DDL
.ANALYZE_OBJECT
to generate optimizer statistics for the table DQUON
.ACCOUNTS
. The statistics are based on a sample of half the rows of the ACCOUNTS
table. The job is run every 24 hours:
VARIABLE jobno number; BEGIN DBMS_JOB.SUBMIT(:jobno, 'dbms_ddl.analyze_object(''TABLE'', ''DQUON'', ''ACCOUNTS'', ''ESTIMATE'', NULL, 50);' SYSDATE, 'SYSDATE + 1'); commit; END; / Statement processed. print jobno JOBNO ---------- 14144
This procedure removes an existing job from the job queue. This currently does not stop a running job.
DBMS_JOB.REMOVE ( job IN BINARY_INTEGER );
Parameter | Description |
---|---|
job |
Number of the job being run. |
EXECUTE DBMS_JOB.REMOVE(14144);
This procedure changes any of the user-settable fields in a job.
DBMS_JOB.CHANGE ( job IN BINARY_INTEGER, what IN VARCHAR2, next_date IN DATE, interval IN VARCHAR2, instance IN BINARY_INTEGER DEFAULT NULL, force IN BOOLEAN DEFAULT FALSE);
The parameters instance
and force
are added for job queue affinity. Job queue affinity gives users the ability to indicate whether a particular instance or any instance can run a submitted job.
If the parameters what
, next_date
, or interval
are NULL
, then leave that value as it is.
EXECUTE DBMS_JOB.CHANGE(14144, null, null, 'sysdate+3');
This procedure changes what an existing job does, and replaces its environment.
DBMS_JOB.WHAT ( job IN BINARY_INTEGER, what IN VARCHAR2);
Parameter | Description |
---|---|
job |
Number of the job being run. |
what |
PL/SQL procedure to run. |
Some legal values of what
(assuming the routines exist) are:
'myproc( ''10-JAN-82'', next_date, broken);'
'scott.emppackage.give_raise( ''JENKINS'', 30000.00);'
'dbms_job.remove(job);'
This procedure changes when an existing job next runs.
DBMS_JOB.NEXT_DATE ( job IN BINARY_INTEGER, next_date IN DATE);
Parameter | Description |
---|---|
job |
Number of the job being run. |
next_date |
Date of the next refresh: it is when the job will be automatically run, assuming there are background processes attempting to run it. |
This procedure changes job instance affinity.
DBMS_JOB.INSTANCE ( job IN BINARY_INTEGER, instance IN BINARY_INTEGER, force IN BOOLEAN DEFAULT FALSE);
This procedure changes how often a job runs.
DBMS_JOB.INTERVAL ( job IN BINARY_INTEGER, interval IN VARCHAR2);
Parameter | Description |
---|---|
job |
Number of the job being run. |
interval |
Date function, evaluated immediately before the job starts running. |
If the job completes successfully, then this new date is placed in next_date
. interval
is evaluated by plugging it into the statement select interval
into next_date
from dual;
The interval
parameter must evaluate to a time in the future. Legal intervals include:
|
Run once a week. |
|
Run once every Tuesday. |
|
Run only once. |
If interval
evaluates to NULL
and if a job completes successfully, then the job is automatically deleted from the queue.
This procedure sets the broken flag. Broken jobs are never run.
DBMS_JOB.BROKEN ( job IN BINARY_INTEGER, broken IN BOOLEAN, next_date IN DATE DEFAULT SYSDATE);
Parameter | Description |
---|---|
job |
Number of the job being run. |
broken |
Job broken: |
next_data |
Date of the next refresh. |
This procedure runs job JOB
now. It runs it even if it is broken.
Running the job recomputes next_date
. See view user_jobs
.
DBMS_JOB.RUN ( job IN BINARY_INTEGER, force IN BOOLEAN DEFAULT FALSE);
EXECUTE DBMS_JOB.RUN(14144);
An exception is raised if force
is FALSE
, and if the connected instance is the wrong one.
This procedure produces the text of a call to recreate the given job.
DBMS_JOB.USER_EXPORT ( job IN BINARY_INTEGER, mycall IN OUT VARCHAR2);
Parameter | Description |
---|---|
job |
Number of the job being run. |
mycall |
Text of a call to recreate the given job. |
This procedure alters instance affinity (8i and above) and preserves the compatibility.
DBMS_JOB.USER_EXPORT ( job IN BINARY_INTEGER, mycall IN OUT VARCHAR2, myinst IN OUT VARCHAR2);
Parameter | Description |
---|---|
job |
Number of the job being run. |
mycall |
Text of a call to recreate a given job. |
myinst |
Text of a call to alter instance affinity. |
For this example, a constant in DBMS_JOB indicates "no mapping" among jobs and instances, that is, jobs can be executed by any instance.
To submit a job to the job queue, use the following syntax:
DBMS_JOB.SUBMIT( JOB OUT BINARY_INTEGER, WHAT IN VARCHAR2, NEXT_DATE IN DATE DEFAULTSYSDATE, INTERVAL IN VARCHAR2 DEFAULT 'NULL', NO_PARSE IN BOOLEAN DEFAULT FALSE, INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE, FORCE IN BOOLEAN DEFAULT FALSE)
Use the parameters INSTANCE and FORCE to control job and instance affinity. The default value of INSTANCE is 0 (zero) to indicate that any instance can execute the job. To run the job on a certain instance, specify the INSTANCE value. Oracle displays error ORA-23319 if the INSTANCE value is a negative number or NULL.
The FORCE parameter defaults to FALSE. If force is TRUE, any positive integer is acceptable as the job instance. If FORCE is FALSE, the specified instance must be running, or Oracle displays error number ORA-23428.
To assign a particular instance to execute a job, use the following syntax:
DBMS_JOB.INSTANCE( JOB IN BINARY_INTEGER, INSTANCE IN BINARY_INTEGER, FORCE IN BOOLEAN DEFAULT FALSE)
The FORCE parameter in this example defaults to FALSE. If the instance value is 0 (zero), job affinity is altered and any available instance can execute the job despite the value of force. If the INSTANCE value is positive and the FORCE parameter is FALSE, job affinity is altered only if the specified instance is running, or Oracle displays error ORA-23428.
If the FORCE parameter is TRUE, any positive integer is acceptable as the job instance and the job affinity is altered. Oracle displays error ORA-23319 if the INSTANCE value is negative or NULL.
To alter user-definable parameters associated with a job, use the following syntax:
DBMS_JOB.CHANGE( JOB IN BINARY_INTEGER, WHAT IN VARCHAR2 DEFAULT NULL, NEXT_DATE IN DATE DEFAULT NULL, INTERVAL IN VARCHAR2 DEFAULT NULL, INSTANCE IN BINARY_INTEGER DEFAULT NULL, FORCE IN BOOLEAN DEFAULT FALSE )
Two parameters, INSTANCE and FORCE, appear in this example. The default value of INSTANCE is NULL indicating that job affinity will not change.
The default value of FORCE is FALSE. Oracle displays error ORA-23428 if the specified instance is not running and error ORA-23319 if the INSTANCE number is negative.
The FORCE parameter for DBMS_JOB.RUN defaults to FALSE. If force is TRUE, instance affinity is irrelevant for running jobs in the foreground process. If force is FALSE, the job can run in the foreground only in the specified instance. Oracle displays error ORA-23428 if force is FALSE and the connected instance is the incorrect instance.
DBMS_JOB.RUN( JOB IN BINARY_INTEGER, FORCE IN BOOLEAN DEFAULT FALSE)
See Also:
For more information about Oracle Parallel Server, please refer to Oracle8i Parallel Server Concepts and Oracle8i Parallel Server Administration, Deployment, and Performance. |
|
![]() Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
|