mardi 2 juillet 2013

Statistics


0] Statictics Control are they up to date ?

Optimizer Statictics
Dictionnary Statictics
            Automatic Statistics Gathering job , see below

Note 1 Fixed objects Statictics
            should be gathered one-shot at peak load

Note 2 System
            Default stats are recommended.

Problem I got with Oracle 12C 12.1.0.2

0.1 Control of the Optimizer stats quality :

Find STALE or MISSING Statistics


select m.TABLE_OWNER,
 'NO PART' as IF_PARTITION_NAME,
 m.TABLE_NAME as NAME,
 m.INSERTS,
 m.UPDATES,
 m.DELETES,
 m.TRUNCATED, -- Indicates whether the table has been truncated since the last analyze (YES) or not (NO)
 m.TIMESTAMP as LAST_MODIFIED,
 round((m.inserts+m.updates+m.deletes)*100/NULLIF(t.num_rows,0),2) as EST_PCT_MODIFIED,
 t.num_rows as last_known_rows_number,
 t.last_analyzed,
 a.stale_stats
From dba_tab_modifications m, dba_tables t, dba_tab_statistics a
where a.owner = t.owner and a.table_name = t.table_name
and m.table_owner=t.owner and m.table_name=t.table_name and t.secondary = 'N' and stattype_locked is NULL -- DATA/CACHE/ALL
and m.table_owner not in ('SYS','SYSTEM','ANONYMOUS', 'APEX_PUBLIC_USER', 'APPQOSSYS', 'AUDSYS', 'CTXSYS', 'DBSNMP', 'DIP', 'DVF', 'DVSYS', 'FLOWS_FILES', 'GSMADMIN_INTERNAL', 'GSMCATUSER', 'GSMUSER',
'LBACSYS', 'MDDATA', 'MDSYS', 'OJVMSYS', 'OLAPSYS', 'ORACLE_OCM', 'ORDDATA', 'ORDPLUGINS', 'ORDSYS', 'OUTLN', 'SI_INFORMTN_SCHEMA', 'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'SYSBACKUP', 'SYSDG', 'SYSKM',
'WMSYS', 'XDB', 'XGE', 'XS$NULL')
and ((m.inserts+m.updates+m.deletes)*100/NULLIF(t.num_rows,0) > 10 or t.last_analyzed is null)
and not exists ( select '1' from dba_mview_logs b where m.table_owner = b.log_owner and m.table_name = b.log_table ) -- avoid materialized view log table
union
select m.TABLE_OWNER,
 p.TABLE_NAME as IF_PARTITION_NAME,
 m.PARTITION_NAME as NAME,
 m.INSERTS,
 m.UPDATES,
 m.DELETES,
 m.TRUNCATED,
 m.TIMESTAMP as LAST_MODIFIED,
 round((m.inserts+m.updates+m.deletes)*100/NULLIF(p.num_rows,0),2) as EST_PCT_MODIFIED,
 p.num_rows as last_known_rows_number,
 p.last_analyzed,
 a.stale_stats
From dba_tab_modifications m, dba_tab_partitions p, dba_tab_statistics a
where a.owner = p.table_owner and a.table_name = p.table_name and stattype_locked is NULL -- DATA/CACHE/ALL
and m.table_owner=p.table_owner and m.table_name=p.table_name
and m.PARTITION_NAME = p.PARTITION_NAME and p.table_name not like 'BIN$%'
and m.table_owner not in ('SYS','SYSTEM','ANONYMOUS', 'APEX_PUBLIC_USER', 'APPQOSSYS', 'AUDSYS', 'CTXSYS', 'DBSNMP', 'DIP', 'DVF', 'DVSYS', 'FLOWS_FILES', 'GSMADMIN_INTERNAL', 'GSMCATUSER', 'GSMUSER',
'LBACSYS', 'MDDATA', 'MDSYS', 'OJVMSYS', 'OLAPSYS', 'ORACLE_OCM', 'ORDDATA', 'ORDPLUGINS', 'ORDSYS', 'OUTLN', 'SI_INFORMTN_SCHEMA', 'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'SYSBACKUP', 'SYSDG', 'SYSKM',
'WMSYS', 'XDB', 'XGE', 'XS$NULL')
and ((m.inserts+m.updates+m.deletes)*100/NULLIF(p.num_rows,0) > 10 or p.last_analyzed is null)
order by 8 desc;

