Amigo, utilizo assim, veja se te ajuda e/ou altere para seu ambiente

declare
  cursor cr is
      select d.owner,d.object_name,d.object_type 
           from dba_objects d
           where d.owner not in 
('XDB','OUTLN','WMSYS','PUBLIC','SYS','SYSTEM','OUTLN','DBSNMP','TRACESVR','SCOTT','AURORA$ORB$UNAUTHENTICATED','WMSYS','MDSYS','EXFSYS','SYSMAN','TSMSYS','ORDSYS','DMSYS','CTXSYS','OLAPSYS','WKSYS','FLOWS_FILES','FLOWS_010500','WK_TEST')
           and d.object_type in ('TABLE')
           and d.object_name not like 'BIN$%';
 VCOMANDO   VARCHAR2(255);                   
begin
  for r in cr loop
   VCOMANDO := 'begin 
dbms_stats.gather_table_stats('''||r.owner||''','''||r.object_name||''',cascade=>
 true);end;'; 
    EXECUTE IMMEDIATE VCOMANDO;
    commit;
  end loop;
end;




________________________________
De: "wel...@stcruz.com.br" <wel...@stcruz.com.br>
Para: oracle_br@yahoogrupos.com.br
Enviadas: Terça-feira, 7 de Junho de 2011 11:47
Assunto: RES: [oracle_br] Criação de Script - Coelta de Estatisticas


  
Bom dia...

Olha, acho que não é por ai!!!!

Você está tentando coletar estatística de todos os usuários do banco de
dados. Veja bem, tem objetos no banco de dados Oracle que não se pode
alterar as estatísticas..

Neste caso, recomendo você a coletar apenas de seu usuário de produção,
onde roda seu ERP. Agora, vc pode também coletar as estatísticas  do
usuário SYS, vi alguma coisa na documentação a respeito..

Agora de tudo, acho desnecessário..

E outra, isso é um número estimado.. tipo 20%, a algum tempo, o Chiappa
colocou uns scripts aqui no forum, onde ele dividia entre tabelas
pequenas, médias e grande.. e coletava de forma diferente para cada uma
delas...

O que você precisa fazer? Qual Sua idéia? Qual banco versão? Qual SO...

Abraço!

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de candiurudba
Enviada em: terça-feira, 7 de junho de 2011 11:37
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Criação de Script - Coelta de Estatisticas

Bom dia colegas,

Estou refazendo alguns script antigos, quanto a coleta de estatisticas e
estou tendo alguma dificuldade para criar um unico script, com a devida
passagem de parametros relacionada aos owners que possuo...

Irei fazer uma criação de histogramas diaria (20%) e no sabado, uma coelta
full de estatisticas...

A idéia seria a seguinte...

begin
cursor_username in (select distinct (username)
from dba_users
where lower(username) not in ('apex_public_user',
'flows_030000',
'flows_files',
'owbsys',
'spatial_csw_admin_usr',
'spatial_wfs_admin_usr',
'wkproxy',
'wksys',
'wk_test',
'xs$null',
'si_informmtn_schema',
'scott',
'oracle_ocm',
'dip',
'outln',
'mgmt_view',
'tsmsys',
'ix',
'anonymous',
'sysman',
'mdsys',
'sys',
'system',
'xdb',
'dbsnmp',
'olapsys',
'oe',
'wmsys',
'xdb',
'dmsys',
'ordplugins',
'ordsys',
'wmsys',
'exfsys',
'ctxsys',
'home',
'hs',
'si_informtn_schema',
'mddata',
'ora_xp_auditoria')
order by username)

EXEC DBMS_STATS.GATHER_SCHEMA_STATS('cursor_username',ESTIMATE_PERCENT =>
20, METHOD_OPT =>'FOR ALL COLUMNS SIZE AUTO', DEGREE => 4, CASCADE =>
TRUE);

end;
/

Mas não esta rolando...alguem tem alguma sugestão ou ideiá ? Senão terei
que criar linha a linha para todos os schemas que possuo...

Obrigadão


 

[As partes desta mensagem que não continham texto foram removidas]

Responder a