MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/depssvrm.sql

Rem
Rem $Header: rdbms/admin/depssvrm.sql /main/22 2017/06/26 16:01:19 pjulsaks Exp $
Rem
Rem depssvrm.sql
Rem
Rem Copyright (c) 2006, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      depssvrm.sql - DEPendent SeRVeR Management objects
Rem
Rem    DESCRIPTION
Rem      
Rem
Rem    NOTES
Rem      
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/depssvrm.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/depssvrm.sql
Rem SQL_PHASE: DEPSSVRM
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catpdeps.sql
Rem END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    pjulsaks    06/26/17 - Bug 25688154: Uppercase create_cdbview's input
Rem    sramakri    11/21/14 - remove comments
Rem    thbaby      06/12/14 - 18971004: remove INT$ views for OBL cases
Rem    surman      12/29/13 - 13922626: Update SQL metadata
Rem    sguirgui    12/18/13 - bug 17969404 - store/restore ECHO env value
Rem    thbaby      08/28/13 - 14515351: add INT$ views for sharing=object
Rem    talliu      06/28/13 - Add CDB view for DBA view
Rem    svaziran    09/26/12 - Bug#14552012: Add container clause to alert view
Rem    marccaba    07/30/12 - Bug#12629687: Fix DBA_AUTOTASK_WINDOW_HISTORY
Rem    surman      03/27/12 - 13615447: Add SQL patching tags
Rem    ilistvin    02/13/12 - pass object id position to expand_message
Rem    ilistvin    07/24/09 - fix priority override values for autotask views
Rem    ilistvin    11/07/08 - add DBA_TABLESPACE_THRESHOLDS view
Rem    ilistvin    01/17/07 - alert enhancements
Rem    ilistvin    06/15/07 - tune autotask views
Rem    kyagoub     05/22/07 - add sqlpa new packages
Rem    ilistvin    05/15/07 - fix synonym for DBA_AUTOTASK_JOB_HISTORY
Rem    pbelknap    01/12/07 - check for autotask client status overrides
Rem    rdongmin    01/04/07 - move dbmssqlt to catpdbms.sql
Rem    ilistvin    01/04/07 - merge fix for bug 5690818
Rem    ilistvin    11/13/06 - add prvtspis.plb
Rem    ilistvin    11/09/06 - 
Rem    mlfeng      10/31/06 - 
Rem    rburns      09/17/06 - dependent views
Rem    rburns      09/17/06 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql
set echo on

Rem Create dbms_auto_task packages (depends on dbms_scheduler)
@@dbmsatsk

Rem prvt_sqlpai for SQL Performance Analyzer (SQLPA)
@@prvsspai.plb

Rem dbms_sqltune_internal (depends on dbmssqlt)
@@prvssqli.plb

/* Enable container_data sharing=object */
alter session set "_ORACLE_SCRIPT"=TRUE
/

-- Create dba_outstanding_alerts view
CREATE OR REPLACE VIEW dba_outstanding_alerts
       container_data sharing=object
  AS SELECT sequence_id, 
            reason_id,
            owner, 
            object_name, 
            subobject_name, 
            typnam_keltosd AS object_type, 
            dbms_server_alert.expand_message(userenv('LANGUAGE'), 
                                             mid_keltsd, 
                                             reason_argument_1, 
                                             reason_argument_2, 
                                             reason_argument_3, 
                                             reason_argument_4,
                                             reason_argument_5,
                                             objidx_keltsd,
                                             pdb_name) AS reason, 
            time_suggested, 
            creation_time,
            dbms_server_alert.expand_message(userenv('LANGUAGE'), 
                                             amid_keltsd,
                                             action_argument_1, 
                                             action_argument_2, 
                                             action_argument_3, 
                                             action_argument_4,
                                             action_argument_5) 
              AS suggested_action, 
            advisor_name, 
            metric_value,
            decode(message_level, 32, 'Notification', 'Warning') 
              AS message_type, 
            nam_keltgsd AS message_group, 
            message_level, 
            hosting_client_id, 
            mdid_keltsd AS module_id, 
            process_id, 
            host_id, 
            host_nw_addr, 
            instance_name, 
            instance_number, 
            user_id,  
            execution_context_id, 
            error_instance_id,
            state_transition_number,
            pdb_name,
            a.con_id as con_id
  FROM wri$_alert_outstanding a, X$KELTSD, X$KELTOSD, X$KELTGSD, 
       dba_advisor_definitions
  WHERE reason_id = rid_keltsd 
    AND otyp_keltsd = typid_keltosd 
    AND grp_keltsd = id_keltgsd 
    AND aid_keltsd = advisor_id(+); 


CREATE OR REPLACE PUBLIC SYNONYM dba_outstanding_alerts
   FOR sys.dba_outstanding_alerts;
GRANT select on dba_outstanding_alerts TO select_catalog_role;

comment on table DBA_OUTSTANDING_ALERTS is
'Description of all outstanding alerts';

comment on column DBA_OUTSTANDING_ALERTS.SEQUENCE_ID is
'Alert sequence number';

comment on column DBA_OUTSTANDING_ALERTS.REASON_ID is
'Alert reason id';

comment on column DBA_OUTSTANDING_ALERTS.OWNER is
'Owner of object on which alert is issued';

comment on column DBA_OUTSTANDING_ALERTS.OBJECT_NAME is
'Name of the object';

comment on column DBA_OUTSTANDING_ALERTS.SUBOBJECT_NAME is
'Name of the subobject (partition)';

comment on column DBA_OUTSTANDING_ALERTS.OBJECT_TYPE is
'Type of the object (table, tablespace, etc)';

comment on column DBA_OUTSTANDING_ALERTS.REASON is
'Reason for the alert';

comment on column DBA_OUTSTANDING_ALERTS.TIME_SUGGESTED is
'Time when the alert was last updated';

comment on column DBA_OUTSTANDING_ALERTS.CREATION_TIME is
'Time when the alert was first created';

comment on column DBA_OUTSTANDING_ALERTS.SUGGESTED_ACTION is 
'Advice of recommended action';

comment on column DBA_OUTSTANDING_ALERTS.ADVISOR_NAME is
'Name of advisor to be invoked for more information';

comment on column DBA_OUTSTANDING_ALERTS.METRIC_VALUE is
'Value of the related metrics';

comment on column DBA_OUTSTANDING_ALERTS.MESSAGE_TYPE is
'Message type - warning or notification';

comment on column DBA_OUTSTANDING_ALERTS.MESSAGE_GROUP is
'Name of the group that the alert belongs to';

comment on column DBA_OUTSTANDING_ALERTS.MESSAGE_LEVEL is
'Severity level (1-32)';

comment on column DBA_OUTSTANDING_ALERTS.HOSTING_CLIENT_ID is
'ID of the client or security group etc. that the alert relates to';

comment on column DBA_OUTSTANDING_ALERTS.MODULE_ID is
'ID of the module that originated the alert';

comment on column DBA_OUTSTANDING_ALERTS.PROCESS_ID is
'Process id';

comment on column DBA_OUTSTANDING_ALERTS.HOST_ID is
'DNS hostname of originating host';

comment on column DBA_OUTSTANDING_ALERTS.HOST_NW_ADDR is
'IP or other network address of originating host';

comment on column DBA_OUTSTANDING_ALERTS.INSTANCE_NAME is
'Originating instance name';

comment on column DBA_OUTSTANDING_ALERTS.INSTANCE_NUMBER is
'Originating instance number';

comment on column DBA_OUTSTANDING_ALERTS.USER_ID is
'User id';

comment on column DBA_OUTSTANDING_ALERTS.EXECUTION_CONTEXT_ID is
'ID of the threshold of execution';

comment on column DBA_OUTSTANDING_ALERTS.ERROR_INSTANCE_ID is
'ID of an error instance plus a sequence number';

comment on column DBA_OUTSTANDING_ALERTS.STATE_TRANSITION_NUMBER is
'Alert State Transition number, incremented for each state transition';

comment on column DBA_OUTSTANDING_ALERTS.PDB_NAME is
'Name of the Pluggable Database that posted the alert';

comment on column DBA_OUTSTANDING_ALERTS.CON_ID is
'Container ID of the pluggable database that posted the alert';



execute CDBView.create_cdbview(false,'SYS','DBA_OUTSTANDING_ALERTS','CDB_OUTSTANDING_ALERTS');
grant select on SYS.CDB_outstanding_alerts to select_catalog_role
/
create or replace public synonym CDB_outstanding_alerts for SYS.CDB_outstanding_alerts
/

CREATE OR REPLACE VIEW dba_alert_history
       container_data sharing=object
  AS select sequence_id, 
            reason_id, 
            owner, 
            object_name, 
            subobject_name, 
            typnam_keltosd AS object_type, 
            dbms_server_alert.expand_message(userenv('LANGUAGE'), 
                                             mid_keltsd, 
                                             reason_argument_1, 
                                             reason_argument_2, 
                                             reason_argument_3, 
                                             reason_argument_4,
                                             reason_argument_5,
                                             objidx_keltsd,
                                             pdb_name) AS reason, 
            time_suggested, 
            creation_time,
            dbms_server_alert.expand_message(userenv('LANGUAGE'), 
                                             amid_keltsd,
                                             action_argument_1, 
                                             action_argument_2, 
                                             action_argument_3, 
                                             action_argument_4,
                                             action_argument_5) 
              AS suggested_action, 
            advisor_name, 
            metric_value,
            decode(message_level, 32, 'Notification', 'Warning') 
              AS message_type, 
            nam_keltgsd AS message_group, 
            message_level, 
            hosting_client_id, 
            mdid_keltsd AS module_id, 
            process_id, 
            host_id, 
            host_nw_addr, 
            instance_name, 
            instance_number, 
            user_id,  
            execution_context_id, 
            error_instance_id, 
            decode(resolution, 1, 'cleared', 'N/A') AS resolution,
            pdb_name,
            h.con_id as con_id
  FROM wri$_alert_history h, X$KELTSD a, X$KELTOSD, X$KELTGSD, 
       dba_advisor_definitions
  WHERE resolution != 2
    AND reason_id = rid_keltsd 
    AND otyp_keltsd = typid_keltosd 
    AND grp_keltsd = id_keltgsd 
    AND aid_keltsd = advisor_id(+); 

CREATE OR REPLACE PUBLIC SYNONYM dba_alert_history
   FOR sys.dba_alert_history;
GRANT select on dba_alert_history TO select_catalog_role;

comment on table DBA_ALERT_HISTORY is
'History of Alerts';

comment on column DBA_ALERT_HISTORY.SEQUENCE_ID is
'Alert sequence number';

comment on column DBA_ALERT_HISTORY.REASON_ID is
'Alert reason id';

comment on column DBA_ALERT_HISTORY.OWNER is
'Owner of the object on which alert is issued';

comment on column DBA_ALERT_HISTORY.OBJECT_NAME is
'Name of the object';

