Quantcast
Channel: Toad for Oracle Forum - Recent Threads
Viewing all articles
Browse latest Browse all 4385

RE: Explain plan bug

$
0
0

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:



Viewing all articles
Browse latest Browse all 4385

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>