If you have tons of jobs running with dba_jobs then it is not enough to check dba_jobs for monitoring purpose. you need to add extra spice like client identifier or module for the running part. This way you can have a clear Idea for an active session if it belongs to a job and which job is active at that moment. Also this extra info goes to the ASH views and great for the historical monitoring.
For this purpose I use the following procedure and I call it before every job.
select what from dba_jobs ;
CREATE OR REPLACE PROCEDURE ADMIN.JOB_SET_ID_MODULE
SELECT SYS_CONTEXT (‘USERENV’, ‘BG_JOB_ID’)
SELECT SYS_CONTEXT (‘USERENV’, ‘FG_JOB_ID’)
IF v_bg_job_id IS NOT NULL then
ELSIF v_fg_job_id IS NOT NULL then
EXCEPTION WHEN OTHERS
now we can monitor the running jobs by their module info.
select * from v$session where status = 'ACTIVE' and username is not null and module like 'DB_JOB%';