comment on column DBA_ALERT_HISTORY.SUBOBJECT_NAME is
'Name of the subobject (partition)';

comment on column DBA_ALERT_HISTORY.OBJECT_TYPE is
'Type of the object (table, tablespace, etc)';

comment on column DBA_ALERT_HISTORY.REASON is
'Reason for the alert';

comment on column DBA_ALERT_HISTORY.TIME_SUGGESTED is
'Time when the alert was last updated';

comment on column DBA_ALERT_HISTORY.CREATION_TIME is
'Time when the alert was first produced';

comment on column DBA_ALERT_HISTORY.SUGGESTED_ACTION is
'Advice of recommended action';

comment on column DBA_ALERT_HISTORY.ADVISOR_NAME is
'Name of advisor to be invoked for more information';

comment on column DBA_ALERT_HISTORY.METRIC_VALUE is
'Value of the related metrics';

comment on column DBA_ALERT_HISTORY.MESSAGE_TYPE is
'Message type - warning or notification';

comment on column DBA_ALERT_HISTORY.MESSAGE_GROUP is
'Name of the group that the alert belongs to';

comment on column DBA_ALERT_HISTORY.MESSAGE_LEVEL is
'Severity level (1-32)';

comment on column DBA_ALERT_HISTORY.HOSTING_CLIENT_ID is
'ID of the client or security group etc. that the alert relates to';

comment on column DBA_ALERT_HISTORY.MODULE_ID is
'ID of the module that originated the alert';

comment on column DBA_ALERT_HISTORY.PROCESS_ID is
'Process id';

comment on column DBA_ALERT_HISTORY.HOST_ID is
'DNS hostname of originating host';

comment on column DBA_ALERT_HISTORY.HOST_NW_ADDR is
'IP or other network address of originating host';

comment on column DBA_ALERT_HISTORY.INSTANCE_NAME is
'Originating instance name';

comment on column DBA_ALERT_HISTORY.INSTANCE_NUMBER is
'Originating instance number';

comment on column DBA_ALERT_HISTORY.USER_ID is
'User id';

comment on column DBA_ALERT_HISTORY.EXECUTION_CONTEXT_ID is
'ID of the thread of execution';

comment on column DBA_ALERT_HISTORY.ERROR_INSTANCE_ID is
'ID of an error instance plus a sequence number';

comment on column DBA_ALERT_HISTORY.RESOLUTION is
'Cleared or not';

comment on column DBA_ALERT_HISTORY.PDB_NAME is
'Name of the Pluggable Database that posted the alert';

comment on column DBA_ALERT_HISTORY.CON_ID is
'Container ID of the pluggable database that posted the alert';


execute CDBView.create_cdbview(false,'SYS','DBA_ALERT_HISTORY','CDB_ALERT_HISTORY');
grant select on SYS.CDB_alert_history to select_catalog_role
/
create or replace public synonym CDB_alert_history for SYS.CDB_alert_history
/

-- Detailed view of alert history
CREATE OR REPLACE VIEW dba_alert_history_detail
       container_data sharing=object
  AS SELECT sequence_id, 
            reason_id, 
            owner, 
            object_name, 
            subobject_name, 
            typnam_keltosd AS object_type, 
            dbms_server_alert.expand_message(userenv('LANGUAGE'), 
                                             mid_keltsd, 
                                             reason_argument_1, 
                                             reason_argument_2, 
                                             reason_argument_3, 
                                             reason_argument_4,
                                             reason_argument_5,
                                             objidx_keltsd,
                                             pdb_name) AS reason, 
            time_suggested, 
            creation_time,
            dbms_server_alert.expand_message(userenv('LANGUAGE'), 
                                             amid_keltsd,
                                             action_argument_1, 
                                             action_argument_2, 
                                             action_argument_3, 
                                             action_argument_4,
                                             action_argument_5) 
              AS suggested_action, 
            advisor_name, 
            metric_value,
            decode(message_level, 32, 'Notification', 'Warning') 
              AS message_type, 
            nam_keltgsd AS message_group, 
            message_level, 
            hosting_client_id, 
            mdid_keltsd AS module_id, 
            process_id, 
            host_id, 
            host_nw_addr, 
            instance_name, 
            instance_number, 
            user_id,  
            execution_context_id, 
            error_instance_id, 
            decode(resolution, 1, 'cleared', 2, 'outstanding', 'N/A') 
               AS resolution,
            state_transition_number,
            pdb_name,
            h.con_id as con_id
  FROM wri$_alert_history h, X$KELTSD, X$KELTOSD, X$KELTGSD, 
       dba_advisor_definitions
  WHERE reason_id = rid_keltsd 
    AND otyp_keltsd = typid_keltosd 
    AND grp_keltsd = id_keltgsd 
    AND aid_keltsd = advisor_id(+); 

CREATE OR REPLACE PUBLIC SYNONYM dba_alert_history_detail
   FOR sys.dba_alert_history_detail;

GRANT select on dba_alert_history_detail TO select_catalog_role;

comment on table DBA_ALERT_HISTORY_DETAIL is
'Detailed alert history';

comment on column DBA_ALERT_HISTORY_DETAIL.SEQUENCE_ID is
'Alert sequence number';

comment on column DBA_ALERT_HISTORY_DETAIL.REASON_ID is
'Alert reason id';

comment on column DBA_ALERT_HISTORY_DETAIL.OWNER is
'Owner of the object on which alert is issued';

comment on column DBA_ALERT_HISTORY_DETAIL.OBJECT_NAME is
'Name of the object';

comment on column DBA_ALERT_HISTORY_DETAIL.SUBOBJECT_NAME is
'Name of the subobject (partition)';

comment on column DBA_ALERT_HISTORY_DETAIL.OBJECT_TYPE is
'Type of the object (table, tablespace, etc)';

comment on column DBA_ALERT_HISTORY_DETAIL.REASON is
'Reason for the alert';

comment on column DBA_ALERT_HISTORY_DETAIL.TIME_SUGGESTED is
'Time when the alert was last updated';

comment on column DBA_ALERT_HISTORY_DETAIL.CREATION_TIME is
'Time when the alert was first produced';

comment on column DBA_ALERT_HISTORY_DETAIL.SUGGESTED_ACTION is
'Advice of recommended action';

comment on column DBA_ALERT_HISTORY_DETAIL.ADVISOR_NAME is
'Name of advisor to be invoked for more information';

comment on column DBA_ALERT_HISTORY_DETAIL.METRIC_VALUE is
'Value of the related metrics';

comment on column DBA_ALERT_HISTORY_DETAIL.MESSAGE_TYPE is
'Message type - warning or notification';

comment on column DBA_ALERT_HISTORY_DETAIL.MESSAGE_GROUP is
'Name of the group that the alert belongs to';

comment on column DBA_ALERT_HISTORY_DETAIL.MESSAGE_LEVEL is
'Severity level (1-32)';

comment on column DBA_ALERT_HISTORY_DETAIL.HOSTING_CLIENT_ID is
'ID of the client or security group etc. that the alert relates to';

comment on column DBA_ALERT_HISTORY_DETAIL.MODULE_ID is
'ID of the module that originated the alert';

comment on column DBA_ALERT_HISTORY_DETAIL.PROCESS_ID is
'Process id';

comment on column DBA_ALERT_HISTORY_DETAIL.HOST_ID is
'DNS hostname of originating host';

comment on column DBA_ALERT_HISTORY_DETAIL.HOST_NW_ADDR is
'IP or other network address of originating host';

comment on column DBA_ALERT_HISTORY_DETAIL.INSTANCE_NAME is
'Originating instance name';

comment on column DBA_ALERT_HISTORY_DETAIL.INSTANCE_NUMBER is
'Originating instance number';

comment on column DBA_ALERT_HISTORY_DETAIL.USER_ID is
'User id';

comment on column DBA_ALERT_HISTORY_DETAIL.EXECUTION_CONTEXT_ID is
'ID of the thread of execution';

comment on column DBA_ALERT_HISTORY_DETAIL.ERROR_INSTANCE_ID is
'ID of an error instance plus a sequence number';

comment on column DBA_ALERT_HISTORY_DETAIL.RESOLUTION is
'Cleared or Outstanding';

comment on column DBA_ALERT_HISTORY_DETAIL.STATE_TRANSITION_NUMBER is
'Sequence number of the state transition for the alert';

comment on column DBA_ALERT_HISTORY_DETAIL.PDB_NAME is
'Name of the Pluggable Database that posted the alert';

comment on column DBA_ALERT_HISTORY_DETAIL.CON_ID is
'Container ID of the pluggable database that posted the alert';


execute CDBView.create_cdbview(false,'SYS','DBA_ALERT_HISTORY_DETAIL','CDB_ALERT_HISTORY_DETAIL');
grant select on SYS.CDB_alert_history_detail to select_catalog_role
/
create or replace public synonym CDB_alert_history_detail for SYS.CDB_alert_history_detail
/

-- Create dba_thresholds view
CREATE OR REPLACE VIEW dba_thresholds 
  AS select m.name AS metrics_name,
            decode(a.warning_operator, 0, 'GT',
                                       1, 'EQ',
                                       2, 'LT',
                                       3, 'LE',
                                       4, 'GE',
                                       5, 'CONTAINS',
                                       6, 'NE',
                                       7, 'DO NOT CHECK',
                                          'NONE') AS warning_operator,
            a.warning_value AS warning_value,
            decode(a.critical_operator, 0, 'GT',
                                        1, 'EQ',
                                        2, 'LT',
                                        3, 'LE',
                                        4, 'GE',
                                        5, 'CONTAINS',
                                        6, 'NE',
                                        7, 'DO_NOT_CHECK',
                                           'NONE') AS critical_operator,
            a.critical_value AS critical_value,
            a.observation_period AS observation_period,
            a.consecutive_occurrences AS consecutive_occurrences,
            decode(a.instance_name, ' ', null, 
                                       instance_name) AS instance_name,
            o.typnam_keltosd AS object_type,
            a.object_name AS object_name,
            decode(a.flags, 1, 'VALID',
                            0, 'INVALID') AS status
  FROM table(dbms_server_alert.view_thresholds) a,
       X$KEWMDSM m, 
       X$KELTOSD o 
  WHERE a.object_type != 2 
    AND m.metricid(+) = a.metrics_id
    AND a.object_type = o.typid_keltosd
  UNION
     select m.name AS metrics_name,
            decode(a.warning_operator, 0, 'GT',
                                       1, 'EQ',
                                       2, 'LT',
                                       3, 'LE',
                                       4, 'GE',
                                       5, 'CONTAINS',
                                       6, 'NE',
                                       7, 'DO_NOT_CHECK',
                                          'NONE') AS warning_operator,
            a.warning_value AS warning_value,
            decode(a.critical_operator, 0, 'GT',
                                        1, 'EQ',
                                        2, 'LT',
                                        3, 'LE',
                                        4, 'GE',
                                        5, 'CONTAINS',
                                        6, 'NE',
                                        7, 'DO NOT CHECK',
                                           'NONE') AS critical_operator,
            a.critical_value AS critical_value,
            a.observation_period AS observation_period,
            a.consecutive_occurrences AS consecutive_occurrences,
            decode(a.instance_name, ' ', null,
                                       instance_name) AS instance_name,
            o.typnam_keltosd AS object_type,
            f.name AS object_name,
            decode(a.flags, 1, 'VALID',
                            0, 'INVALID') AS status
  FROM table(dbms_server_alert.view_thresholds) a,
       X$KEWMDSM m, sys.v$dbfile f, X$KELTOSD o
  WHERE a.object_type = 2
    AND m.metricid = a.metrics_id
    AND a.object_id = f.file#
    AND a.object_type = o.typid_keltosd;

