RES: [oracle_br] Re: ORA-01652: unable to extend temp

2012-11-28 Por tôpico Ednilson Silva
Chiappa,

 

Aumentei a TEMP, mais ainda continua o erro, existe algo a mais que pode ser
feito?

 

SQL select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024 from DBA_TEMP_FILES;

FILE_NAMETABLESPACE_NAME
BYTES/1024/1024

 --
---

/d004/oradata/prod/temp01.dbfTEMP
1

/d004/oradata/prod/temp02.dbfTEMP
1

/d004/oradata/prod/temp03.dbfTEMP
1

/d004/oradata/prod/temp04.dbfTEMP
10240

/d004/oradata/prod/temp05.dbfTEMP
10240

 

A SORT_AREA_SIZE e PGA_AGGREGATE_TARGET esta conforme abaixo, não sei se
pode ajudar alguma coisa.

 

SQL show parameter sort_area_size;

NAME TYPEVALUE

 ---
--

sort_area_size   integer 65536

SQL show parameter pga_aggregate_target;

NAME TYPEVALUE

 ---
--

pga_aggregate_target big integer 1500M

 

Grato,

 

Ednilson Silva

 

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de J. Laurindo Chiappa
Enviada em: terça-feira, 27 de novembro de 2012 15:14
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: ORA-01652: unable to extend temp

 

  

Sim, a msg :

ORA-01652: unable to extend temp segment by 128 in tablespace TEMP

é bem Clara quanto ao esgotamente da tablespace TEMP - se for o caso, vc até
pode obter dados sobre o consumo real de tempspace consultando na hora que
dá essa msg a v$sort_segment/v$sort_usage, OU tendo uma trigger de erro que
faz e automatiza a consulta para vc, OU então (se tiver a Licença
necessária) vc pode obter o histórico recente de utilização de tempspace via
DBA_HIST_TEMPSTATXS e relacionadas, MAS a msg de erro não deixa muita margem
ao diagnóstico de aumento do espaço de tablespace
Sobre o quanto e o que aumentar : o que importa é o total de espaço (e não a
qtdade de tempfiles, isso é largamente Irrelevante),e pelo que vejo vc tem
hoje no total 3 GB - isso é o tamanho de um pendrive, é (num ambiente que
Possui utilização) um tamanho que se pode considerar pequeno Eu diria
para vc passar para pelo menos 10 GB essa tablespace e monitorar o consumo a
partir daí, sendo Irrelevante se vc adicionar o espaço faltante em um, dois
ou x tempfiles, desde Que o seu SO/hardware/ambiente permita arquivos de
qquer tamanho 

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
, Ednilson Silva ednilson.silva@... escreveu

 Pessoal,
 
 
 
 Tenho um banco aqui 10.2.0.4 em Red Hat 5.7 64 Bits, que tem uma rotina em
 crontab para executar o comando abaixo:
 
 
 
 exec dbms_stats.gather_schema_stats(ownname =
'HOMO',estimate_percent=20);
 
 
 
 E não esta concluindo dá o erro abaixo:
 
 
 
 SQL BEGIN dbms_stats.gather_schema_stats(ownname =
 'HOMO',estimate_percent=20); END;
 
 
 
 *
 
 ERROR at line 1:
 
 ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
 
 ORA-06512: at SYS.DBMS_STATS, line 13591
 
 ORA-06512: at SYS.DBMS_STATS, line 13937
 
 ORA-06512: at SYS.DBMS_STATS, line 14015
 
 ORA-06512: at SYS.DBMS_STATS, line 13974
 
 ORA-06512: at line 1
 
 
 
 SQL select * from dba_tablespaces where tablespace_name = 'TEMP';
 
 TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT
 MIN_EXTENTS MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING
 FORCE_LOGGING EXTENT_MANAGEMENT ALLOCATION_TYPE PLUGGED_IN
 SEGMENT_SPACE_MANAGEMENT DEF_TAB_COMPRESSION RETENTION BIGFILE
 
 -- -- -- ---
 --- ---  -- - -
 - - - --- --
  --- --- ---
 
 TEMP 8192 1048576 1048576
 1 0 1048576 ONLINE TEMPORARY NOLOGGING NO
 LOCAL UNIFORM NO MANUAL
 DISABLED NOT APPLY NO
 
 SQL SELECT tablespace_name, file_name, bytes FROM dba_temp_files WHERE
 tablespace_name = 'TEMP';
 
 TABLESPACE_NAME FILE_NAME
 BYTES
 
 ---
 --
  --
 
 TEMP /d004/oradata/prod/temp01.dbf
 1048576000
 
 TEMP /d004/oradata/prod/temp02.dbf
 1048576000
 
 TEMP /d004/oradata/prod/temp03.dbf
 1048576000
 
 
 
 Criando mais um tempfile irá resolver meu problema?
 
 
 
 Grato,
 
 
 
 Ednilson Silva
 
 
 
 [As partes desta mensagem que não continham texto foram removidas]






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



