In Oracle 10g and 11g, there are two places holding scheduled jobs:
DBA_SCHEDULER_JOBS
DBA_JOBS
Jobs in DBA_SCHEDULER_JOBS are managed by package DBMS_SCHEDULER, while jobs in DBA_JOBS are managed by package DBA_JOBS.
Here is an example on using DBMS_SCHEDULER to schedule a job:
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name=>'FIXED_OBJECTS_STATUS',
job_type=>'PLSQL_BLOCK',
job_action=>'BEGIN DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; DBMS_STATS.GATHER_SCHEMA_STATS(''SYS'');END;',
REPEAT_INTERVAL=>'FREQ=MONTHLY;BYMONTH=1,7;BYDAY=1 SUN;BYHOUR=14;BYMINUTE=16;BYSECOND=0',
ENABLED=>TRUE
);
END;
/
After that, you can see the job:
SQL> SELECT owner, job_name, job_class, enabled, next_run_date
FROM dba_scheduler_jobs WHERE job_name ='FIXED_OBJECTS_STATUS';
And, run it and check the log. View DBA_SCHEDULER_JOB_RUN_DETAILS holds the execution history for jobs in DBA_SCHEDULER_JOBS.
SQL> exec DBMS_SCHEDULER.run_job('FIXED_OBJECTS_STATUS');
SQL> select job_name, actual_start_date, status, job_name
FROM dba_scheduler_job_run_details WHERE job_name = 'FIXED_OBJECTS_STATUS' ;
Below line will disable a job:
SQL> exec dbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');
Recently, a database gave errors in alert log:
Errors in file /u01/app/oracle/admin/dw/bdump/dw_j000_31068352.trc:
ORA-12012: error on auto execute of job 8912
ORA-08103: object no longer exists
I ran query to verify it is a scheduled job and to identify the job name:
SQL> select obj# , object_name FROM sys.scheduler$_job , dba_objects
WHERE obj# = object_id and obj# = 8912;
OBJ# OBJECT_NAME
-------- -----------------
8912 AUTO_SPACE_ADVISOR_JOB
Then I used dbms_scheduler to disable the job.
NOTES:
When I query DBA_SCHEDULER_JOBS using Sql*plus on the database server, I do not get error. But I get error when using Sql*plus on my Windows PC:
SQL> select * from DBA_SCHEDULER_JOBS;
ERROR:
ORA-01882: timezone region %s not found
no rows selected
Check document 414590.1 indicating the DST package on my PC needs an update.
No comments:
Post a Comment