CREATE OR REPLACE PUBLIC SYNONYM dba_thresholds
   FOR sys.dba_thresholds;
GRANT select on dba_thresholds TO select_catalog_role;

comment on table DBA_THRESHOLDS is
'Desription of all thresholds';

comment on column DBA_THRESHOLDS.METRICS_NAME is
'Metrics name';

comment on column DBA_THRESHOLDS.WARNING_OPERATOR is
'Relational operator for warning thresholds';

comment on column DBA_THRESHOLDS.WARNING_VALUE is
'Warning threshold value';

comment on column DBA_THRESHOLDS.CRITICAL_OPERATOR is
'Relational operator for critical thresholds';

comment on column DBA_THRESHOLDS.CRITICAL_VALUE is
'Critical threshold value';

comment on column DBA_THRESHOLDS.OBSERVATION_PERIOD is
'Observation period length (in minutes)';

comment on column DBA_THRESHOLDS.CONSECUTIVE_OCCURRENCES is
'Has to occur so many times before an alert is issued';

comment on column DBA_THRESHOLDS.INSTANCE_NAME is
'Instance name - NULL for database-wide alerts';

comment on column DBA_THRESHOLDS.OBJECT_TYPE is
'Object type: SYSTEM, TABLESPACE, SERVICE, FILE, etc';

comment on column DBA_THRESHOLDS.OBJECT_NAME is
'Name of the object for which the threshold is set';

comment on column DBA_THRESHOLDS.STATUS is
'Whether threshold is applicable on a valid object';

execute CDBView.create_cdbview(false,'SYS','DBA_THRESHOLDS','CDB_THRESHOLDS');
grant select on SYS.CDB_thresholds to select_catalog_role
/
create or replace public synonym CDB_thresholds for SYS.CDB_thresholds
/

--
-- View to display current threshold settings for all tablespaces
--
  CREATE OR REPLACE VIEW DBA_TABLESPACE_THRESHOLDS 
  AS
  SELECT tablespace_name,
         contents,
         extent_management,
         decode(threshold_type, 1, 'EXPLICIT',
                                2, 'DEFAULT',
                                'NONE') as threshold_type,
         metrics_name,
         decode(warning_operator, 0, 'GT',
                                  1, 'EQ',
                                  2, 'LT',
                                  3, 'LE',
                                  4, 'GE',
                                  5, 'CONTAINS',
                                  6, 'NE',
                                  7, 'DO NOT CHECK',
                                  'NONE') AS warning_operator,
         warning_value,
         decode(critical_operator, 0, 'GT',
                                   1, 'EQ',
                                   2, 'LT',
                                   3, 'LE',
                                   4, 'GE',
                                   5, 'CONTAINS',
                                   6, 'NE',
                                   7, 'DO NOT CHECK',
                                   'NONE') AS critical_operator,
         critical_value
    FROM
    (SELECT tbs.tablespace_name,
            tbs.contents,
            tbs.extent_management,
            decode(m.metrics_name, NULL, 0, 1) as threshold_type,
            m.metrics_name,
            m.warning_operator,
            m.warning_value,
            m.critical_operator,
            m.critical_value
      FROM
         ((SELECT tablespace_name,
                 contents,
                 extent_management
             FROM DBA_TABLESPACES
            WHERE tablespace_name IN
                  (SELECT object_name
                     FROM table(dbms_server_alert.view_thresholds)
                    WHERE object_type = 5
                      AND object_name IS NOT NULL
                      AND metrics_id IN (9000, 9001))
          ) tbs
       LEFT OUTER JOIN 
         (SELECT a.object_name,
                m.name AS metrics_name,
                a.warning_operator AS warning_operator,
                a.warning_value AS warning_value,
                a.critical_operator AS critical_operator,
                a.critical_value AS critical_value,
                c.contents
            FROM table(dbms_server_alert.view_thresholds) a,
                 X$KEWMDSM m,
                 (SELECT 'PERMANENT' AS contents FROM DUAL
                   WHERE EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                  WHERE name = '_enable_tablespace_alerts'
                                    AND display_value='TRUE')
                  UNION ALL
                  SELECT 'TEMPORARY' FROM DUAL
                   WHERE EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                  WHERE name = '_enable_tablespace_alerts'
                                    AND display_value = 'TRUE')
                     AND EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                 WHERE name = '_disable_temp_tablespace_alerts'
                                    AND display_value = 'FALSE')
                  UNION ALL
                  SELECT 'UNDO' FROM DUAL
                   WHERE EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                  WHERE name = '_enable_tablespace_alerts'
                                          AND display_value='TRUE')
                     AND EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                 WHERE name = '_disable_undo_tablespace_alerts'
                                    AND display_value = 'FALSE')) c
           WHERE a.object_type = 5
             AND a.flags = 1
             AND a.object_name IS NOT NULL 
             AND a.metrics_id IN (9000, 9001)
             AND m.metricid = a.metrics_id) m
        ON (tbs.tablespace_name = m.object_name
            and tbs.contents = m.contents))
   UNION ALL 
    SELECT tbs.tablespace_name,
            tbs.contents,
            tbs.extent_management,
            decode(m.metrics_name, NULL, 0, 2) as threshold_type,
            m.metrics_name,
            m.warning_operator,
            m.warning_value,
            m.critical_operator,
            m.critical_value
      FROM
        ((SELECT tablespace_name,
                 contents,
                 extent_management
            FROM DBA_TABLESPACES
           WHERE tablespace_name NOT IN
                  (SELECT object_name
                     FROM table(dbms_server_alert.view_thresholds)
                    WHERE object_type = 5
                      AND object_name IS NOT NULL
                      AND metrics_id IN (9000, 9001))
         ) tbs
         LEFT OUTER JOIN
         (SELECT 'LOCAL' as extent_management,
                  m.name AS metrics_name,
                  a.warning_operator AS warning_operator,
                  a.warning_value AS warning_value,
                  a.critical_operator AS critical_operator,
                  a.critical_value AS critical_value,
                  c.contents
            FROM table(dbms_server_alert.view_thresholds) a,
                 X$KEWMDSM m,
                 (SELECT 'PERMANENT' AS contents FROM DUAL
                   WHERE EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                  WHERE name = '_enable_tablespace_alerts'
                                    AND display_value='TRUE')
                  UNION ALL
                  SELECT 'TEMPORARY' FROM DUAL
                   WHERE EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                  WHERE name = '_enable_tablespace_alerts'
                                    AND display_value = 'TRUE')
                     AND EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                 WHERE name = '_disable_temp_tablespace_alerts'
                                   AND display_value = 'FALSE')
                     AND EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                  WHERE name = '_enable_default_temp_threshold'
                                    AND display_value = 'TRUE')
                  UNION ALL
                  SELECT 'UNDO' FROM DUAL
                   WHERE EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                  WHERE name = '_enable_tablespace_alerts'
                                          AND display_value='TRUE')
                     AND EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                 WHERE name = '_disable_undo_tablespace_alerts'
                                   AND display_value = 'FALSE')
                     AND EXISTS (SELECT * FROM GV$SYSTEM_PARAMETER3
                                  WHERE name = '_enable_default_undo_threshold'
                                    AND display_value = 'TRUE')) c
           WHERE a.object_type = 5
             AND a.object_name IS NULL
             AND a.metrics_id IN (9000, 9001)
             AND m.metricid = a.metrics_id) m
        ON (tbs.extent_management =  m.extent_management
            and tbs.contents = m.contents)));

create or replace public synonym DBA_TABLESPACE_THRESHOLDS
       for DBA_TABLESPACE_THRESHOLDS;

grant select on DBA_TABLESPACE_THRESHOLDS to select_catalog_role;

comment on table DBA_TABLESPACE_THRESHOLDS is
  'Space Utilization Threshold settings for all tablespaces';

comment on column DBA_TABLESPACE_THRESHOLDS.TABLESPACE_NAME is
  'Tablespace name';

comment on column DBA_TABLESPACE_THRESHOLDS.CONTENTS is
  'Tablespace contents: "PERMANENT", "TEMPORARY", or "UNDO"';

comment on column DBA_TABLESPACE_THRESHOLDS.EXTENT_MANAGEMENT is
  'Extent management tracking: "DICTIONARY" or "LOCAL"';

comment on column DBA_TABLESPACE_THRESHOLDS.THRESHOLD_TYPE is
  'Source of threshold: "EXPLICIT", "DEFAULT", or "NONE"';

comment on column DBA_TABLESPACE_THRESHOLDS.METRICS_NAME is
  'Name of the metric being monitored';

comment on column DBA_TABLESPACE_THRESHOLDS.WARNING_OPERATOR is
  'Relational operator for warning thresholds';

comment on column DBA_TABLESPACE_THRESHOLDS.WARNING_VALUE is
  'Warning threshold value';

comment on column DBA_TABLESPACE_THRESHOLDS.CRITICAL_OPERATOR is
  'Relational operator for critical thresholds';

comment on column DBA_TABLESPACE_THRESHOLDS.CRITICAL_VALUE is
  'Critical threshold value';



execute CDBView.create_cdbview(false,'SYS','DBA_TABLESPACE_THRESHOLDS','CDB_TABLESPACE_THRESHOLDS');
grant select on SYS.CDB_TABLESPACE_THRESHOLDS to select_catalog_role
/
create or replace public synonym CDB_TABLESPACE_THRESHOLDS for SYS.CDB_TABLESPACE_THRESHOLDS
/

CREATE OR REPLACE VIEW DBA_AUTOTASK_OPERATION (
      CLIENT_NAME,
      OPERATION_NAME,
      OPERATION_TAG,
      PRIORITY_OVERRIDE,
      ATTRIBUTES,
      USE_RESOURCE_ESTIMATES,
      STATUS, 
      LAST_CHANGE) AS