n  secondary = yes : Indicates whether the table is a secondary object created by the ODCIIndexCreate method of the Oracle Data Cartridge (Y) or not (N)

Ran on the 10/03/2019

TABLE_OWNER
IF_PARTITION_NAME
NAME
INSERTS
UPDATES
DELETES
TRUNCATED
LAST_MODIFIED
EST_PCT_MODIFIED
LAST_KNOWN_ROWS_NUMBER
LAST_ANALYZED
STALE_STATS
BI_42
NO PART
CMS_INFOOBJECTS7
691
68994
1148
NO
03/10/2019 07:52
126,3
56084
30/09/2019 07:44
YES
BI_42_AUDIT
NO PART
ADS_AUDITEE
0
1655005
0
NO
03/10/2019 07:52
840104,06
197
30/09/2019 07:44
YES
BI_42_AUDIT
NO PART
ADS_CLUSTER
0
52470
0
NO
03/10/2019 07:52
2623500
2
30/09/2019 07:44
YES
APP1
NO PART
INSTI_USER
12497
0
0
NO
02/10/2019 22:33




APP2
NO PART
INSTI_PUBLIC
1178
0
0
NO
02/10/2019 22:24





So there are STALE and MISSING STATS, even whith the 12C Automatic Statistics Gathering job !

Let’s check the Automatic feature, is it correctly running :

select client_name, status, window_group from dba_autotask_client;
CLIENT_NAME                             STATUS        WINDOW_GROUP
auto space advisor                      ENABLED      ORA$AT_WGRP_SA
auto optimizer stats collection         ENABLED      ORA$AT_WGRP_OS
sql tuning advisor                     ENABLED      ORA$AT_WGRP_SQ

Parameters

select 'GRANULARITY' as parameter,dbms_stats.get_prefs('GRANULARITY') as value from dual
UNION
select 'CASCADE' as parameter,dbms_stats.get_prefs('CASCADE') as value from dual
UNION
select 'DEGREE' as parameter,dbms_stats.get_prefs('DEGREE') as value from dual
UNION
select 'ESTIMATE_PERCENT' as parameter,dbms_stats.get_prefs('ESTIMATE_PERCENT') as value from dual
UNION
select 'METHOD_OPT' as parameter,dbms_stats.get_prefs('METHOD_OPT') as value from dual
UNION
select 'CASCADE' as parameter,dbms_stats.get_prefs('CASCADE') as value from dual
UNION
select 'NO_INVALIDATE' as parameter,dbms_stats.get_prefs('NO_INVALIDATE') as value from dual
UNION
select 'PUBLISH' as parameter,dbms_stats.get_prefs('PUBLISH') as value from dual
UNION
select 'INCREMENTAL' as parameter,dbms_stats.get_prefs('INCREMENTAL') as value from dual
UNION
select 'STALE_PERCENT' as parameter,dbms_stats.get_prefs('STALE_PERCENT') as value from dual;

PARAMETER
VALUE
CASCADE
DBMS_STATS.AUTO_CASCADE
DEGREE
NULL
ESTIMATE_PERCENT
DBMS_STATS.AUTO_SAMPLE_SIZE
GRANULARITY
AUTO
INCREMENTAL
FALSE
METHOD_OPT
FOR ALL COLUMNS SIZE AUTO
NO_INVALIDATE
DBMS_STATS.AUTO_INVALIDATE
PUBLISH
TRUE
STALE_PERCENT
10