RES: [oracle_br] Re: ORA-01652: unable to extend temp

2012-11-28 Por tôpico J. Laurindo Chiappa
  Bem, pelo que eu vi vc aumentou para coisa de 50 GB (5 datafiles de 10 GB) a 
sua TEMP : na média de databases que se vê pelaí, isso até deveria ser 
suficiente, mas até pode acontecer de ainda ser insuficiente, ESPECIALMENTE se 
vc tem alguma tabela de dezenas de GB a ordenar para se coletar estatísticas 
(já vi casos de uma tabela até 2,5x o seu tamanho em área temp para ordenação e 
quetais) - assim, se pergunta, QUAL o tamanho (em bytes, não em linhas) das 
maiores tabelas desse schema que vc está coletando estats ?? SE for alguma 
coisa especialmente grande, na casa de umas tantas dezenas de GBs, pode ser que 
um aumento ainda maior da temp seja necessário, verifique
  
  SE não for isso , eu  diria que vc tem 2 possibilidades aí,colega :
  
  a)  Outras rotinas consumindo temp area na hora que vc roda a coleta : como 
eu disse antes, para vc averiguar se é isso, OU consulte/monitore o consumo 
real de temp area com as views apropriadas imediatamente antes E durante a 
coleta, E/OU se vc tiver permissão/direito use as views de historic data 
(active session history) e AWR para descobrir o consumo histórico recente, E/OU 
tenha uma trigger de database error que faça uma ou ambas as coisas quando der 
o erro de unable to extend 

  b) bug na DBMS_STATS.GATHER_SCHEMA_STATS, consumindo muito mais que o 
necessário : pesquise a SUA versão no metalink e/ou abra um Chamado no Suporte 
para ver  há bug cujos sintomas são similares ao seu...
 É de bom tomo também vc TESTAR fazendo a coleta com 
DBMS_STATS.GATHER_TABLE_STATS (usando um scriptizinho sql*plus que te gere os 
comandos todos, ninguém é doido para digitar os trocentos comandos de coleta 
para as trocentas tabelas do schema) - INCLUSIVE, isso pode até te Acelerar a 
coleta talvez, se vc tiver diversos scripts rodando simultaneamente, cada um 
coletando de uma parte da lista de objetos do schema...
  
  []s
  
 Chiappa

--- Em oracle_br@yahoogrupos.com.br, Ednilson Silva ednilson.silva@... 
escreveu

 Chiappa,
 
  
 
 Aumentei a TEMP, mais ainda continua o erro, existe algo a mais que pode ser
 feito?
 
  
 
 SQL select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024 from DBA_TEMP_FILES;
 
 FILE_NAMETABLESPACE_NAME
 BYTES/1024/1024
 
  --
 ---
 
 /d004/oradata/prod/temp01.dbfTEMP
 1
 
 /d004/oradata/prod/temp02.dbfTEMP
 1
 
 /d004/oradata/prod/temp03.dbfTEMP
 1
 
 /d004/oradata/prod/temp04.dbfTEMP
 10240
 
 /d004/oradata/prod/temp05.dbfTEMP
 10240
 
  
 
 A SORT_AREA_SIZE e PGA_AGGREGATE_TARGET esta conforme abaixo, não sei se
 pode ajudar alguma coisa.
 
  
 
 SQL show parameter sort_area_size;
 
 NAME TYPEVALUE
 
  ---
 --
 
 sort_area_size   integer 65536
 
 SQL show parameter pga_aggregate_target;
 
 NAME TYPEVALUE
 
  ---
 --
 
 pga_aggregate_target big integer 1500M
 
  
 
 Grato,
 
  
 
 Ednilson Silva
 
  
 
  
 
 De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
 nome de J. Laurindo Chiappa
 Enviada em: terça-feira, 27 de novembro de 2012 15:14
 Para: oracle_br@yahoogrupos.com.br
 Assunto: [oracle_br] Re: ORA-01652: unable to extend temp
 
  
 
   
 
 Sim, a msg :
 
 ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
 
 é bem Clara quanto ao esgotamente da tablespace TEMP - se for o caso, vc até
 pode obter dados sobre o consumo real de tempspace consultando na hora que
 dá essa msg a v$sort_segment/v$sort_usage, OU tendo uma trigger de erro que
 faz e automatiza a consulta para vc, OU então (se tiver a Licença
 necessária) vc pode obter o histórico recente de utilização de tempspace via
 DBA_HIST_TEMPSTATXS e relacionadas, MAS a msg de erro não deixa muita margem
 ao diagnóstico de aumento do espaço de tablespace
 Sobre o quanto e o que aumentar : o que importa é o total de espaço (e não a
 qtdade de tempfiles, isso é largamente Irrelevante),e pelo que vejo vc tem
 hoje no total 3 GB - isso é o tamanho de um pendrive, é (num ambiente que
 Possui utilização) um tamanho que se pode considerar pequeno Eu diria
 para vc passar para pelo menos 10 GB essa tablespace e monitorar o consumo a
 partir daí, sendo Irrelevante se vc adicionar o espaço faltante em um, dois
 ou x tempfiles, desde Que o seu SO/hardware/ambiente permita arquivos de
 qquer tamanho 
 
 []s
 
 Chiappa
 
 --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
 , Ednilson Silva ednilson.silva@ escreveu
 
  Pessoal,
  
  
  
  Tenho um banco aqui 10.2.0.4 em Red Hat 5.7 64 Bits, que tem uma rotina em
  crontab para executar o comando abaixo:
  
  
  
  exec 