SELECT C.CNAME_KETCL,
      O.OPNAME_KETOP,
      O.OTAG_KETOP,
      NVL(DECODE(COALESCE(RC.PRIORITY_OVERRIDE, RO.PRIORITY_OVERRIDE),
                  NULL, NULL,
                     0, NULL,
                     1, 'MEDIUM', 
                     2, 'HIGH', 
                     3, 'URGENT','INVALID'), '  ')
          AS PRIORITY_OVERRIDE,
      dbms_auto_task.decode_attributes(
         dbms_auto_task.reconcile_attributes(C.ATTR_KETCL,
                                             RC.ATTRIBUTES,
                                              O.ATTR_KETOP,
                                              NVL(RO.ATTRIBUTES, 0),
                                              0,0)
       ) AS ATTRIBUTES,
       CASE BITAND(21,
                   dbms_auto_task.reconcile_attributes(C.ATTR_KETCL,
                   RC.ATTRIBUTES, O.ATTR_KETOP, NVL(RO.ATTRIBUTES, 0), 0,0))
       WHEN 0 THEN 'TRUE'
       ELSE 'FALSE' 
       END AS USE_RESOURCE_ESTIMATES,
       CASE RC.STATUS 
       WHEN 2 THEN DECODE(RO.STATUS, NULL, 'ENABLED',
                          2, 'ENABLED', 1, 'DISABLED', 'INVALID')
       WHEN 1 THEN 'DISABLED'
       ELSE 'INVALID'
       END  AS STATUS,
       RC.LAST_CHANGE
 FROM X$KETCL C, X$KETOP O, KET$_CLIENT_CONFIG RC, KET$_CLIENT_CONFIG RO
WHERE C.CID_KETCL = O.CID_KETOP
  AND C.CID_KETCL > 0
  AND C.CID_KETCL = RC.CLIENT_ID 
  AND (BITAND(C.ATTR_KETCL,2048) = 0
          OR 999999 < (SELECT TO_NUMBER(VALUE)
                         FROM V$SYSTEM_PARAMETER
                        WHERE NAME = '_automatic_maintenance_test'))
  AND RC.OPERATION_ID = 0
  AND O.CID_KETOP = RO.CLIENT_ID(+)
  AND O.OPID_KETOP = RO.OPERATION_ID(+);


CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_OPERATION
   FOR sys.DBA_AUTOTASK_OPERATION;
GRANT select on DBA_AUTOTASK_OPERATION TO select_catalog_role;

comment on table DBA_AUTOTASK_OPERATION is
 'Automated Maintenance Task Operation Configuration';

comment on column DBA_AUTOTASK_OPERATION.CLIENT_NAME is
 'Name of Autotask Client';

comment on column DBA_AUTOTASK_OPERATION.OPERATION_NAME is
 'Name of Autotask Client Operation';

comment on column DBA_AUTOTASK_OPERATION.OPERATION_TAG is
 'Tag of Autotask Client Operation';

comment on column DBA_AUTOTASK_OPERATION.PRIORITY_OVERRIDE is
 'Priority that will be used for all jobs performing the operation';

comment on column DBA_AUTOTASK_OPERATION.ATTRIBUTES is
 'Operation attributes';

comment on column DBA_AUTOTASK_OPERATION.USE_RESOURCE_ESTIMATES is
 'Specifies if resource usage estimates are used for the operation';

comment on column DBA_AUTOTASK_OPERATION.STATUS is
 'Status of the operation';

comment on column DBA_AUTOTASK_OPERATION.LAST_CHANGE is
 'Timestamp of the last change';


execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_OPERATION','CDB_AUTOTASK_OPERATION');
grant select on SYS.CDB_AUTOTASK_OPERATION to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_OPERATION for SYS.CDB_AUTOTASK_OPERATION
/

CREATE OR REPLACE VIEW DBA_AUTOTASK_TASK (
      CLIENT_NAME,
      TASK_NAME,
      TASK_TARGET_TYPE,
      TASK_TARGET_NAME,
      OPERATION_NAME,
      ATTRIBUTES,
      TASK_PRIORITY,
      PRIORITY_OVERRIDE,
      STATUS,
      DEFERRED_WINDOW_NAME,
      CURRENT_JOB_NAME,
      JOB_SCHEDULER_STATUS, 
      ESTIMATE_TYPE,
      ESTIMATED_WEIGHT,
      ESTIMATED_DURATION,
      ESTIMATED_CPU_TIME,
      ESTIMATED_TEMP,
      ESTIMATED_DOP,
      ESTIMATED_IO_RATE,
      ESTIMATED_UNDO_RATE,
      RETRY_COUNT,
      LAST_GOOD_DATE,
      LAST_GOOD_PRIORITY,
      LAST_GOOD_DURATION,
      LAST_GOOD_CPU_TIME,
      LAST_GOOD_TEMP,
      LAST_GOOD_DOP,
      LAST_GOOD_IO_RATE,
      LAST_GOOD_UNDO_RATE,
      LAST_GOOD_CPU_WAIT,
      LAST_GOOD_IO_WAIT,
      LAST_GOOD_UNDO_WAIT,
      LAST_GOOD_TEMP_WAIT,
      LAST_GOOD_CONCURRENCY,
      LAST_GOOD_CONTENTION,
      NEXT_TRY_DATE,
      LAST_TRY_DATE,
      LAST_TRY_PRIORITY,
      LAST_TRY_RESULT,
      LAST_TRY_DURATION,
      LAST_TRY_CPU_TIME,
      LAST_TRY_TEMP,
      LAST_TRY_DOP,
      LAST_TRY_IO_RATE,
      LAST_TRY_UNDO_RATE,
      LAST_TRY_CPU_WAIT,
      LAST_TRY_IO_WAIT,
      LAST_TRY_UNDO_WAIT,
      LAST_TRY_TEMP_WAIT,
      LAST_TRY_CONCURRENCY,
      LAST_TRY_CONTENTION,
      MEAN_GOOD_DURATION,
      MEAN_GOOD_CPU_TIME,
      MEAN_GOOD_TEMP,
      MEAN_GOOD_DOP,
      MEAN_GOOD_IO,
      MEAN_GOOD_UNDO,
      MEAN_GOOD_CPU_WAIT,
      MEAN_GOOD_IO_WAIT,
      MEAN_GOOD_UNDO_WAIT,
      MEAN_GOOD_TEMP_WAIT,
      MEAN_GOOD_CONCURRENCY,
      MEAN_GOOD_CONTENTION,
      INFO_FIELD_1,
      INFO_FIELD_2,
      INFO_FIELD_3,
      INFO_FIELD_4 
) AS
   SELECT 
      C.CNAME_KETCL, 
      O.PRG_KETOP, 
      TG.TNAME_KETTG, 
      T.TARGET_NAME,
      O.OPNAME_KETOP,
      dbms_auto_task.decode_attributes(T.ATTRIBUTES),
      T.TASK_PRIORITY,
      T.PRIORITY_OVERRIDE,
      DECODE(T.STATUS,1, 'DISABLED',2,'ENABLED',13,'DEFERRED','INVALID'),
      T.WINDOW_NAME,
      T.CURR_JOB_NAME,
      SJ.STATE,
      DECODE(T.EST_TYPE, 1, 'DERIVED', 2, 'FORCED', 3, 'LOCKED', 'N/A'),
      T.EST_WEIGHT,
      T.EST_DURATION,
      T.EST_CPU_TIME,
      T.EST_TEMP,
      T.EST_DOP,
      T.EST_IO_RATE,
      T.EST_UNDO_RATE,
      T.RETRY_COUNT,
      T.LG_DATE,
      T.LG_PRIORITY,
      T.LG_DURATION,
      T.LG_CPU_TIME,
      T.LG_TEMP,
      T.LG_DOP,
      T.LG_IO_RATE,
      T.LG_UNDO_RATE,
      T.LG_CPU_WAIT,
      T.LG_IO_WAIT,
      T.LG_UNDO_WAIT,
      T.LG_TEMP_WAIT,
      T.LG_CONCURRENCY,
      T.LG_CONTENTION,
      W.NEXT_START_DATE,
      T.LT_DATE,
      T.LT_PRIORITY,
      CASE T.LT_TERM_CODE
        WHEN NULL THEN 'N/A'
        WHEN 10 THEN 'SUCCEEDED'
        WHEN 11 THEN 'FAILED'
        WHEN 12 THEN 'STOPPED BY USER ACTION'
        WHEN 13 THEN 'STOPPED AT END OF MAINTENANCE WINDOW'
        WHEN 14 THEN 'STOPPED AT INSTANCE SHUTDOWN'
        WHEN 15 THEN 'STOPPED'
        ELSE 'UNKNOWN'
      END,
      T.LT_DURATION,
      T.LT_CPU_TIME,
      T.LT_TEMP,
      T.LT_DOP,
      T.LT_IO_RATE,
      T.LT_UNDO_RATE, 
      T.LT_CPU_WAIT,
      T.LT_IO_WAIT,
      T.LT_UNDO_WAIT,
      T.LT_TEMP_WAIT,
      T.LT_CONCURRENCY,
      T.LT_CONTENTION,
      T.MG_DURATION,
      T.MG_CPU_TIME,
      T.MG_TEMP,
      T.MG_DOP,
      T.MG_IO_RATE,
      T.MG_UNDO_RATE,
      T.MG_CPU_WAIT,
      T.MG_IO_WAIT,
      T.MG_UNDO_WAIT,
      T.MG_TEMP_WAIT,
      T.MG_CONCURRENCY,
      T.MG_CONTENTION,
      T.INFO_FIELD_1,
      T.INFO_FIELD_2,
      T.INFO_FIELD_3,
      T.INFO_FIELD_4
    FROM  KET$_CLIENT_TASKS T, X$KETCL C, X$KETOP O, X$KETTG TG,
          DBA_SCHEDULER_WINDOWS W, DBA_SCHEDULER_JOBS SJ
   WHERE T.CLIENT_ID = C.CID_KETCL
     AND (BITAND(C.ATTR_KETCL,2048) = 0
            OR 999999 < (SELECT TO_NUMBER(VALUE)
                           FROM V$SYSTEM_PARAMETER
                          WHERE NAME = '_automatic_maintenance_test'))
     AND C.CID_KETCL > 0
     AND T.CLIENT_ID = O.CID_KETOP
     AND T.OPERATION_ID = O.OPID_KETOP
     AND T.TARGET_TYPE = TG.TID_KETTG
     AND T.WINDOW_NAME = W.WINDOW_NAME(+)
     AND T.CURR_JOB_NAME = SJ.JOB_NAME(+);

CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_TASK
   FOR sys.DBA_AUTOTASK_TASK;
GRANT select on DBA_AUTOTASK_TASK TO select_catalog_role;

comment on table DBA_AUTOTASK_TASK is 
 'Information about current and past autmated maintenance tasks';

comment on column DBA_AUTOTASK_TASK.CLIENT_NAME is 
 'Name of the Automated Maintenance client';

comment on column DBA_AUTOTASK_TASK.TASK_NAME is 
 'Name of the maintenance task';