select * from DBA_AUTOTASK_JOB_HISTORY where client_name = 'auto optimizer stats collection' order by job_start_time desc

CLIENT_NAME
WINDOW_NAME
WINDOW_START_TIME
WINDOW_DURATION
JOB_NAME
JOB_STATUS
JOB_START_TIME
JOB_DURATION
JOB_ERROR
JOB_INFO










auto optimizer stats collection
WEDNESDAY_WINDOW
02/10/2019 22:00:01,831533 +02:00
+00 04:00:00.104691
ORA$AT_OS_OPT_SY_12461
SUCCEEDED
02/10/2019 22:00:04,033617 +02:00
+00 00:00:03.000000
0

auto optimizer stats collection
TUESDAY_WINDOW
01/10/2019 22:00:01,315360 +02:00
+00 04:00:00.077451
ORA$AT_OS_OPT_SY_12441
SUCCEEDED
01/10/2019 22:00:03,662334 +02:00
+00 00:00:05.000000
0

auto optimizer stats collection
MONDAY_WINDOW
30/09/2019 22:00:00,692265 +02:00
+00 04:00:00.036978
ORA$AT_OS_OPT_SY_12421
SUCCEEDED
30/09/2019 22:00:02,973274 +02:00
+00 00:00:03.000000
0


Since it’s working normally, I decided to disable this automatic feature and install my own Statistics gathering, a better
way than Oracle installed it !!

0.2 Disable the 'auto optimizer stats collection'

Connect as SYS and EXEC DBMS_AUTO_TASK_ADMIN.DISABLE('auto optimizer stats collection', NULL, NULL);

$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Thu Oct 3 08:45:28 2019
Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> EXEC DBMS_AUTO_TASK_ADMIN.DISABLE('auto optimizer stats collection', NULL, NULL);
PL/SQL procedure successfully completed.

select client_name, status, window_group from dba_autotask_client;
CLIENT_NAME                             STATUS        WINDOW_GROUP
auto space advisor                      ENABLED      ORA$AT_WGRP_SA
auto optimizer stats collection         DISABLED     ORA$AT_WGRP_OS
sql tuning advisor                     ENABLED      ORA$AT_WGRP_SQ

0.3 Install custom Job

Install new Job with

exec DBMS_STATS.GATHER_DATABASE_STATS ( estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,block_sample=>null,method_opt=>'FOR ALL INDEXED COLUMNS SIZE AUTO',degree=>2,granularity=>'ALL',cascade=>TRUE,options=>'GATHER AUTO',gather_sys=>TRUE) ;

GATHER AUTO: Gathers all necessary statistics automatically.
Oracle implicitly determines which objects need new statistics, and determines how to gather those statistics.
When GATHER AUTO is specified, the only additional valid parameters are ownname, stattab, statid, objlist and statown; all other parameter settings are ignored.

exec dbms_scheduler.drop_job('CD13_GATHER_DATABASE_STATS_DD') ;

BEGIN
  SYS.DBMS_SCHEDULER.CREATE_JOB
    (
       job_name        => 'CD13_GATHER_DATABASE_STATS_DD'
      ,start_date      => TO_TIMESTAMP_TZ('2019/10/03 05:00:00.000000 +01:00','yyyy/mm/dd hh24:mi:ss.ff tzh:tzm')
      ,repeat_interval => 'FREQ=DAILY'
      ,end_date        => NULL
      ,job_class       => 'DEFAULT_JOB_CLASS'
      ,job_type        => 'PLSQL_BLOCK'
      ,job_action      => 'BEGIN DBMS_STATS.GATHER_DATABASE_STATS ( estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,block_sample=>null,method_opt=>''FOR ALL INDEXED COLUMNS SIZE AUTO'',degree=>2,granularity=>''ALL'',cascade=>TRUE,options=>''GATHER AUTO'',gather_sys=>TRUE) ; END;'
      ,comments        => 'AUC 2019103: auto optimizer stats collection replacement'
    );
END ;
/