RES: [oracle_br] Re: ORA-01652: unable to extend temp

2012-11-28 Por tôpico Ednilson Silva
Fabricio,

É uma rotina que esta agendada para ser executada de madrugada e durante o
dia fica complicado para executar ela.
Mas executei sua query e ate o momento não trouxe nada, vou ficar
monitorando durante o dia.

Grato,

Ednilson Silva


-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de Fabricio Pedroso Jorge
Enviada em: quarta-feira, 28 de novembro de 2012 11:23
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Re: ORA-01652: unable to extend temp

Caro Ednilson, use a seguinte query pra monitorar quem está consumindo a
TEMP. A partir daí é possível ver o que pode ser feito para tentar reduzir
seu uso, se for possível:

 *  SELECT b.TABLESPACE,
  ROUND(((b.blocks * p.VALUE) / 1024 / 1024), 2) used_size_mb,
  a.SID,
  a.serial#,
  a.username,
  a.osuser,
  a.program,
  a.status,
  s.SQL_TEXT
 FROM v$session a, v$sort_usage b, v$process c, v$parameter p, V$SQL
S
WHERE p.NAME = 'db_block_size'
  AND a.saddr = b.session_addr
  AND a.paddr = c.addr
  AND a.sql_id = s.SQL_ID
 ORDER BY b.TABLESPACE, b.segfile#, b.segblk#, b.blocks;*


Em 28 de novembro de 2012 10:55, Ednilson Silva
ednilson.si...@jbs.com.brescreveu:

 **


 Chiappa,

 Aumentei a TEMP, mais ainda continua o erro, existe algo a mais que 
 pode ser feito?

 SQL select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024 from 
 SQL DBA_TEMP_FILES;

 FILE_NAME TABLESPACE_NAME
 BYTES/1024/1024

  
 --
 ---

 /d004/oradata/prod/temp01.dbf TEMP
 1

 /d004/oradata/prod/temp02.dbf TEMP
 1

 /d004/oradata/prod/temp03.dbf TEMP
 1

 /d004/oradata/prod/temp04.dbf TEMP
 10240

 /d004/oradata/prod/temp05.dbf TEMP
 10240

 A SORT_AREA_SIZE e PGA_AGGREGATE_TARGET esta conforme abaixo, não sei 
 se pode ajudar alguma coisa.

 SQL show parameter sort_area_size;

 NAME TYPE VALUE

  ---
 --

 sort_area_size integer 65536

 SQL show parameter pga_aggregate_target;

 NAME TYPE VALUE

  ---
 --

 pga_aggregate_target big integer 1500M

 Grato,

 Ednilson Silva

 De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
 Em nome de J. Laurindo Chiappa Enviada em: terça-feira, 27 de novembro 
 de 2012 15:14
 Para: oracle_br@yahoogrupos.com.br
 Assunto: [oracle_br] Re: ORA-01652: unable to extend temp

 Sim, a msg :

 ORA-01652: unable to extend temp segment by 128 in tablespace TEMP

 é bem Clara quanto ao esgotamente da tablespace TEMP - se for o caso, 
 vc até pode obter dados sobre o consumo real de tempspace consultando 
 na hora que dá essa msg a v$sort_segment/v$sort_usage, OU tendo uma 
 trigger de erro que faz e automatiza a consulta para vc, OU então (se 
 tiver a Licença
 necessária) vc pode obter o histórico recente de utilização de 
 tempspace via DBA_HIST_TEMPSTATXS e relacionadas, MAS a msg de erro 
 não deixa muita margem ao diagnóstico de aumento do espaço de 
 tablespace
 Sobre o quanto e o que aumentar : o que importa é o total de espaço (e 
 não a qtdade de tempfiles, isso é largamente Irrelevante),e pelo que 
 vejo vc tem hoje no total 3 GB - isso é o tamanho de um pendrive, é 
 (num ambiente que Possui utilização) um tamanho que se pode considerar 
 pequeno Eu diria para vc passar para pelo menos 10 GB essa 
 tablespace e monitorar o consumo a partir daí, sendo Irrelevante se vc 
 adicionar o espaço faltante em um, dois ou x tempfiles, desde Que o 
 seu SO/hardware/ambiente permita arquivos de qquer tamanho

 []s

 Chiappa

 --- Em oracle_br@yahoogrupos.com.br 
 mailto:oracle_br%40yahoogrupos.com.br
 
 , Ednilson Silva ednilson.silva@... escreveu
 
  Pessoal,
 
 
 
  Tenho um banco aqui 10.2.0.4 em Red Hat 5.7 64 Bits, que tem uma 
  rotina
 em
  crontab para executar o comando abaixo:
 
 
 
  exec dbms_stats.gather_schema_stats(ownname =
 'HOMO',estimate_percent=20);
 
 
 
  E não esta concluindo dá o erro abaixo:
 
 
 
  SQL BEGIN dbms_stats.gather_schema_stats(ownname =
  'HOMO',estimate_percent=20); END;
 
 
 
  *
 
  ERROR at line 1:
 
  ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
 
  ORA-06512: at SYS.DBMS_STATS, line 13591
 
  ORA-06512: at SYS.DBMS_STATS, line 13937
 
  ORA-06512: at SYS.DBMS_STATS, line 14015
 
  ORA-06512: at SYS.DBMS_STATS, line 13974
 
  ORA-06512: at line 1
 
 
 
  SQL select * from dba_tablespaces where tablespace_name = 'TEMP';
 
  TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS 
  MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING 
  FORCE_LOGGING EXTENT_MANAGEMENT ALLOCATION_TYPE PLUGGED_IN 
  SEGMENT_SPACE_MANAGEMENT DEF_TAB_COMPRESSION RETENTION BIGFILE
 
  -- -- -- ---
  