comment on column DBA_AUTOTASK_TASK.TASK_TARGET_TYPE is 
 'Type of target of the maintenance task';

comment on column DBA_AUTOTASK_TASK.TASK_TARGET_NAME is 
 'Name of the maintenance task target';

comment on column DBA_AUTOTASK_TASK.OPERATION_NAME is 
 'Operation being performed by the task';

comment on column DBA_AUTOTASK_TASK.ATTRIBUTES is 
 'Task attributes';

comment on column DBA_AUTOTASK_TASK.TASK_PRIORITY is 
 'Task priority, relative to other tasks for this Client';

comment on column DBA_AUTOTASK_TASK.PRIORITY_OVERRIDE is 
 'Task priority as overridden by the user';

comment on column DBA_AUTOTASK_TASK.STATUS is 
 'Current status of the task';

comment on column DBA_AUTOTASK_TASK.DEFERRED_WINDOW_NAME is 
 'Name of the window to which execution of this task is deferred';

comment on column DBA_AUTOTASK_TASK.CURRENT_JOB_NAME is 
 'Job name associated with the task';

comment on column DBA_AUTOTASK_TASK.JOB_SCHEDULER_STATUS is 
 'Job status';
 
comment on column DBA_AUTOTASK_TASK.ESTIMATE_TYPE is 
 'Type of resource estimates applied';

comment on column DBA_AUTOTASK_TASK.ESTIMATED_WEIGHT is 
 'Weight of the task';

comment on column DBA_AUTOTASK_TASK.ESTIMATED_DURATION is 
 'Estimated elapsed time for the task';

comment on column DBA_AUTOTASK_TASK.ESTIMATED_CPU_TIME is 
 'Estimated CPU utilization for the task';

comment on column DBA_AUTOTASK_TASK.ESTIMATED_TEMP is 
 'Estimated temp space usage for the task';

comment on column DBA_AUTOTASK_TASK.ESTIMATED_DOP is 
 'Estimated Degree of Parallelism for the task';

comment on column DBA_AUTOTASK_TASK.ESTIMATED_IO_RATE is 
 'Estimated I/O Rate for the task';

comment on column DBA_AUTOTASK_TASK.ESTIMATED_UNDO_RATE is 
 'Estimated UNDO generation rate  for the task';

comment on column DBA_AUTOTASK_TASK.RETRY_COUNT is 
 'Numbe rof failed attempts to execute the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_DATE is 
 'Date/time of the last successful execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_PRIORITY is 
 'Task priority during the last successful execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_DURATION is 
 'Elapsed time of the last successful execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_CPU_TIME is 
 'CPU time used during the last successful execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_TEMP is 
 'Peak temp space used during last successful execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_DOP is 
 'Parallelsism during last successful execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_IO_RATE is 
 'Mean I/O rate during last successful execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_UNDO_RATE is 
 'Mean UNDO rate during last successful execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_CPU_WAIT is 
 'Total time spent waiting for CPU during last good run' ;

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_IO_WAIT is 
 'Total time spent waiting for I/O during last good run';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_UNDO_WAIT is 
 'Total time spent waiting for UNDO during last good run';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_TEMP_WAIT is 
 'Total time spent waiting for Temp Space during last good run';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_CONCURRENCY is 
 'Total time in concurrency wait during last good run';

comment on column DBA_AUTOTASK_TASK.LAST_GOOD_CONTENTION is 
 'Total time in contention  wait during last good run';

comment on column DBA_AUTOTASK_TASK.NEXT_TRY_DATE is 
 'Next projected start date/time for the deferred maintenance window';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_DATE is 
 'Date/Time of the last executon of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_PRIORITY is 
 'Priority of the task at the time of the last execution';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_RESULT is 
 'Result code of the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_DURATION is 
 'Elapsed time of the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_CPU_TIME is 
 'CPU time consumed during last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_TEMP is 
 'Peak Temp space usage during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_DOP is 
 'Degree of parallelism of the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_IO_RATE is 
 'I/O rate during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_UNDO_RATE is 
 'UNDO generation rate during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_CPU_WAIT is 
 'Time spent waiting for CPU during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_IO_WAIT is 
 'Time spent waiting for I/O during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_UNDO_WAIT is 
 'Time spent waiting for UNDO during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_TEMP_WAIT is 
 'Time spent waiting for Temp Space during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_CONCURRENCY is 
 'Time spent in concurrency wait during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.LAST_TRY_CONTENTION is 
 'Time spent in contention wait during the last execution of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_DURATION is 
 'Average elapsed time for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_CPU_TIME is 
 'Average CPU usage for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_TEMP is 
 'Average peak temp space usage for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_DOP is 
 'Average degree or parallelism for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_IO is 
 'Average I/O rate for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_UNDO is 
 'Average Undo generation rate for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_CPU_WAIT is 
 'Average CPU wait time for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_IO_WAIT is 
 'Average I/O wait time for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_UNDO_WAIT is 
 'Average Undo wait time for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_TEMP_WAIT is 
 'Average wait time for Temp space for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_CONCURRENCY is 
 'Average time in concurrency wait for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.MEAN_GOOD_CONTENTION is 
 'Average time in contention wait for successful executions of the task';

comment on column DBA_AUTOTASK_TASK.INFO_FIELD_1 is 
 'Additional information field';

comment on column DBA_AUTOTASK_TASK.INFO_FIELD_2 is 
 'Additional information field';

comment on column DBA_AUTOTASK_TASK.INFO_FIELD_3 is 
 'Additional Client information field';

comment on column DBA_AUTOTASK_TASK.INFO_FIELD_4 is 
 'Additional Client information field';



execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_TASK','CDB_AUTOTASK_TASK');
grant select on SYS.CDB_AUTOTASK_TASK to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_TASK for SYS.CDB_AUTOTASK_TASK
/

CREATE OR REPLACE VIEW DBA_AUTOTASK_SCHEDULE (window_name, start_time, duration)
AS
  SELECT *
    FROM TABLE (dbms_auto_task.window_calendar(
                CURSOR(SELECT wgr.window_name,
                              case when w.start_date > current_timestamp
                                   then w.start_date
                                   else current_timestamp
                              end,
                              case when w.end_date <
                                       (current_timestamp + INTERVAL '32' DAY)
                                   then w.end_date
                                   else current_timestamp + INTERVAL '32' DAY
                              end
                         FROM dba_scheduler_windows w,
                              dba_scheduler_wingroup_members wgr
                        WHERE w.window_name = wgr.window_name
                          AND w.enabled = 'TRUE'
                          AND (w.start_date IS NULL
                               OR w.start_date < current_timestamp + INTERVAL '32' DAY)
                          AND wgr.window_group_name = 'MAINTENANCE_WINDOW_GROUP')));

CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_SCHEDULE
   FOR sys.DBA_AUTOTASK_SCHEDULE;
GRANT select on DBA_AUTOTASK_SCHEDULE TO select_catalog_role;

comment on table DBA_AUTOTASK_SCHEDULE is 
 'Schedule of Maintenance Windows for the next 32 days';

comment on column DBA_AUTOTASK_SCHEDULE.WINDOW_NAME is
 'Name of the Maintenance Window';

comment on column DBA_AUTOTASK_SCHEDULE.START_TIME is
 'Projected start time of the window';

comment on column DBA_AUTOTASK_SCHEDULE.DURATION is
 'Currently defined duration of the window';


execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_SCHEDULE','CDB_AUTOTASK_SCHEDULE');
grant select on SYS.CDB_AUTOTASK_SCHEDULE to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_SCHEDULE for SYS.CDB_AUTOTASK_SCHEDULE
/

-- This view provides information about current jobs for all clients. 

CREATE OR REPLACE VIEW DBA_AUTOTASK_CLIENT_JOB (
      CLIENT_NAME,      
      JOB_NAME, 
      JOB_SCHEDULER_STATUS, 
      TASK_NAME ,
      TASK_TARGET_TYPE, 
      TASK_TARGET_NAME, 
      TASK_PRIORITY, 
      TASK_OPERATION)
AS
      SELECT C.CNAME_KETCL AS CLIENT_NAME,
             TR.CURR_JOB_NAME AS JOB_NAME,
             SJ.STATE AS JOBS_SCHEDULER_STATUS,
             OP.PRG_KETOP AS TASK_NAME,
             TG.TNAME_KETTG AS TASK_TARGET_TYPE,
             TR.TARGET_NAME AS TASK_TARGET_NAME,
             DECODE(TR.TASK_PRIORITY,
                     1,'MEDIUM',
                     2,'HIGH',
                     3,'URGENT','INVALID') AS TASK_PRIORITY,
             OP.OPNAME_KETOP AS TASK_OPERATION
        FROM X$KETCL C, X$KETTG TG, X$KETOP OP, KET$_CLIENT_TASKS TR, 
             DBA_SCHEDULER_JOBS SJ
       WHERE C.CID_KETCL = TR.CLIENT_ID
         AND C.CID_KETCL > 0
         AND OP.OPID_KETOP > 0
         AND (BITAND(C.ATTR_KETCL,2048) = 0
            OR 999999 < (SELECT TO_NUMBER(VALUE)
                           FROM V$SYSTEM_PARAMETER
                          WHERE NAME = '_automatic_maintenance_test'))
         AND C.CID_KETCL = OP.CID_KETOP
         AND TR.OPERATION_ID = OP.OPID_KETOP
         AND TR.CURR_JOB_NAME = SJ.JOB_NAME
         AND TR.TARGET_TYPE = TG.TID_KETTG;


CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_CLIENT_JOB
   FOR sys.DBA_AUTOTASK_CLIENT_JOB;
GRANT select on DBA_AUTOTASK_CLIENT_JOB TO select_catalog_role;

comment on table DBA_AUTOTASK_CLIENT_JOB is
 'Current automated maintenance jobs';

comment on column DBA_AUTOTASK_CLIENT_JOB.CLIENT_NAME is
 'Client name';

comment on column DBA_AUTOTASK_CLIENT_JOB.JOB_NAME is
 'Job name';

comment on column DBA_AUTOTASK_CLIENT_JOB.JOB_SCHEDULER_STATUS is 
 'Jobs Scheduling Status';

comment on column DBA_AUTOTASK_CLIENT_JOB.TASK_NAME is
 'Program associated with the job'; 

comment on column DBA_AUTOTASK_CLIENT_JOB.TASK_TARGET_TYPE is 
 'Kind of target being processed';

comment on column DBA_AUTOTASK_CLIENT_JOB.TASK_TARGET_NAME is 
 'Name of target';

comment on column DBA_AUTOTASK_CLIENT_JOB.TASK_PRIORITY is 
 'Task level prority';

comment on column DBA_AUTOTASK_CLIENT_JOB.TASK_OPERATION is
 'Operation name';


execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_CLIENT_JOB','CDB_AUTOTASK_CLIENT_JOB');
grant select on SYS.CDB_AUTOTASK_CLIENT_JOB to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_CLIENT_JOB for SYS.CDB_AUTOTASK_CLIENT_JOB
/