exec DBMS_SCHEDULER.ENABLE('CD13_GATHER_DATABASE_STATS_DD') ;

0.4 Check after the job execution

The query 0.1 returns no rows OK.

Note : find Locked Statistics

select * from dba_tab_statistics where stattype_locked = 'ALL'
and owner not in ('SYS','SYSTEM','ANONYMOUS', 'APEX_040200', 'APEX_PUBLIC_USER', 'APPQOSSYS', 'AUDSYS', 'CTXSYS', 'DBSNMP', 'DIP', 'DVF', 'DVSYS', 'FLOWS_FILES', 'GSMADMIN_INTERNAL', 'GSMCATUSER', 'GSMUSER',
'LBACSYS', 'MDDATA', 'MDSYS', 'OJVMSYS', 'OLAPSYS', 'ORACLE_OCM', 'ORDDATA', 'ORDPLUGINS', 'ORDSYS', 'OUTLN', 'SI_INFORMTN_SCHEMA', 'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'SYSBACKUP', 'SYSDG', 'SYSKM',
'WMSYS', 'XDB', 'XGE', 'XS$NULL')
order by 1,2


select log_date , job_name , status, run_duration from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name = 'CD13_GATHER_DATABASE_STATS_DD' order by log_date desc

LOG_DATE                           JOB_NAME                    STATUS        RUN_DURATION
07/10/2019 06:03:18,052543 +02:00    CD13_GATHER_DATABASE_STATS_DD SUCCEEDED     +00 00:03:15.000000
06/10/2019 06:10:52,129637 +02:00    CD13_GATHER_DATABASE_STATS_DD SUCCEEDED     +00 00:10:49.000000
05/10/2019 06:14:05,209342 +02:00    CD13_GATHER_DATABASE_STATS_DD SUCCEEDED     +00 00:14:02.000000
04/10/2019 07:11:06,811329 +02:00    CD13_GATHER_DATABASE_STATS_DD SUCCEEDED     +00 01:11:03.000000

First execution takes a longer duration.


1] Optimizer Statistics Gathering

1.1 Table


exec DBMS_STATS.GATHER_TABLE_STATS ( 'IOW_OPA_DTM','sgl_dtm_dim_personne',null,DBMS_STATS.AUTO_SAMPLE_SIZE,null,'FOR ALL INDEXED COLUMNS SIZE AUTO',2,'ALL',TRUE) ;


select table_name , last_analyzed from user_tables where lower(table_name) in ('zy00','zy15','zx8k','zx5v')  order by 2 desc

1.2 Index


exec DBMS_STATS.GATHER_INDEX_STATS( 'SAFRAN_DM','IDX_XXGL_INT_OBS_TO_SFR_ARCH',DBMS_STATS.AUTO_SAMPLE_SIZE,4,'ALL' ) ;


1.3 Schema


exec DBMS_STATS.GATHER_SCHEMA_STATS ( 'SPE5',DBMS_STATS.AUTO_SAMPLE_SIZE,null,'FOR ALL INDEXED COLUMNS SIZE AUTO',2,'ALL',TRUE) ;


1.4 Database


exec dbms_stats.gather_database_stats( estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,block_sample=>FALSE,method_opt=>'FOR ALL COLUMNS SIZE AUTO', degree=>4,granularity=>'ALL',cascade=>TRUE,options=>'GATHER',gather_sys=>TRUE) ;



2] Modify Statistics

2.1 Restore

Table


exec DBMS_STATS.RESTORE_TABLE_STATS( ownname => 'HR', tabname => 'ZX5V', as_of_timestamp => to_timestamp('25-11-2011 06:00:00','DD-MM-YYYY hh24:mi:ss'), no_invalidate => FALSE ) ;


Schema
Under SYS or SYSTEM


exec DBMS_STATS.RESTORE_SCHEMA_STATS( ownname => 'IOW_OIN_ODS', as_of_timestamp => to_timestamp('07-11-2012 11:00:00','DD-MM-YYYY hh24:mi:ss'), no_invalidate => FALSE ) ;