RES: [oracle_br] Re: ORA-01652: unable to extend temp

2012-11-28 Por tôpico Ednilson Silva
Chiappa,

 

Tenho uma tabela de 180G e duas outras de 50G, são as maiores do banco em
apenas um schema.

No momento estou sem acesso ao Metalink, a empresa ainda esta renovando
contrato.

 

No DBMS_STATS.GATHER_SCHEMA_STATS, tem como não executar numa determinada
tabela?

 

Não existe nenhuma outra rotina concorrendo com o
DBMS_STATS.GATHER_SCHEMA_STATS de madrugada.

 

Grato,

 

Ednilson Silva

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de J. Laurindo Chiappa
Enviada em: quarta-feira, 28 de novembro de 2012 12:43
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: ORA-01652: unable to extend temp

 

  

Bem, pelo que eu vi vc aumentou para coisa de 50 GB (5 datafiles de 10 GB) a
sua TEMP : na média de databases que se vê pelaí, isso até deveria ser
suficiente, mas até pode acontecer de ainda ser insuficiente, ESPECIALMENTE
se vc tem alguma tabela de dezenas de GB a ordenar para se coletar
estatísticas (já vi casos de uma tabela até 2,5x o seu tamanho em área temp
para ordenação e quetais) - assim, se pergunta, QUAL o tamanho (em bytes,
não em linhas) das maiores tabelas desse schema que vc está coletando estats
?? SE for alguma coisa especialmente grande, na casa de umas tantas dezenas
de GBs, pode ser que um aumento ainda maior da temp seja necessário,
verifique

SE não for isso , eu diria que vc tem 2 possibilidades aí,colega :

a) Outras rotinas consumindo temp area na hora que vc roda a coleta : como
eu disse antes, para vc averiguar se é isso, OU consulte/monitore o consumo
real de temp area com as views apropriadas imediatamente antes E durante a
coleta, E/OU se vc tiver permissão/direito use as views de historic data
(active session history) e AWR para descobrir o consumo histórico recente,
E/OU tenha uma trigger de database error que faça uma ou ambas as coisas
quando der o erro de unable to extend 

b) bug na DBMS_STATS.GATHER_SCHEMA_STATS, consumindo muito mais que o
necessário : pesquise a SUA versão no metalink e/ou abra um Chamado no
Suporte para ver há bug cujos sintomas são similares ao seu...
É de bom tomo também vc TESTAR fazendo a coleta com
DBMS_STATS.GATHER_TABLE_STATS (usando um scriptizinho sql*plus que te gere
os comandos todos, ninguém é doido para digitar os trocentos comandos de
coleta para as trocentas tabelas do schema) - INCLUSIVE, isso pode até te
Acelerar a coleta talvez, se vc tiver diversos scripts rodando
simultaneamente, cada um coletando de uma parte da lista de objetos do
schema...

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
, Ednilson Silva ednilson.silva@... escreveu

 Chiappa,
 
 
 
 Aumentei a TEMP, mais ainda continua o erro, existe algo a mais que pode
ser
 feito?
 
 
 
 SQL select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024 from DBA_TEMP_FILES;
 
 FILE_NAME TABLESPACE_NAME
 BYTES/1024/1024
 
  --
 ---
 
 /d004/oradata/prod/temp01.dbf TEMP
 1
 
 /d004/oradata/prod/temp02.dbf TEMP
 1
 
 /d004/oradata/prod/temp03.dbf TEMP
 1
 
 /d004/oradata/prod/temp04.dbf TEMP
 10240
 
 /d004/oradata/prod/temp05.dbf TEMP
 10240
 
 
 
 A SORT_AREA_SIZE e PGA_AGGREGATE_TARGET esta conforme abaixo, não sei se
 pode ajudar alguma coisa.
 
 
 
 SQL show parameter sort_area_size;
 
 NAME TYPE VALUE
 
  ---
 --
 
 sort_area_size integer 65536
 
 SQL show parameter pga_aggregate_target;
 
 NAME TYPE VALUE
 
  ---
 --
 
 pga_aggregate_target big integer 1500M
 
 
 
 Grato,
 
 
 
 Ednilson Silva
 
 
 
 
 
 De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
[mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
] Em
 nome de J. Laurindo Chiappa
 Enviada em: terça-feira, 27 de novembro de 2012 15:14
 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br

 Assunto: [oracle_br] Re: ORA-01652: unable to extend temp
 
 
 
 
 
 Sim, a msg :
 
 ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
 
 é bem Clara quanto ao esgotamente da tablespace TEMP - se for o caso, vc
até
 pode obter dados sobre o consumo real de tempspace consultando na hora que
 dá essa msg a v$sort_segment/v$sort_usage, OU tendo uma trigger de erro
que
 faz e automatiza a consulta para vc, OU então (se tiver a Licença
 necessária) vc pode obter o histórico recente de utilização de tempspace
via
 DBA_HIST_TEMPSTATXS e relacionadas, MAS a msg de erro não deixa muita
margem
 ao diagnóstico de aumento do espaço de tablespace
 Sobre o quanto e o que aumentar : o que importa é o total de espaço (e não
a
 qtdade de tempfiles, isso é largamente Irrelevante),e pelo que vejo vc tem
 hoje no total 3 GB - isso é o tamanho de um pendrive, é (num ambiente que
 Possui utilização) um tamanho que se pode considerar pequeno

RES: [oracle_br] Re: ORA-01652: unable to extend temp

2012-11-28 Por tôpico J. Laurindo Chiappa
 Segue :

Tenho uma tabela de 180G e duas outras de 50G

Opa, pode ser isso : de repente uma tabela de 180 GB que precise ser ordenada, 
sofrer a criação de uma hash table para hash join ou coisas do tipo pode Sim 
consumir mais do que os seus 50 GB de temp area numa query complexa, como são 
as de coleta de estatística, sim
 SE vc tiver o espaço disponível, experimente temporariamente deixar a temp 
tablespace com algumas centenas de GBs, pra ver se dá diferença...
 
 
 No momento estou sem acesso ao Metalink, a empresa ainda esta renovando 
contrato.
 
 Isso é um prob sério - como a falha acontece numa rotina interna do RDBMS, só 
o Suporte Oracle que pode te confirmar/negar a possibilidade de bug, Além do 
que se houver patch disponível é só lá no metalink que vc pode baixar 
   Tente acelerar o mais possível essa renovação, e nesse meio-tempo d~e uma 
goolgada e veja se um DBA de outra Empresa do mesmo grupo que a sua, ou da 
matriz, coisas do tipo, pode fazer ao menos umas Consultas mais 
precisas/aprofundadas no metalink, em vc fornecendo os detalhes técnicos todos 
pra ele...
   
No DBMS_STATS.GATHER_SCHEMA_STATS, tem como não executar numa determinada 
tabela?

 afaik Não Tem Não - em tese vc poderia usar as funções de LOCK de estatísticas 
na package DBMS_STATS para que essa tal tabela não sofra coleta, mas é so - 
pela GATHER_SCHEMA_STATS em si afaik não tem como...
   INCLUSIVE, esse foi um dos motivos que me levaram a *** abandonar *** esse 