--
-- This view is mainly designed for use by EM. For each Enabled 
-- Maintenance Window we want to provide 'Enabled' or 'Disabled' indicator 
-- for each AUTOTASK client. 
--
CREATE OR REPLACE VIEW DBA_AUTOTASK_WINDOW_CLIENTS 
     (WINDOW_NAME,      
      WINDOW_NEXT_TIME,  -- next scheduled window open time
      WINDOW_ACTIVE,
      AUTOTASK_STATUS,
      OPTIMIZER_STATS,      
      SEGMENT_ADVISOR,      
--      SEGMENT_SHRINK,
      SQL_TUNE_ADVISOR,
      HEALTH_MONITOR
--   , ONLINE_BACKUP
    )
AS
  SELECT * FROM ( 
     WITH L AS (SELECT X.CID_KETCL AS CLIENT_ID, 
                       G.WINDOW_NAME 
                  FROM DBA_SCHEDULER_WINGROUP_MEMBERS G, 
                       X$KETCL X,
                       KET$_CLIENT_CONFIG CC
                  WHERE G.WINDOW_GROUP_NAME = X.WGRP_KETCL
                    AND X.CID_KETCL = CC.CLIENT_ID
                    AND CC.OPERATION_ID = 0
                    AND BITAND(X.ATTR_KETCL, 2048) = 0
                    AND CC.STATUS = 2
                    AND dbms_auto_task.get_client_status_override(
                          CC.CLIENT_ID) = 0) ,
          M AS (SELECT W.WINDOW_NAME, 
                       W.NEXT_START_DATE,
                       W.ACTIVE
                  FROM DBA_SCHEDULER_WINDOWS W,
                       DBA_SCHEDULER_WINGROUP_MEMBERS G
                 WHERE W.ENABLED = 'TRUE'
                   AND W.WINDOW_NAME = G.WINDOW_NAME 
                   AND G.WINDOW_GROUP_NAME = 'MAINTENANCE_WINDOW_GROUP')
SELECT M.WINDOW_NAME WINDOW_NAME, 
       M.NEXT_START_DATE WINDOW_NEXT_TIME, 
       M.ACTIVE WINDOW_ACTIVE,
       DECODE((SELECT COUNT(*) FROM L WHERE CLIENT_ID = 0 
                  AND L.WINDOW_NAME = M.WINDOW_NAME), 
              0, 'DISABLED', 'ENABLED') AS AUTOTASK_STATUS,
       DECODE((SELECT COUNT(*) FROM L WHERE CLIENT_ID = 4 
                  AND L.WINDOW_NAME = M.WINDOW_NAME), 
              0, 'DISABLED', 'ENABLED') AS OPTIMIZER_STATS,
       DECODE((SELECT COUNT(*) FROM L WHERE CLIENT_ID = 5 
                  AND L.WINDOW_NAME = M.WINDOW_NAME), 
              0, 'DISABLED', 'ENABLED') AS SEGMENT_ADVISOR,
--     DECODE((SELECT COUNT(*) FROM L WHERE CLIENT_ID = 3
--                AND L.WINDOW_NAME = M.WINDOW_NAME),
--            0, 'DISABLED', 'ENABLED') AS SEGMENT_SHRINK,
       DECODE((SELECT COUNT(*) FROM L WHERE CLIENT_ID = 6
                  AND L.WINDOW_NAME = M.WINDOW_NAME), 
              0, 'DISABLED', 'ENABLED') AS SQL_TUNE_ADVISOR,
       DECODE((SELECT COUNT(*) FROM L WHERE CLIENT_ID = 7 
                  AND L.WINDOW_NAME = M.WINDOW_NAME), 
              0, 'DISABLED', 'ENABLED') AS HEALTH_MONITOR
--    , DECODE((SELECT COUNT(*) FROM L WHERE CLIENT_ID = 6 
--                AND L.WINDOW_NAME = M.WINDOW_NAME), 
--            0, 'DISABLED', 'ENABLED') AS ONLINE_BACKUP
  FROM M);

CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_WINDOW_CLIENTS
   FOR sys.DBA_AUTOTASK_WINDOW_CLIENTS;

GRANT select on DBA_AUTOTASK_WINDOW_CLIENTS TO select_catalog_role;

comment on table DBA_AUTOTASK_WINDOW_CLIENTS is
 'Description of per-mainteance window activity';

comment on column DBA_AUTOTASK_WINDOW_CLIENTS.WINDOW_NAME is
 'Maintenance window name';

comment on column DBA_AUTOTASK_WINDOW_CLIENTS.WINDOW_NEXT_TIME is
 'Next scheduled time for the maintenance window';

comment on column DBA_AUTOTASK_WINDOW_CLIENTS.WINDOW_ACTIVE is
 'Window currently active (open)';

comment on column DBA_AUTOTASK_WINDOW_CLIENTS.AUTOTASK_STATUS is
 'Status of AUTOTASK Subsystem';

comment on column DBA_AUTOTASK_WINDOW_CLIENTS.OPTIMIZER_STATS is
 'Status of Optimizer Statistics Gathering';

comment on column DBA_AUTOTASK_WINDOW_CLIENTS.SEGMENT_ADVISOR is
 'Status of Space Advisor';

comment on column DBA_AUTOTASK_WINDOW_CLIENTS.SQL_TUNE_ADVISOR is
 'Status of Automatic SQL Tuning Advisor';

comment on column DBA_AUTOTASK_WINDOW_CLIENTS.HEALTH_MONITOR is
 'Status of Automatic Health Monitor';



execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_WINDOW_CLIENTS','CDB_AUTOTASK_WINDOW_CLIENTS');
grant select on SYS.CDB_AUTOTASK_WINDOW_CLIENTS to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_WINDOW_CLIENTS for SYS.CDB_AUTOTASK_WINDOW_CLIENTS
/

CREATE OR REPLACE VIEW DBA_AUTOTASK_WINDOW_HISTORY(
      WINDOW_NAME,
      WINDOW_START_TIME,
      WINDOW_END_TIME)
AS 
   SELECT WINDOW_NAME,
          LOG_DATE AS WINDOW_START_TIME,
          COALESCE(GREATEST((SELECT MIN(WCLOSE.LOG_DATE)
                            FROM DBA_SCHEDULER_WINDOW_LOG WCLOSE
                           WHERE WCLOSE.OPERATION='CLOSE'
                             AND WCLOSE.WINDOW_NAME = WOPEN.WINDOW_NAME
                             AND WCLOSE.LOG_DATE > WOPEN.LOG_DATE
                         ),
                         (SELECT MIN(WNEXT.LOG_DATE)
                            FROM DBA_SCHEDULER_WINDOW_LOG WNEXT
                           WHERE WNEXT.OPERATION='OPEN'
                             AND WNEXT.LOG_DATE >= WOPEN.LOG_DATE
                         )),
                   (SELECT SYSTIMESTAMP 
                      FROM DBA_SCHEDULER_WINDOWS W 
                     WHERE W.WINDOW_NAME =  WOPEN.WINDOW_NAME 
                       AND W.ACTIVE = 'TRUE'),
                   (SELECT MIN(STARTUP_TIME)
                      FROM GV$INSTANCE I
                     WHERE I.STARTUP_TIME > WOPEN.LOG_DATE
                       AND I.STATUS = 'OPEN'),
                   SYSTIMESTAMP) AS WINDOW_END_TIME
        FROM DBA_SCHEDULER_WINDOW_LOG WOPEN
        WHERE WOPEN.OPERATION='OPEN';

CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_WINDOW_HISTORY
   FOR sys.DBA_AUTOTASK_WINDOW_HISTORY;
GRANT select on DBA_AUTOTASK_WINDOW_HISTORY TO select_catalog_role;

comment on table DBA_AUTOTASK_WINDOW_HISTORY is
  'Automated Maintenance view of window history';

comment on column DBA_AUTOTASK_WINDOW_HISTORY.WINDOW_NAME is
  'Name of the window';

comment on column DBA_AUTOTASK_WINDOW_HISTORY.WINDOW_START_TIME is
  'Start time of the window';

comment on column DBA_AUTOTASK_WINDOW_HISTORY.WINDOW_END_TIME is
  'End time of the window';


execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_WINDOW_HISTORY','CDB_AUTOTASK_WINDOW_HISTORY');
grant select on SYS.CDB_AUTOTASK_WINDOW_HISTORY to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_WINDOW_HISTORY for SYS.CDB_AUTOTASK_WINDOW_HISTORY
/

--
-- This view provides client job history, mainly for EM.
--
CREATE OR REPLACE VIEW DBA_AUTOTASK_CLIENT_HISTORY
     (CLIENT_NAME,
      WINDOW_NAME,
      WINDOW_START_TIME,
      WINDOW_DURATION,
      JOBS_CREATED,
      JOBS_STARTED,
      JOBS_COMPLETED,
      WINDOW_END_TIME)
AS
     SELECT X.CNAME_KETCL,
            WLOG.WINDOW_NAME,
            WLOG.WINDOW_START_TIME,
            WLOG.WINDOW_END_TIME - WLOG.WINDOW_START_TIME
                AS WINDOW_DURATION,
            SUM(CASE WHEN OPERATION = 'ENABLE' 
                THEN 1 ELSE 0 END) AS JOBS_CREATED, 
            SUM(CASE WHEN OPERATION = 'RUN'
                THEN 1 ELSE 0 END) AS JOBS_STARTED,
            SUM(CASE WHEN OPERATION = 'RUN' AND STATUS = 'SUCCEEDED'
                THEN 1 ELSE 0 END) AS JOBS_COMPLETED,
            WLOG.WINDOW_END_TIME
       FROM X$KETCL X,
            DBA_SCHEDULER_JOB_LOG JL,
            DBA_AUTOTASK_WINDOW_HISTORY WLOG
      WHERE (BITAND(X.ATTR_KETCL,2048) = 0
          OR 999999 < (SELECT TO_NUMBER(VALUE)
                         FROM V$SYSTEM_PARAMETER
                        WHERE NAME = '_automatic_maintenance_test'))
        AND X.CID_KETCL > 0
        AND JL.JOB_CLASS IN (X.HJC_KETCL,X.UJC_KETCL,X.MJC_KETCL)
        AND JL.LOG_DATE BETWEEN WLOG.WINDOW_START_TIME
                            AND WLOG.WINDOW_END_TIME
      GROUP BY X.CNAME_KETCL, WLOG.WINDOW_NAME, WLOG.WINDOW_START_TIME,
               WLOG.WINDOW_END_TIME - WLOG.WINDOW_START_TIME,
                WLOG.WINDOW_END_TIME
        ;

CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_CLIENT_HISTORY
   FOR sys.DBA_AUTOTASK_CLIENT_HISTORY;
GRANT select on DBA_AUTOTASK_CLIENT_HISTORY TO select_catalog_role;

