453.What is the danger associated with stopping a running job by using the STOP_JOB procedure?
A. The job will need to be reenabled before it will execute again.
B. The job may hold locks on objects referenced within it.
C. All jobs within the job group will also be stopped.
D. The job may leave data in an inconsistent state.
E. There is no danger in using the STOP_JOB procedure.
Answer: D
答案解析:
参考:http://docs.oracle.com/cd/E11882_01/server.112/e25494/scheduse.htm#ADMIN12399
Stopping Jobs
You stop one or more running jobs using the STOP_JOB
procedure or Enterprise Manager. STOP_JOB
accepts a comma-delimited list of jobs, job classes, and job destination IDs. A job
destination ID is a number, assigned by the Scheduler, that represents a unique combination of a job, a credential, and a destination. It serves as a convenient method for identifying a particular child job of a multiple-destination job and for stopping just
that child. You obtain the job destination ID for a child job from the *_SCHEDULER_JOB_DESTS
views.
If a job class is supplied, all running jobs in the job class are stopped. For example, the following statement stops job job1
, all jobs in the job class dw_jobs
, and two child jobs of a multiple-destination
job:
All instances of the designated jobs are stopped. After stopping a job, the state of a one-time job is set to STOPPED
, and the state of a repeating job is set toSCHEDULED
(because the next run of the
job is scheduled). In addition, an entry is made in the job log with OPERATION
set to 'STOPPED
', and ADDITIONAL_INFO
set to 'REASON="Stop job called by user:
username"
'.
By default, the Scheduler tries to gracefully stop a job using an interrupt mechanism. This method gives control back to the slave process, which can collect statistics of the job run. If the force
option is set to TRUE
,
the job is abruptly terminated and certain run-time statistics might not be available for the job run.
Stopping a job that is running a chain automatically stops all running steps (by calling STOP_JOB
with the force
option set to TRUE
on each step).
You can use the commit_semantics
argument of STOP_JOB
to control the outcome if multiple jobs are specified and errors occur when trying to stop one or more jobs. If you set this argument to ABSORB_ERRORS
,
the procedure may be able to continue after encountering an error and attempt to stop the remaining jobs. If the procedure indicates that errors occurred, you can query the view SCHEDULER_BATCH_ERRORS
to determine the nature of the errors. See "Dropping
Jobs" for a more detailed discussion of commit semantics.
See Oracle Database PL/SQL Packages and Types Reference for detailed information about the STOP_JOB
procedure.
Caution:
When a job is stopped, only the current transaction is rolled back. This can cause data inconsistency.