cara completamente há muitos anos, junto com outros (tais como o fato de que as 
Mesmas Opções - de porcentual, de tipo/tamanho de histogramas, todas enfim - 
que vc indicou na gather_schema_stats vão ser usadas IGUALMENTE para o schema 
inteiro : se há tabelas grandes onde vc quer um % diferente, ou uma Ordem de 
coleta diferente, etc, Não Tem Como Então eu faço como eu disse, crio um 
scriptzinho sql*plus que me gera a lista de comandos 
DBMS_STATS.GATHER_TABLE_STATS para cada tabela, aí eu posso o customizar do 
jeito que preciso...
   
   Não existe nenhuma outra rotina concorrendo com o 
DBMS_STATS.GATHER_SCHEMA_STATS de madrugada 
   
   Vc tem COMPLETA, TOTAl e ABSOLUTA certeza disso ??? Vc realmente MONITOROU 
ou está confiando na palavra de alguém  Absolutamente não é Impossível que 
oficialmente a janela X deveria ser reservada para a tarefa Y *** mas *** aí 
aquele analistazinho ishperto ou aquele usuário importante vai lá e dispara 
algo sem vc saber nesse período, E/OU que a tarefa Y que começou antes da 
janela não terminou e que ela esteja rodando/consumindo temp area quando começa 
a janela das estatísticas... 
   == Minha recomendação não muda : vc DEVERIA, se não o fez quando deu o 
erro, ter algum tipo de MONITORAMENTO e AUDITORIA DO CONSUMO da temp durante 
esse período da coleta, yep ??? Confiar desconfiando, esse é o lema do DBA...
   
   
[]s

  Chiappa
  
 OBS : espero que esteja CLARO para vc que as views tipo V$SORT_SEGMENT , 
V$SORT_USAGE , V$SESSION e relacionadas só registram a situação DO MOMENTO : 
assim, se vc rodar alguma consulta de consumo de temp AGORA, fora da janela, e 
não ver nada, absolutamente Não É Impossível que a consulta não mostrou nada 
porque agora não tem consumo/concorrência, MAS que na madrugada lá TENHA SIM, 
okdoc ??? Então consultas do ipo TEM QUE SER EXECUTADAS primeiro imediatamente 
Antes da coleta, E depois algumas vezes durante , okdoc ? Só assim vc vai ver a 
situação Real...
 

--- Em oracle_br@yahoogrupos.com.br, Ednilson Silva ednilson.silva@... 
escreveu

 Chiappa,
 
  
 
 Tenho uma tabela de 180G e duas outras de 50G, são as maiores do banco em
 apenas um schema.
 
 No momento estou sem acesso ao Metalink, a empresa ainda esta renovando
 contrato.
 
  
 
 No DBMS_STATS.GATHER_SCHEMA_STATS, tem como não executar numa determinada
 tabela?
 
  
 
 Não existe nenhuma outra rotina concorrendo com o
 DBMS_STATS.GATHER_SCHEMA_STATS de madrugada.
 
  
 
 Grato,
 
  
 
 Ednilson Silva
 
  
 
 De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
 nome de J. Laurindo Chiappa
 Enviada em: quarta-feira, 28 de novembro de 2012 12:43
 Para: oracle_br@yahoogrupos.com.br
 Assunto: RES: [oracle_br] Re: ORA-01652: unable to extend temp
 
  
 
   
 
 Bem, pelo que eu vi vc aumentou para coisa de 50 GB (5 datafiles de 10 GB) a
 sua TEMP : na média de databases que se vê pelaí, isso até deveria ser
 suficiente, mas até pode acontecer de ainda ser insuficiente, ESPECIALMENTE
 se vc tem alguma tabela de dezenas de GB a ordenar para se coletar
 estatísticas (já vi casos de uma tabela até 2,5x o seu tamanho em área temp
 para ordenação e quetais) - assim, se pergunta, QUAL o tamanho (em bytes,
 não em linhas) das maiores tabelas desse schema que vc está coletando estats
 ?? SE for alguma coisa especialmente grande, na casa de umas tantas dezenas
 de GBs, pode ser que um aumento ainda maior da temp seja necessário,
 verifique
 
 SE não for isso , eu

RES: [oracle_br] Re: ORA-01652: unable to extend temp

2012-11-28 Por tôpico Ednilson Silva
Opa Ederson,

Irei testar da forma que você indicou abaixo também.

 

Grato,

 

Ednilson Silva

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de ederson2001br
Enviada em: quarta-feira, 28 de novembro de 2012 15:37
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: ORA-01652: unable to extend temp

 

  

Alô Edinilson,

Permita minha opinião, uma outra ótica para sua questão.

A sua rotina que está estourando a TEMP é esta que atualiza as
estatísticas do schema e vc quer não executá-la para uma determinada
tabela?

Para estes casos, na sintaxe do GATHER_SCHEMA_STATS tem o parâmetro
estimate_percent que geralmente fica em dbms_stats.auto_sample_size, mas
vc pode colocar um valor fixo, 5 por exemplo, indicando que é para analizar
as amostras de apenas 5% das linhas das tabelas e desta forma, não vai mais
processar os 180G da sua tabela, apenas 9G (que representa 5%).

--atualizar stats do schema
exec dbms_stats.gather_schema_stats( -
ownname = 'SEUSCHEMA', -
options = 'GATHER AUTO', -
estimate_percent = dbms_stats.auto_sample_size, -
method_opt = 'for all columns size repeat', -
cascade = true, -
degree = 15 -
)

Outra forma, seria vc executar para uma tabela específica:

--atualizar estatisticas de uma só tabela
EXECUTE DBMS_STATS.GATHER_TABLE_STATS(ownname = 'SEUSCHEMA', -
tabname = 'TAB_PARCELAS_CONTRATO_MUTUO', -
method_opt = 'FOR ALL INDEXED COLUMNS SIZE SKEWONLY', -
granularity = 'ALL', -
cascade = TRUE, -
degree = DBMS_STATS.DEFAULT_DEGREE, -
estimate_percent = 5);

Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
, Ednilson Silva ednilson.silva@... escreveu

 Chiappa,
 
 
 
 Tenho uma tabela de 180G e duas outras de 50G, são as maiores do banco em
 apenas um schema.
 
 No momento estou sem acesso ao Metalink, a empresa ainda esta renovando
 contrato.
 
 
 
 No DBMS_STATS.GATHER_SCHEMA_STATS, tem como não executar numa determinada
 tabela?
 
 
 
 Não existe nenhuma outra rotina concorrendo com o
 DBMS_STATS.GATHER_SCHEMA_STATS de madrugada.
 
 
 
 Grato,
 
 
 
 Ednilson Silva





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



RES: [oracle_br] Re: ORA-01652: unable to extend temp

2012-11-28 Por tôpico Ednilson Silva
Chiappa,

 

Obrigado pelas dicas, gerei um script para fazer
DBMS_STATS.GATHER_TABLE_STATS de todas as tabelas e saquei a tabela de 180G,
coloquei para executar hoje a noite todas as tabelas do schema.

 

Grato,

 

Ednilson Silva

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de J. Laurindo Chiappa
Enviada em: quarta-feira, 28 de novembro de 2012 15:04
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: ORA-01652: unable to extend temp

 

  

Segue :

Tenho uma tabela de 180G e duas outras de 50G

Opa, pode ser isso : de repente uma tabela de 180 GB que precise ser
ordenada, sofrer a criação de uma hash table para hash join ou coisas do
tipo pode Sim consumir mais do que os seus 50 GB de temp area numa query
complexa, como são as de coleta de estatística, sim
SE vc tiver o espaço disponível, experimente temporariamente deixar a temp
tablespace com algumas centenas de GBs, pra ver se dá diferença...


No momento estou sem acesso ao Metalink, a empresa ainda esta renovando
contrato.

Isso é um prob sério - como a falha acontece numa rotina interna do RDBMS,
só o Suporte Oracle que pode te confirmar/negar a possibilidade de bug, Além
do que se houver patch disponível é só lá no metalink que vc pode baixar

Tente acelerar o mais possível essa renovação, e nesse meio-tempo d~e uma
goolgada e veja se um DBA de outra Empresa do mesmo grupo que a sua, ou da
matriz, coisas do tipo, pode fazer ao menos umas Consultas mais
precisas/aprofundadas no metalink, em vc fornecendo os detalhes técnicos
todos pra ele...

No DBMS_STATS.GATHER_SCHEMA_STATS, tem como não executar numa determinada
tabela?

afaik Não Tem Não - em tese vc poderia usar as funções de LOCK de
estatísticas na package DBMS_STATS para que essa tal tabela não sofra
coleta, mas é so - pela GATHER_SCHEMA_STATS em si afaik não tem como...
INCLUSIVE, esse foi um dos motivos que me levaram a *** abandonar *** esse
cara completamente há muitos anos, junto com outros (tais como o fato de que
as Mesmas Opções - de porcentual, de tipo/tamanho de histogramas, todas
enfim - que vc indicou na gather_schema_stats vão ser usadas IGUALMENTE para
o schema inteiro : se há tabelas grandes onde vc quer um % diferente, ou uma
Ordem de coleta diferente, etc, Não Tem Como Então eu faço como eu
disse, crio um scriptzinho sql*plus que me gera a lista de comandos
DBMS_STATS.GATHER_TABLE_STATS para cada tabela, aí eu posso o customizar do
jeito que preciso...

Não existe nenhuma outra rotina concorrendo com o
DBMS_STATS.GATHER_SCHEMA_STATS de madrugada 

Vc tem COMPLETA, TOTAl e ABSOLUTA certeza disso ??? Vc realmente MONITOROU
ou está confiando na palavra de alguém  Absolutamente não é Impossível
que oficialmente a janela X deveria ser reservada para a tarefa Y *** mas
*** aí aquele analistazinho ishperto ou aquele usuário importante vai lá e
dispara algo sem vc saber nesse período, E/OU que a tarefa Y que começou
antes da janela não terminou e que ela esteja rodando/consumindo temp area
quando começa a janela das estatísticas... 
== Minha recomendação não muda : vc DEVERIA, se não o fez quando deu o
erro, ter algum tipo de MONITORAMENTO e AUDITORIA DO CONSUMO da temp durante
esse período da coleta, yep ??? Confiar desconfiando, esse é o lema do
DBA...


[]s

Chiappa

OBS : espero que esteja CLARO para vc que as views tipo V$SORT_SEGMENT ,
V$SORT_USAGE , V$SESSION e relacionadas só registram a situação DO MOMENTO :
assim, se vc rodar alguma consulta de consumo de temp AGORA, fora da janela,
e não ver nada, absolutamente Não É Impossível que a consulta não mostrou
nada porque agora não tem consumo/concorrência, MAS que na madrugada lá
TENHA SIM, okdoc ??? Então consultas do ipo TEM QUE SER EXECUTADAS primeiro
imediatamente Antes da coleta, E depois algumas vezes durante , okdoc ? Só
assim vc vai ver a situação Real...


--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
, Ednilson Silva ednilson.silva@... escreveu

 Chiappa,
 
 
 
 Tenho uma tabela de 180G e duas outras de 50G, são as maiores do banco em
 apenas um schema.
 
 No momento estou sem acesso ao Metalink, a empresa ainda esta renovando
 contrato.
 
 
 
 No DBMS_STATS.GATHER_SCHEMA_STATS, tem como não executar numa determinada
 tabela?
 
 
 
 Não existe nenhuma outra rotina concorrendo com o
 DBMS_STATS.GATHER_SCHEMA_STATS de madrugada.
 
 
 
 Grato,
 
 
 
 Ednilson Silva
 
 
 
 De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
[mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
] Em
 nome de J. Laurindo Chiappa
 Enviada em: quarta-feira, 28 de novembro de 2012 12:43
 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br

 Assunto: RES: [oracle_br] Re: ORA-01652: unable to extend temp
 
 
 
 
 
 Bem, pelo que eu vi vc aumentou para coisa de 50 GB (5 datafiles de 10 GB)
a
 sua TEMP : na média de databases que se vê pelaí, isso até deveria ser
 suficiente, mas até pode

RES: [oracle_br] Re: ORA-01652: unable to extend temp

2012-11-27 Por tôpico Ednilson Silva
Chiappa

 

Muito obrigado, já criei um novo tempfile de 17G, irei colocar a rotina para
executar essa noite.

O banco esta com 700GB.

 

Ednilson Silva

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de J. Laurindo Chiappa
Enviada em: terça-feira, 27 de novembro de 2012 15:14
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: ORA-01652: unable to extend temp

 

  

Sim, a msg :

ORA-01652: unable to extend temp segment by 128 in tablespace TEMP

é bem Clara quanto ao esgotamente da tablespace TEMP - se for o caso, vc até
pode obter dados sobre o consumo real de tempspace consultando na hora que
dá essa msg a v$sort_segment/v$sort_usage, OU tendo uma trigger de erro que
faz e automatiza a consulta para vc, OU então (se tiver a Licença
necessária) vc pode obter o histórico recente de utilização de tempspace via
DBA_HIST_TEMPSTATXS e relacionadas, MAS a msg de erro não deixa muita margem
ao diagnóstico de aumento do espaço de tablespace
Sobre o quanto e o que aumentar : o que importa é o total de espaço (e não a
qtdade de tempfiles, isso é largamente Irrelevante),e pelo que vejo vc tem
hoje no total 3 GB - isso é o tamanho de um pendrive, é (num ambiente que
Possui utilização) um tamanho que se pode considerar pequeno Eu diria
para vc passar para pelo menos 10 GB essa tablespace e monitorar o consumo a
partir daí, sendo Irrelevante se vc adicionar o espaço faltante em um, dois
ou x tempfiles, desde Que o seu SO/hardware/ambiente permita arquivos de
qquer tamanho 

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
, Ednilson Silva ednilson.silva@... escreveu

 Pessoal,
 
 
 
 Tenho um banco aqui 10.2.0.4 em Red Hat 5.7 64 Bits, que tem uma rotina em
 crontab para executar o comando abaixo:
 
 
 
 exec dbms_stats.gather_schema_stats(ownname =
'HOMO',estimate_percent=20);
 
 
 
 E não esta concluindo dá o erro abaixo:
 
 
 
 SQL BEGIN dbms_stats.gather_schema_stats(ownname =
 'HOMO',estimate_percent=20); END;
 
 
 
 *
 
 ERROR at line 1:
 
 ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
 
 ORA-06512: at SYS.DBMS_STATS, line 13591
 
 ORA-06512: at SYS.DBMS_STATS, line 13937
 
 ORA-06512: at SYS.DBMS_STATS, line 14015
 
 ORA-06512: at SYS.DBMS_STATS, line 13974
 
 ORA-06512: at line 1
 
 
 
 SQL select * from dba_tablespaces where tablespace_name = 'TEMP';
 
 TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT
 MIN_EXTENTS MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING
 FORCE_LOGGING EXTENT_MANAGEMENT ALLOCATION_TYPE PLUGGED_IN
 SEGMENT_SPACE_MANAGEMENT DEF_TAB_COMPRESSION RETENTION BIGFILE
 
 -- -- -- ---
 --- ---  -- - -
 - - - --- --
  --- --- ---
 
 TEMP 8192 1048576 1048576
 1 0 1048576 ONLINE TEMPORARY NOLOGGING NO
 LOCAL UNIFORM NO MANUAL
 DISABLED NOT APPLY NO
 
 SQL SELECT tablespace_name, file_name, bytes FROM dba_temp_files WHERE
 tablespace_name = 'TEMP';
 
 TABLESPACE_NAME FILE_NAME
 BYTES
 
 ---
 --
  --
 
 TEMP /d004/oradata/prod/temp01.dbf
 1048576000
 
 TEMP /d004/oradata/prod/temp02.dbf
 1048576000
 
 TEMP /d004/oradata/prod/temp03.dbf
 1048576000
 
 
 
 Criando mais um tempfile irá resolver meu problema?
 
 
 
 Grato,
 
 
 
 Ednilson Silva
 
 
 
 [As partes desta mensagem que não continham texto foram removidas]






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