comment on table DBA_AUTOTASK_CLIENT_HISTORY is
  'Automated Maintenance Jobs history';

comment on column DBA_AUTOTASK_CLIENT_HISTORY.CLIENT_NAME is
  'Name of the Automated Maintenance Client';

comment on column DBA_AUTOTASK_CLIENT_HISTORY.WINDOW_NAME is
  'Name of the Maintenance Window';

comment on column DBA_AUTOTASK_CLIENT_HISTORY.WINDOW_START_TIME is
  'Start time of the Maintenance Window';

comment on column DBA_AUTOTASK_CLIENT_HISTORY.WINDOW_DURATION is
  'Duration of the Maintenance Window';

comment on column DBA_AUTOTASK_CLIENT_HISTORY.JOBS_CREATED is
  'Number of Maintenance Jobs created during the window';

comment on column DBA_AUTOTASK_CLIENT_HISTORY.JOBS_STARTED is
  'Number of Maintenance Jobs that were run during the window';

comment on column DBA_AUTOTASK_CLIENT_HISTORY.JOBS_COMPLETED is
  'Number of Maintenance Jobs that were completed during the window';

comment on column DBA_AUTOTASK_CLIENT_HISTORY.WINDOW_END_TIME is
  'End time of the Maintenance Window';


execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_CLIENT_HISTORY','CDB_AUTOTASK_CLIENT_HISTORY');
grant select on SYS.CDB_AUTOTASK_CLIENT_HISTORY to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_CLIENT_HISTORY for SYS.CDB_AUTOTASK_CLIENT_HISTORY
/

/* detailed history of autotask jobs */
CREATE OR REPLACE VIEW DBA_AUTOTASK_JOB_HISTORY
  (CLIENT_NAME, WINDOW_NAME, WINDOW_START_TIME, WINDOW_DURATION,
   JOB_NAME, JOB_STATUS, JOB_START_TIME, JOB_DURATION, JOB_ERROR, JOB_INFO) 
  AS
     SELECT X.CNAME_KETCL,
            WLOG.WINDOW_NAME,
            WLOG.WINDOW_START_TIME,
            WLOG.WINDOW_END_TIME - WLOG.WINDOW_START_TIME
                AS WINDOW_DURATION,
            JD.JOB_NAME,
            JD.STATUS,
            JD.ACTUAL_START_DATE,
            JD.RUN_DURATION,
            JD.ERROR#,
            JD.ADDITIONAL_INFO
     FROM DBA_SCHEDULER_JOB_RUN_DETAILS JD,
          X$KETCL X,
          DBA_AUTOTASK_WINDOW_HISTORY WLOG
     WHERE JD.JOB_NAME LIKE 'ORA$AT_'|| X.CTAG_KETCL||'%'
       AND JD.OWNER = 'SYS'
       AND JD.ACTUAL_START_DATE BETWEEN WLOG.WINDOW_START_TIME AND WLOG.WINDOW_END_TIME
       AND (BITAND(X.ATTR_KETCL,2048) = 0
            OR 999999 < (SELECT TO_NUMBER(VALUE)
                           FROM V$SYSTEM_PARAMETER
                          WHERE NAME = '_automatic_maintenance_test'))
       AND X.CID_KETCL > 0;


CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_JOB_HISTORY 
   FOR SYS.DBA_AUTOTASK_JOB_HISTORY;

GRANT select on DBA_AUTOTASK_JOB_HISTORY TO select_catalog_role;

comment on table DBA_AUTOTASK_JOB_HISTORY is
  'Automated Maintenance Jobs history';

comment on column DBA_AUTOTASK_JOB_HISTORY.CLIENT_NAME is
  'Name of the Automated Maintenance Client';

comment on column DBA_AUTOTASK_JOB_HISTORY.WINDOW_NAME is
  'Name of the Maintenance Window';

comment on column DBA_AUTOTASK_JOB_HISTORY.WINDOW_START_TIME is
  'Start time of the Maintenance Window';

comment on column DBA_AUTOTASK_JOB_HISTORY.WINDOW_DURATION is
  'Duration of the Maintenance Window';

comment on column DBA_AUTOTASK_JOB_HISTORY.JOB_NAME is
  'Name of the maintenance job';

comment on column DBA_AUTOTASK_JOB_HISTORY.JOB_STATUS is
  'Status of the maintenance job';

comment on column DBA_AUTOTASK_JOB_HISTORY.JOB_START_TIME is
  'Start time of the Maintenance Job';

comment on column DBA_AUTOTASK_JOB_HISTORY.JOB_DURATION is
  'Duration of the Maintenance Job';

comment on column DBA_AUTOTASK_JOB_HISTORY.JOB_ERROR is
  'Error code (if any) for the job';

comment on column DBA_AUTOTASK_JOB_HISTORY.JOB_INFO is
  'Additional information about the job';


execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_JOB_HISTORY','CDB_AUTOTASK_JOB_HISTORY');
grant select on SYS.CDB_AUTOTASK_JOB_HISTORY to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_JOB_HISTORY for SYS.CDB_AUTOTASK_JOB_HISTORY
/

CREATE OR REPLACE VIEW DBA_AUTOTASK_CLIENT (
      CLIENT_NAME,
      STATUS,
      CONSUMER_GROUP, 
      CLIENT_TAG,
      PRIORITY_OVERRIDE,
      ATTRIBUTES,
      WINDOW_GROUP,
      SERVICE_NAME,
      RESOURCE_PERCENTAGE,
      USE_RESOURCE_ESTIMATES,
      MEAN_JOB_DURATION,
      MEAN_JOB_CPU,
      MEAN_JOB_ATTEMPTS,
      MEAN_INCOMING_TASKS_7_DAYS,
      MEAN_INCOMING_TASKS_30_DAYS,
      TOTAL_CPU_LAST_7_DAYS,
      TOTAL_CPU_LAST_30_DAYS,
      MAX_DURATION_LAST_7_DAYS,
      MAX_DURATION_LAST_30_DAYS,
      WINDOW_DURATION_LAST_7_DAYS,
      WINDOW_DURATION_LAST_30_DAYS,
      LAST_CHANGE)