2.2 Set

Table


exec dbms_stats.set_table_stats( ownname => 'SCH01', tabname => 'TEMP_PREST_TABLE', stattab => null, statid => null, numrows => 14510, numblks => 50, avgrlen => 100);


If they are locked : exec dbms_stats.set_table_stats( ownname => 'SCH01', tabname => 'TEMP_PREST_TABLE', stattab => null, statid => null, numrows => 14510, numblks => 50, avgrlen => 100 , force=> true );

Table Partition


exec dbms_stats.set_table_stats( ownname => 'OWNER1', tabname => 'PT', partname => 'P1_2013', stattab => null, statid => null, numrows => 3000000, numblks => 50000, avgrlen => 100);


2.3 Lock

Table

exec dbms_stats.lock_table_stats( ownname => 'OWNER1', tabname => 'COMPTJ');

exec dbms_stats.unlock_table_stats( ownname => 'SCH01', tabname => 'TEMP_PREST_TABLE');
exec DBMS_STATS.GATHER_TABLE_STATS ( 'SCH01','TEMP_PREST_TABLE',null,DBMS_STATS.AUTO_SAMPLE_SIZE,null,'FOR ALL INDEXED COLUMNS SIZE AUTO',2,'ALL',TRUE) ;
exec dbms_stats.lock_table_stats( ownname => 'SCH01', tabname => 'TEMP_PREST_TABLE');

-- shows when stats is locked the value of stattype_locked is ALL
SELECT stattype_locked FROM dba_tab_statistics WHERE table_name = 'TEMP_PREST_TABLE' and owner = 'SCH01';

Schema


exec DBMS_STATS.LOCK_SCHEMA_STATS('IOW_OIN_ODS');
exec DBMS_STATS.UNLOCK_SCHEMA_STATS('IOW_OIN_ODS');


oracle how to see if table statistics are locked

select stattype_locked from dba_tab_statistics where table_name = 'TABLE1'-- where stattype_locked != 'TRUE'
exec dbms_stats.unlock_schema_stats('SCHEMA');

3] Copy from one Database to Another

3.1 Copy from one Database to Another

Schema Level Stats : Export/Import Stats from 10g to 11g

  • [10g] Export Stats
under sys

exec dbms_stats.create_stat_table ( ownname => 'SYSTEM', stattab => 'IOW_HHR_stats', tblspace => 'SYSAUX' );
exec dbms_stats.export_schema_stats ( ownname => 'IOW_HHR', stattab => 'IOW_HHR_stats', statown => 'SYSTEM' );

exec dbms_stats.create_stat_table ( ownname => 'SYSTEM', stattab => 'USR1_stats', tblspace => 'SYSAUX' );
exec dbms_stats.export_schema_stats ( ownname => 'USR1', stattab => 'USR1_stats', statown => 'SYSTEM' );

$ expdp system directory=DB01_DP_DIR dumpfile=iow_hhr_stats.dmp tables=IOW_HHR_stats,USR1_stats
Export: Release 10.2.0.5.0 - 64bit Production on Thursday, 08 November, 2012 8:49:29

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TABLE_01":  system/******** directory=DB01_DP_DIR dumpfile=iow_hhr_stats.dmp tables=IOW_HHR_stats,USR1_stats
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 2.375 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
. . exported "SYSTEM"."USR1_STATS"                1.282 MB   11009 rows
. . exported "SYSTEM"."IOW_HHR_STATS"                    310.1 KB    2511 rows
Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is:
  /WORK_EXP/oracle/DB01/iow_hhr_stats.dmp
Job "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at 08:49:42

exec dbms_stats.drop_stat_table ( ownname => 'SYSTEM', stattab => 'USR1_stats');

  • [11g] Import


