Fungerende statistikk-rutiner med samling satistikk på skjema-basis

 

Statistikk samling + monitoring + oppdatering av statistikk for CBO (USDPROD + USDUTV)

Arbeidskatalog med skripter: /hf/hedvig/dok/utvikling/oracle/statistikk

 

Oppdatert 6.01.2004

 

Oppgave

Setninger til å opprette skripter til å kjøre

USDPROD

USDUTV

BACKUP

 

 

1:00

 

Samle”start” statistikk for db  (via enhver bruker skjema for alle tabeller/indekser) 100%

Eller for nye utviklede tabeller .

 

set linesize 200;

set pagesize 200;

spool dbms_stats_spool_1_av_2.sql;

-- skriptet samler grunnleggende statistik for nye tabeller

-- samme script fungerer både for usdutv og usdprod

-- default tablespace in usdutv: ('HISTORIE_DATA','USD_DATA')

select 'execute dbms_stats.gather_schema_stats ('''||a.username||''', estimate_percent => 100,'||

       ' cascade => true, options => ''GATHER'');'

       from dba_users  a, dba_tables b

       where b.monitoring <> ‘YES’

       and b.owner=a.username

       and default_tablespace in ('ARK_DATA','ARK_DATA2','FELLES_DATA','LEKS_DATA',       'HISTORIE_DATA', 'LITT_DATA','LEKS_VH_DATA','LEKS_DATA2','KUNSTHISTORIE_DATA', 'LITT_DATA','NAMN_DATA','NATHIST_DATA','SPRAKRAD_DATA','STAD_DATA');

spool off;

/

Hver måned i første uke for nye tabeller

Hver måned i første uke for nye tabeller

Sette i gang automatisk table monitoring for nye tabeller

set linesize 180;

set pagesize 200;

-- samme script fungerer både for usdutv og usdprod

-- default tablespace in usdutv: ('HISTORIE_DATA','USD_DATA')

spool alter_tab_monitor_spool.sql;

select 'alter table '||b.owner||'.'||b.table_name||' monitoring;'

        from dba_tables b, dba_users a

        where b.monitoring <>'YES'

        and b.owner=a.username

        and a.default_tablespace in ('ARK_DATA','ARK_DATA2','FELLES_DATA',

             'HISTORIE_DATA','LEKS_DATA','LEKS_VH_DATA','KUNSTHISTORIE_DATA',

             'LITT_DATA','NAMN_DATA', 'NATHIST_DATA','LEKS_DATA2',

             'SPRAKRAD_DATA','STAD_DATA')  ;

spool off;

/

Hver måned i første uke for nye tabeller

Hver måned i første uke for nye tabeller

Fornye statistikk for enhver skjema (oppdateres kun tableller med > enn 10% oppdatering) Estimate_percent = 100%. Det er default value og kan dermed droppes.

 

 

set linesize 200;

set pagesize 200;

spool dbms_stats_spool_1_av_2.sql;

-- script danner execute-s for å fornye statistikk for tabeller oppdaterte mer enn 10%

-- samme script fungerer for usdutv og usdprod med div. defaul_tablespace navn

-- default tablespace in usdutv: ('HISTORIE_DATA','USD_DATA')

select 'execute dbms_stats.gather_schema_stats ('''||username||''', '||  

         ' cascade => true, options =>  ''GATHER   STALE'');'

       from dba_users

       where default_tablespace in ('ARK_DATA','ARK_DATA2','FELLES_DATA','LEKS_DATA',       'HISTORIE_DATA', 'LITT_DATA','LEKS_VH_DATA','LEKS_DATA2','KUNSTHISTORIE_DATA', 'LITT_DATA','NAMN_DATA','NATHIST_DATA','SPRAKRAD_DATA','STAD_DATA','USERS');

spool off;

/

Hver dag kl 22:00 via cron

Søndag kl. 6:00 via cron

Rebuild og fornye statistikk av function-based indekser for tabeller som har blitt opdatert mer enn 10%. Skriptet kjøres via cron og drift@muspro.uio.no får setningene til å kjøre via mail.

spool dbms_stats_spool_22_av_2.sql;
-- Function_base indexes rebuild + statistics
select 'alter index '||owner||'.'||index_name||  ' rebuild coalesce compute statistics;'
       from dba_indexes 
       where last_analyzed in ( sysdate- 8)
       and index_type like '%FUNCT%';
spool off;

Hver dag kl. 8:00

via cron + manuelt

Søndag kl 8:00

via cron + manuelt

Rebuild og fornye statistikk av indekser for tabeller som  har blitt oppdatert mer enn 10%

set linesize 200;
set pagesize 200;
spool dbms_stats_spool_21_av_2.sql;
--
-- Normal indexes rebuild + statistics
select ' alter index '||owner||'.'||index_name||' rebuild coalesce compute statistics;'
       from dba_indexes
       where last_analyzed >= (sysdate - 1/12) 
       and index_type <> 'LOB'
       and index_type not like '%FUNCT%'
       and index_name not like '%IOT%';
spool off;

Hver uke, mandag manuelt

Hver uke, mandag manuelt

Snapshort (USIT)

Til å få snapshort rapportene:

export ORACLE_VERSION=9.2.0

. /local/oracle/.userprofile

 sqlplus perfstat@usdprod (passord som system) + see på rapporter #

 Kjøre statspack rapport med

 @?/rdbms/admin/spreport.sql

Går gjevnt hver 2 timer, fra 9:00 ...