AS 
 SELECT * FROM (
   WITH ZH AS (SELECT * FROM DBA_AUTOTASK_CLIENT_HISTORY
                        WHERE WINDOW_END_TIME > (SYSDATE - INTERVAL ' 720' HOUR))
   SELECT C.CNAME_KETCL,
          DECODE(dbms_auto_task.get_client_status_override(CR.CLIENT_ID),
                 1, 'DISABLED', 
                 decode(CR.STATUS, 2, 'ENABLED',  1, 'DISABLED', 'INVALID')) 
            AS STATUS,
          (SELECT SJC.RESOURCE_CONSUMER_GROUP 
             FROM DBA_SCHEDULER_JOB_CLASSES SJC
            WHERE C.HJC_KETCL = SJC.JOB_CLASS_NAME) AS RESOURCE_CONSUMER_GROUP,
          C.CTAG_KETCL AS CLIENT_TAG,
          DECODE(CR.PRIORITY_OVERRIDE,
                     NULL, NULL,
                     0, NULL,
                     1, 'MEDIUM',
                     2, 'HIGH',
                     3, 'URGENT','INVALID') AS PRIORITY_OVERRIDE,
          DBMS_AUTO_TASK.DECODE_ATTRIBUTES(
            DBMS_AUTO_TASK.RECONCILE_ATTRIBUTES(C.ATTR_KETCL, 
                        CR.ATTRIBUTES, 0, 0, 0, 0)) AS ATTRIBUTES,
          C.WGRP_KETCL AS WINDOW_GROUP,
          CR.SERVICE_NAME,
          (SELECT CPU_P1+CPU_P2+CPU_P3+CPU_P4+CPU_P5+CPU_P6+CPU_P7+CPU_P8
             FROM DBA_RSRC_PLAN_DIRECTIVES RPD, 
                  DBA_SCHEDULER_JOB_CLASSES SJC
            WHERE RPD.PLAN = 'ORA$AUTOTASK_HIGH_SUB_PLAN'
              AND RPD.GROUP_OR_SUBPLAN = SJC.RESOURCE_CONSUMER_GROUP
              AND SJC.JOB_CLASS_NAME = C.HJC_KETCL) AS RESOURCE_PERCENTAGE,
          CASE BITAND(21,
                         DBMS_AUTO_TASK.RECONCILE_ATTRIBUTES(C.ATTR_KETCL, 
                                    CR.ATTRIBUTES, 0, 0, 0, 0))
          WHEN 0 THEN 'TRUE' 
          ELSE 'FALSE' END AS USE_RESOURCE_ESTIMATES,
          (SELECT NUMTODSINTERVAL(AVG((EXTRACT(DAY 
                                         FROM JRD.RUN_DURATION)*24*60*60)
                       + (EXTRACT(HOUR FROM JRD.RUN_DURATION)*60*60)
                       + (EXTRACT(MINUTE FROM JRD.RUN_DURATION)*60)
                       + EXTRACT(SECOND FROM JRD.RUN_DURATION)),'SECOND')
             FROM DBA_SCHEDULER_JOB_RUN_DETAILS JRD, 
                  DBA_SCHEDULER_JOB_LOG JL 
            WHERE JL.JOB_CLASS IN
                     (C.UJC_KETCL, C.HJC_KETCL, C.MJC_KETCL) 
              AND JL.LOG_ID = JRD.LOG_ID) AS MEAN_JOB_DURATION,
          (SELECT NUMTODSINTERVAL(AVG((EXTRACT(DAY FROM JRD.CPU_USED)*24*60*60)
                       + (EXTRACT(HOUR FROM JRD.CPU_USED)*60*60)
                       + (EXTRACT(MINUTE FROM JRD.CPU_USED)*60)
                       + EXTRACT(SECOND FROM JRD.CPU_USED)),'SECOND')
             FROM DBA_SCHEDULER_JOB_RUN_DETAILS JRD, 
                  DBA_SCHEDULER_JOB_LOG JL 
            WHERE JL.JOB_CLASS IN 
                       (C.UJC_KETCL, C.HJC_KETCL, C.MJC_KETCL) 
              AND JL.LOG_ID = JRD.LOG_ID) AS MEAN_JOB_CPU,
           (SELECT AVG(TR.RETRY_COUNT) 
              FROM KET$_CLIENT_TASKS TR
             WHERE C.CID_KETCL = TR.CLIENT_ID)
              AS MEAN_JOB_ATTEMPTS,
           (SELECT SUM(JOBS_CREATED)/CASE COUNT(CH.WINDOW_NAME) WHEN 0 THEN 1 
                                   ELSE COUNT(CH.WINDOW_NAME) END
              FROM ZH CH
             WHERE CH.CLIENT_NAME = C.CNAME_KETCL
               AND CH.JOBS_CREATED <> 0
               AND CH.WINDOW_START_TIME > (SYSDATE -INTERVAL '168' HOUR))
                  AS MEAN_INCOMING_TASKS_7_DAY, 
           (SELECT SUM(JOBS_CREATED)/CASE COUNT(CH.WINDOW_NAME) WHEN 0 THEN 1 
                                   ELSE COUNT(CH.WINDOW_NAME) END
              FROM ZH CH
             WHERE CH.CLIENT_NAME = C.CNAME_KETCL
               AND CH.JOBS_CREATED <> 0
               AND CH.WINDOW_START_TIME > (SYSDATE -INTERVAL '720' HOUR))
                 AS MEAN_INCOMING_TASKS_30_DAY,  
          (SELECT NUMTODSINTERVAL(SUM((EXTRACT(DAY FROM JRD.CPU_USED)*24*60*60)
                       + (EXTRACT(HOUR FROM JRD.CPU_USED)*60*60)
                       + (EXTRACT(MINUTE FROM JRD.CPU_USED)*60)
                       + EXTRACT(SECOND FROM JRD.CPU_USED)),'SECOND')
              FROM DBA_SCHEDULER_JOB_RUN_DETAILS JRD, 
                   DBA_SCHEDULER_JOB_LOG JL
             WHERE JL.JOB_CLASS IN 
                       (C.UJC_KETCL, C.HJC_KETCL, C.MJC_KETCL) 
               AND JL.LOG_ID = JRD.LOG_ID 
               AND JRD.LOG_DATE > (SYSDATE - INTERVAL '168' HOUR))
                               AS TOTAL_CPU_LAST_7_DAYS,
          (SELECT NUMTODSINTERVAL(SUM((EXTRACT(DAY FROM JRD.CPU_USED)*24*60*60)
                       + (EXTRACT(HOUR FROM JRD.CPU_USED)*60*60)
                       + (EXTRACT(MINUTE FROM JRD.CPU_USED)*60)
                       + EXTRACT(SECOND FROM JRD.CPU_USED)),'SECOND')
              FROM DBA_SCHEDULER_JOB_RUN_DETAILS JRD, 
                   DBA_SCHEDULER_JOB_LOG JL
             WHERE JL.JOB_CLASS IN
                       (C.UJC_KETCL, C.HJC_KETCL, C.MJC_KETCL) 
               AND JL.LOG_ID = JRD.LOG_ID 
               AND JRD.LOG_DATE > (SYSDATE - INTERVAL '720' HOUR))  
                               AS TOTAL_CPU_LAST_30_DAYS,
           (SELECT MAX(JRD.RUN_DURATION)
              FROM DBA_SCHEDULER_JOB_RUN_DETAILS JRD, 
                   DBA_SCHEDULER_JOB_LOG JL 
             WHERE JL.JOB_CLASS IN 
                       (C.UJC_KETCL, C.HJC_KETCL, C.MJC_KETCL) 
               AND JL.LOG_ID = JRD.LOG_ID 
               AND JRD.LOG_DATE > (SYSDATE - INTERVAL '168' HOUR))  
                                AS MAX_DURATION_LAST_7_DAYS,
           (SELECT MAX(JRD.RUN_DURATION)
              FROM DBA_SCHEDULER_JOB_RUN_DETAILS JRD, 
                    DBA_SCHEDULER_JOB_LOG JL 
             WHERE JL.JOB_CLASS IN 
                       (C.UJC_KETCL, C.HJC_KETCL, C.MJC_KETCL) 
               AND JL.LOG_ID = JRD.LOG_ID 
               AND JRD.LOG_DATE > (SYSDATE - INTERVAL '720' HOUR))  
                                AS MAX_DURATION_LAST_30_DAYS,
          (SELECT NUMTODSINTERVAL(SUM(
                     (EXTRACT(DAY FROM CH.WINDOW_DURATION)*24*60*60)
                     + (EXTRACT(HOUR FROM CH.WINDOW_DURATION)*60*60)
                     + (EXTRACT(MINUTE FROM CH.WINDOW_DURATION)*60)
                     + EXTRACT(SECOND FROM CH.WINDOW_DURATION)),
                   'SECOND')
              FROM ZH CH
             WHERE CH.CLIENT_NAME = C.CNAME_KETCL
               AND CH.JOBS_CREATED > 0
               AND CH.WINDOW_END_TIME > (SYSDATE - INTERVAL '168' HOUR)) 
                  AS WINDOW_DURATION_LAST_7_DAYS,
          (SELECT NUMTODSINTERVAL(SUM(
                     (EXTRACT(DAY FROM CH.WINDOW_DURATION)*24*60*60)
                     + (EXTRACT(HOUR FROM CH.WINDOW_DURATION)*60*60)
                     + (EXTRACT(MINUTE FROM CH.WINDOW_DURATION)*60)
                     + EXTRACT(SECOND FROM CH.WINDOW_DURATION)),
                   'SECOND')
              FROM ZH CH
             WHERE CH.CLIENT_NAME = C.CNAME_KETCL
               AND CH.JOBS_CREATED > 0
               AND CH.WINDOW_END_TIME > (SYSDATE - INTERVAL ' 720' HOUR)) 
                  AS WINDOW_DURATION_LAST_30_DAYS,
              CR.LAST_CHANGE AS LAST_CHANGE
     FROM X$KETCL C, KET$_CLIENT_CONFIG CR
    WHERE C.CID_KETCL = CR.CLIENT_ID
      AND CR.OPERATION_ID = 0
      AND C.CID_KETCL > 0
      AND (BITAND(C.ATTR_KETCL,2048) = 0
          OR 999999 < (SELECT TO_NUMBER(VALUE)
                         FROM V$SYSTEM_PARAMETER
                        WHERE NAME = '_automatic_maintenance_test')));

CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_CLIENT
   FOR sys.DBA_AUTOTASK_CLIENT;
GRANT select on DBA_AUTOTASK_CLIENT TO select_catalog_role;

comment on table DBA_AUTOTASK_CLIENT is
 'Autotask Client Summary Information';

comment on column DBA_AUTOTASK_CLIENT.CLIENT_NAME is
 'Name of Automated Maintenance Tasks Client';

comment on column DBA_AUTOTASK_CLIENT.STATUS is
 'Current status of the Client';

comment on column DBA_AUTOTASK_CLIENT.CONSUMER_GROUP is 
 'Resource Consumer Group normaly used to execute jobs';

comment on column DBA_AUTOTASK_CLIENT.CLIENT_TAG is
 'Tag used in forming job names';

comment on column DBA_AUTOTASK_CLIENT.PRIORITY_OVERRIDE is
 'Priority override for jobs';

comment on column DBA_AUTOTASK_CLIENT.ATTRIBUTES is
 'Client Attributes'; 

comment on column DBA_AUTOTASK_CLIENT.WINDOW_GROUP is
 'Window group used to schedule jobs';

comment on column DBA_AUTOTASK_CLIENT.SERVICE_NAME is
 'Service on which jobs will execute';

comment on column DBA_AUTOTASK_CLIENT.RESOURCE_PERCENTAGE is
 'Percentage of maintenance resources for the client';

comment on column DBA_AUTOTASK_CLIENT.USE_RESOURCE_ESTIMATES is
 'Indicates if resource estimates are uesd for this client';

comment on column DBA_AUTOTASK_CLIENT.MEAN_JOB_DURATION is
 'Average job duration for this client';

comment on column DBA_AUTOTASK_CLIENT.MEAN_JOB_CPU is
 'Average CPU time consumed by jobs';

comment on column DBA_AUTOTASK_CLIENT.MEAN_JOB_ATTEMPTS is
 'Average number of attempts to execute the job successfully';

comment on column DBA_AUTOTASK_CLIENT.MEAN_INCOMING_TASKS_7_DAYS is
 'Average number of tasks over last 7 days';

comment on column DBA_AUTOTASK_CLIENT.MEAN_INCOMING_TASKS_30_DAYS is
 'Average number of tasks over last 30 days';

comment on column DBA_AUTOTASK_CLIENT.TOTAL_CPU_LAST_7_DAYS is
 'Cumulative CPU usage over last 7 days';

comment on column DBA_AUTOTASK_CLIENT.TOTAL_CPU_LAST_30_DAYS is
 'Cumulative CPU usage over last 30 days';

comment on column DBA_AUTOTASK_CLIENT.MAX_DURATION_LAST_7_DAYS is
 'Longest running job over last 7 days';

comment on column DBA_AUTOTASK_CLIENT.MAX_DURATION_LAST_30_DAYS is
 'Longest running job over last 30 days';

comment on column DBA_AUTOTASK_CLIENT.WINDOW_DURATION_LAST_7_DAYS is
 'Cumulative maintenance window duration over last 7 days';

comment on column DBA_AUTOTASK_CLIENT.WINDOW_DURATION_LAST_30_DAYS is  
 'Cumulative maintenance window duration over last 30 days';

comment on column DBA_AUTOTASK_CLIENT.LAST_CHANGE is  
 'Timestamp of last configuration change for the client';


execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_CLIENT','CDB_AUTOTASK_CLIENT');
grant select on SYS.CDB_AUTOTASK_CLIENT to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_CLIENT for SYS.CDB_AUTOTASK_CLIENT
/

CREATE OR REPLACE VIEW DBA_AUTOTASK_STATUS (STATUS, LAST_CHANGE) AS
 SELECT DECODE(STATUS,  2, 'ENABLED',  1, 'DISABLED', 3, 'ALLOWED',
              'INVALID') AS STATUS,
        LAST_CHANGE
  FROM KET$_CLIENT_CONFIG
 WHERE CLIENT_ID = 0;

CREATE OR REPLACE PUBLIC SYNONYM DBA_AUTOTASK_STATUS
   FOR sys.DBA_AUTOTASK_STATUS;
GRANT select on DBA_AUTOTASK_STATUS TO select_catalog_role;

comment on table DBA_AUTOTASK_STATUS is
 'Autotask Status Information';

comment on column DBA_AUTOTASK_STATUS.STATUS is
 'Status of Automated Maintenance';

comment on column DBA_AUTOTASK_STATUS.LAST_CHANGE is  
 'Timestamp of last status change';

 

execute CDBView.create_cdbview(false,'SYS','DBA_AUTOTASK_STATUS','CDB_AUTOTASK_STATUS');
grant select on SYS.CDB_AUTOTASK_STATUS to select_catalog_role
/
create or replace public synonym CDB_AUTOTASK_STATUS for SYS.CDB_AUTOTASK_STATUS
/

Rem 
Rem AWR views that use packages
@@catawrpd.sql

Rem sqltune views: sqlprofile/sqlset/sqltune advisor
@@catsqltv.sql

Rem
Rem Load the SQL Access Advisor views
Rem
@@catsumaa

Rem Create dbms_auto_Task_export export package body
@@prvtatxp.plb
set echo off

@?/rdbms/admin/sqlsessend.sql

OHA YOOOO