$ impdp system directory=DB01_DP_DIR dumpfile=iow_hhr_stats.dmp
Import: Release 11.2.0.2.0 - Production on Thu Nov 8 09:29:26 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01":  system/******** directory=DB01_DP_DIR dumpfile=iow_hhr_stats.dmp
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "SYSTEM"."USR1_STATS"                1.282 MB   11009 rows
. . imported "SYSTEM"."IOW_HHR_STATS"                    310.1 KB    2511 rows
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Job "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at 09:29:52


under sys: delete stats, upgrade stats to 11G version ( to avoid error below ), import & lock


exec dbms_stats.delete_schema_stats ( ownname => 'USR1' );

EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('SYSTEM','USR1_stats') ;



exec dbms_stats.import_schema_stats ( ownname => 'USR1', stattab => 'USR1_stats', statown => 'SYSTEM' );
exec DBMS_STATS.LOCK_SCHEMA_STATS('USR1');


Error when Upgrade is not done :

ORA-20002 on Importing Statistics using DBMS_STATS Procedures [ID 740345.1]
BEGIN dbms_stats.import_schema_stats ( ownname => 'IOW_OIN_ODS', stattab => 'IOW_OIN_ODS', statown => 'SYSTEM' ); END;
*
ERROR at line 1:
ORA-20002: Version of statistics table SYSTEM.IOW_OIN_ODS is too old.  Please
try upgrading it with dbms_stats.upgrade_stat_table
ORA-06512: at "SYS.DBMS_STATS", line 11271
ORA-06512: at "SYS.DBMS_STATS", line 11288
ORA-06512: at "SYS.DBMS_STATS", line 12420
ORA-06512: at line 1


4] How to modify Automatic Statistics Gathering

4.1 [10G] Example : Add another daily schedule


col REPEAT_INTERVAL for a80
col DURATION for a30
SQL> select window_name, repeat_interval, duration from dba_scheduler_windows where window_name like 'WEEK%';
WINDOW_NAME   REPEAT_INTERVAL                                               DURATION
------------------------------ ---------------------------------------------------------------WEEKNIGHT_WINDOW         freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0        +000 08:00:00
WEEKEND_WINDOW   freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0                            +002 00:00:00



SQL> BEGIN
  2  dbms_scheduler.disable('WEEKNIGHT_WINDOW');
  3  DBMS_SCHEDULER.SET_ATTRIBUTE('WEEKNIGHT_WINDOW','repeat_interval','freq=daily;byday=MON,TUE,WED,THU,FRI,SAT;byhour=5,21;byminute=0; bysecond=0');
  4  dbms_scheduler.enable('WEEKNIGHT_WINDOW');
  5  END;
  6  /

PL/SQL procedure successfully completed.



col REPEAT_INTERVAL for a80
col DURATION for a30
SQL> select window_name, repeat_interval, duration from dba_scheduler_windows where window_name like 'WEEK%';
WINDOW_NAME   REPEAT_INTERVAL                                               DURATION
------------------------------ ---------------------------------------------------------------
WEEKNIGHT_WINDOW freq=daily;byday=MON,TUE,WED,THU,FRI,SAT;byhour=6,22;byminute=0; bysecond=0 +000 08:00:00
WEEKEND_WINDOW   freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0                           +002 00:00:00

SQL> SELECT STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB';
STATE
---------------
SCHEDULED


4.2 [10G] Example2 : Disable WEEKEND_WINDOW

SQL> select window_name, repeat_interval, duration, enabled , active from dba_scheduler_windows where window_name like 'WEEK%';
WINDOW_NAME   REPEAT_INTERVAL                                  DURATION      ENABL ACTIV
------------------------------ ---------------------------------------------------------------WEEKNIGHT_WINDOW         freq=daily;byday=MON,TUE,WED,THU,FRI,SAT;byhour=5,21;byminute=0; bysecond=0 +000 08:00:00    TRUE  TRUE
WEEKEND_WINDOW   freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0         +002 00:00:00    TRUE  FALSE

