db is 12.1.0.2, Toad 12.9.0.71 x64, Win 7 Pro (all 64 bit)
Query:
SELECT /*+ NO_CPU_COSTING */
LISTAGG('Invalid DB job: ' || job.job_name || '; DB=FMS; SCHEMA=' || rd.OWNER || '; WHAT=' || job.JOB_ACTION || '; (failures=' || TO_CHAR(job.failure_count) || ', broken=' || DECODE(job.state, 'BROKEN', 'Y', 'N') || ')' || CHR(13) || CHR(10)) WITHIN GROUP (ORDER BY job.job_name) alarm
FROM sys.user_schedul_job_run_details_x rd,
sys.user_scheduler_jobs_x job
WHERE 1 = 1
AND job.job_name = rd.JOB_NAME
AND rd.STATUS <> 'SUCCEEDED'
AND rd.LOG_ID = (SELECT MAX(log_id)
FROM user_scheduler_job_run_details
WHERE job.job_name = job_name)
AND (0 < job.failure_count - UID * 0
AND 'DISABLED' <> job.state
OR 'BROKEN' = job.state);
11:44:09 Q383211@FMST>explain plan for
11:44:14 2 SELECT /*+ NO_CPU_COSTING */
11:44:16 3 LISTAGG('Invalid DB job: ' || job.job_name || '; DB=FMS; SCHEMA=' || rd.OWNER || '; WHAT=' || job.JOB_ACTION || '; (failures=' || TO_CHAR(job.failure_count) || ', broken=' || DECODE(job.state, 'BROKEN', 'Y', 'N') || ')' || CHR(13) || CHR(10)) WITHIN GROUP (ORDER BY job.job_name) alarm
11:44:16 4 FROM sys.user_schedul_job_run_details_x rd,
11:44:16 5 sys.user_scheduler_jobs_x job
11:44:16 6 WHERE 1 = 1
11:44:16 7 AND job.job_name = rd.JOB_NAME
11:44:16 8 AND rd.STATUS <> 'SUCCEEDED'
11:44:16 9 AND rd.LOG_ID = (SELECT MAX(log_id)
11:44:16 10 FROM user_scheduler_job_run_details
11:44:16 11 WHERE job.job_name = job_name)
11:44:16 12 AND (0 < job.failure_count - UID * 0
11:44:16 13 AND 'DISABLED' <> job.state
11:44:16 14 OR 'BROKEN' = job.state);
Explained.
Elapsed: 00:00:00.32
11:44:18 Q383211@FMST>SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST'));
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 14dvpmg2f3bzt, child number 0
explain plan for SELECT /*+ NO_CPU_COSTING */ LISTAGG('Invalid
DB job: ' || job.job_name || '; DB=FMS; SCHEMA=' || rd.OWNER || ';
WHAT=' || job.JOB_ACTION || '; (failures=' ||
TO_CHAR(job.failure_count) || ', broken=' || DECODE(job.state,
'BROKEN', 'Y', 'N') || ')' || CHR(13) || CHR(10)) WITHIN GROUP (ORDER
BY job.job_name) alarm FROM sys.user_schedul_job_run_details_x rd,
sys.user_scheduler_jobs_x job WHERE 1 = 1 AND job.job_name =
rd.JOB_NAME AND rd.STATUS <> 'SUCCEEDED' AND rd.LOG_ID = (SELECT
MAX(log_id) FROM user_scheduler_job_run_details
WHERE job.job_name = job_name) AND (0 <
job.failure_count - UID * 0 AND 'DISABLED' <> job.state
OR 'BROKEN' = job.state)
NOTE: cannot fetch plan for SQL_ID: 14dvpmg2f3bzt, CHILD_NUMBER: 0
Please verify value of SQL_ID and CHILD_NUMBER;
It could also be that the plan is no longer in cursor cache (check v$sql_plan)
19 rows selected.
Elapsed: 00:00:00.12
11:44:54 Q383211@FMST>
Where:
SET DEFINE OFF;
PROMPT View USER_SCHEDUL_JOB_RUN_DETAILS_X;
--
-- USER_SCHEDUL_JOB_RUN_DETAILS_X (View)
--
CREATE OR REPLACE FORCE VIEW SYS.USER_SCHEDUL_JOB_RUN_DETAILS_X
(
LOG_ID,
LOG_DATE,
OWNER,
JOB_NAME,
JOB_SUBNAME,
STATUS,
ERROR#,
REQ_START_DATE,
ACTUAL_START_DATE,
RUN_DURATION,
INSTANCE_ID,
SESSION_ID,
SLAVE_PID,
CPU_USED,
CREDENTIAL_OWNER,
CREDENTIAL_NAME,
DESTINATION_OWNER,
DESTINATION,
ADDITIONAL_INFO,
ERRORS,
OUTPUT,
BINARY_ERRORS,
BINARY_OUTPUT
)
BEQUEATH DEFINER
AS
SELECT "LOG_ID",
"LOG_DATE",
"OWNER",
"JOB_NAME",
"JOB_SUBNAME",
"STATUS",
"ERROR#",
"REQ_START_DATE",
"ACTUAL_START_DATE",
"RUN_DURATION",
"INSTANCE_ID",
"SESSION_ID",
"SLAVE_PID",
"CPU_USED",
"CREDENTIAL_OWNER",
"CREDENTIAL_NAME",
"DESTINATION_OWNER",
"DESTINATION",
"ADDITIONAL_INFO",
"ERRORS",
"OUTPUT",
"BINARY_ERRORS",
"BINARY_OUTPUT"
FROM dba_scheduler_job_run_details
WHERE OWNER = 'A1_FAS'
/
Prompt Grants on VIEW USER_SCHEDUL_JOB_RUN_DETAILS_X TO A1_FAS to A1_FAS;
GRANT SELECT ON SYS.USER_SCHEDUL_JOB_RUN_DETAILS_X TO A1_FAS
/
and
CREATE OR REPLACE FORCE VIEW SYS.USER_SCHEDULER_JOBS_X
(
OWNER,
JOB_NAME,
JOB_SUBNAME,
JOB_STYLE,
JOB_CREATOR,
CLIENT_ID,
GLOBAL_UID,
PROGRAM_OWNER,
PROGRAM_NAME,
JOB_TYPE,
JOB_ACTION,
NUMBER_OF_ARGUMENTS,
SCHEDULE_OWNER,
SCHEDULE_NAME,
SCHEDULE_TYPE,
START_DATE,
REPEAT_INTERVAL,
EVENT_QUEUE_OWNER,
EVENT_QUEUE_NAME,
EVENT_QUEUE_AGENT,
EVENT_CONDITION,
EVENT_RULE,
FILE_WATCHER_OWNER,
FILE_WATCHER_NAME,
END_DATE,
JOB_CLASS,
ENABLED,
AUTO_DROP,
RESTART_ON_RECOVERY,
RESTART_ON_FAILURE,
STATE,
JOB_PRIORITY,
RUN_COUNT,
MAX_RUNS,
FAILURE_COUNT,
MAX_FAILURES,
RETRY_COUNT,
LAST_START_DATE,
LAST_RUN_DURATION,
NEXT_RUN_DATE,
SCHEDULE_LIMIT,
MAX_RUN_DURATION,
LOGGING_LEVEL,
STORE_OUTPUT,
STOP_ON_WINDOW_CLOSE,
INSTANCE_STICKINESS,
RAISE_EVENTS,
SYSTEM,
JOB_WEIGHT,
NLS_ENV,
SOURCE,
NUMBER_OF_DESTINATIONS,
DESTINATION_OWNER,
DESTINATION,
CREDENTIAL_OWNER,
CREDENTIAL_NAME,
INSTANCE_ID,
DEFERRED_DROP,
ALLOW_RUNS_IN_RESTRICTED_MODE,
COMMENTS,
FLAGS,
RESTARTABLE,
CONNECT_CREDENTIAL_OWNER,
CONNECT_CREDENTIAL_NAME
)
BEQUEATH DEFINER
AS
SELECT "OWNER",
"JOB_NAME",
"JOB_SUBNAME",
"JOB_STYLE",
"JOB_CREATOR",
"CLIENT_ID",
"GLOBAL_UID",
"PROGRAM_OWNER",
"PROGRAM_NAME",
"JOB_TYPE",
"JOB_ACTION",
"NUMBER_OF_ARGUMENTS",
"SCHEDULE_OWNER",
"SCHEDULE_NAME",
"SCHEDULE_TYPE",
"START_DATE",
"REPEAT_INTERVAL",
"EVENT_QUEUE_OWNER",
"EVENT_QUEUE_NAME",
"EVENT_QUEUE_AGENT",
"EVENT_CONDITION",
"EVENT_RULE",
"FILE_WATCHER_OWNER",
"FILE_WATCHER_NAME",
"END_DATE",
"JOB_CLASS",
"ENABLED",
"AUTO_DROP",
"RESTART_ON_RECOVERY",
"RESTART_ON_FAILURE",
"STATE",
"JOB_PRIORITY",
"RUN_COUNT",
"MAX_RUNS",
"FAILURE_COUNT",
"MAX_FAILURES",
"RETRY_COUNT",
"LAST_START_DATE",
"LAST_RUN_DURATION",
"NEXT_RUN_DATE",
"SCHEDULE_LIMIT",
"MAX_RUN_DURATION",
"LOGGING_LEVEL",
"STORE_OUTPUT",
"STOP_ON_WINDOW_CLOSE",
"INSTANCE_STICKINESS",
"RAISE_EVENTS",
"SYSTEM",
"JOB_WEIGHT",
"NLS_ENV",
"SOURCE",
"NUMBER_OF_DESTINATIONS",
"DESTINATION_OWNER",
"DESTINATION",
"CREDENTIAL_OWNER",
"CREDENTIAL_NAME",
"INSTANCE_ID",
"DEFERRED_DROP",
"ALLOW_RUNS_IN_RESTRICTED_MODE",
"COMMENTS",
"FLAGS",
"RESTARTABLE",
"CONNECT_CREDENTIAL_OWNER",
"CONNECT_CREDENTIAL_NAME"
FROM dba_scheduler_jobs
WHERE OWNER = 'A1_FAS'
/
Prompt Grants on VIEW USER_SCHEDULER_JOBS_X TO A1_FAS to A1_FAS;
GRANT SELECT ON SYS.USER_SCHEDULER_JOBS_X TO A1_FAS
/
Those two views solved the problem with "ORA-01039: insufficient privileges on underlying objects of the view" on original user_xxx views.
So this looks ok, but in Toad I get another error:
![]()