BEGIN
 dbms_scheduler.disable('WEEKEND_WINDOW');
END;
/
PL/SQL procedure successfully completed.

SQL> select window_name, repeat_interval, duration, enabled , active from dba_scheduler_windows where window_name like 'WEEK%';
SQL> select window_name, repeat_interval, duration, enabled , active from dba_scheduler_windows where window_name like 'WEEK%';
WINDOW_NAME   REPEAT_INTERVAL                                  DURATION      ENABL ACTIV
------------------------------ ---------------------------------------------------------------WEEKNIGHT_WINDOW         freq=daily;byday=MON,TUE,WED,THU,FRI,SAT;byhour=5,21;byminute=0; bysecond=0 +000 08:00:00    TRUE  TRUE
WEEKEND_WINDOW   freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0                            +002 00:00:00    FALSE FALSE


4.3 [10G] Example3 : Disable SATURDAY Gathering

-- disable Saturday Gather Stats
-- 11g they are now executed as "autotasks"  http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/mgmt_db.htm#CNCPT1375
BEGIN
   DBMS_AUTO_TASK_ADMIN.disable(
     client_name => 'auto optimizer stats collection',
     operation   => NULL,
     window_name => 'SATURDAY_WINDOW');
END;
/

select * from DBA_AUTOTASK_WINDOW_CLIENTS


WINDOW_NAME
WINDOW_NEXT_TIME
WINDOW_ACTIVE
AUTOTASK_STATUS
OPTIMIZER_STATS
SEGMENT_ADVISOR
SQL_TUNE_ADVISOR
HEALTH_MONITOR
MONDAY_WINDOW
24/02/2014 22:00:00,000000 +01:00
FALSE
ENABLED
ENABLED
ENABLED
ENABLED
DISABLED
TUESDAY_WINDOW
25/02/2014 22:00:00,000000 +01:00
FALSE
ENABLED
ENABLED
ENABLED
ENABLED
DISABLED
WEDNESDAY_WINDOW
26/02/2014 22:00:00,000000 +01:00
FALSE
ENABLED
ENABLED
ENABLED
ENABLED
DISABLED
THURSDAY_WINDOW
20/02/2014 22:00:00,000000 +01:00
FALSE
ENABLED
ENABLED
ENABLED
ENABLED
DISABLED
FRIDAY_WINDOW
21/02/2014 22:00:00,000000 +01:00
FALSE
ENABLED
ENABLED
ENABLED
ENABLED
DISABLED
SATURDAY_WINDOW
22/02/2014 06:00:00,000000 +01:00
FALSE
ENABLED
ENABLED
ENABLED
ENABLED
DISABLED
SUNDAY_WINDOW
23/02/2014 06:00:00,000000 +01:00
FALSE
ENABLED
ENABLED
ENABLED
ENABLED
DISABLED
WINDOW_NAME
WINDOW_NEXT_TIME
WINDOW_ACTIVE
AUTOTASK_STATUS
OPTIMIZER_STATS
SEGMENT_ADVISOR
SQL_TUNE_ADVISOR
HEALTH_MONITOR
SATURDAY_WINDOW
22/02/2014 06:00:00,000000 +01:00
FALSE
ENABLED
DISABLED
ENABLED
ENABLED
DISABLED

4.4 [11G] Change Scheduled Running Hour

select client_name , status from DBA_AUTOTASK_CLIENT where client_name = 'auto optimizer stats collection'
-- auto optimizer stats collection ENABLED

BEGIN
  DBMS_SCHEDULER.disable(name => 'SYS.MONDAY_WINDOW', force => TRUE);

  DBMS_SCHEDULER.set_attribute(
    name      => 'SYS.MONDAY_WINDOW',
    attribute => 'repeat_interval',
    value     => 'freq=daily;byday=MON;byhour=07;byminute=0; bysecond=0') ;

  DBMS_SCHEDULER.enable(name=>'SYS.MONDAY_WINDOW');
END;
/