Olá Cyro, Como o irmão Chiappa replicou aqui com o gerenciamento LMT vc não terá preocupações quanto a isso. Mesmo assim vale a pena vc catalogar os objetos que tem aumento considerável de tamanho para que não seja pego de surpresa em momentos críticos. Segue um outro exemplo (antigo) que realiza a tarefa que vc gostaria que fizesse : SET LINESIZE 120 COLUMN TABLESPACE_NAME FORMAT A25 COLUMN SEGMENT_NAME FORMAT A25 COLUMN OWNER FORMAT A20 SELECT OWNER,SEGMENT_NAME, NEXT_EXTENT, S.TABLESPACE_NAME,MAX_FREE_BYTES FROM SYS.DBA_SEGMENTS S, (SELECT TABLESPACE_NAME,MAX(BYTES) MAX_FREE_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F WHERE S.NEXT_EXTENT > F.MAX_FREE_BYTES AND S.TABLESPACE_NAME=F.TABLESPACE_NAME; [ ] ´s Salvio Padlipskas
-----Mensagem original----- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de jlchiappa Enviada em: quinta-feira, 3 de agosto de 2006 16:28 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Script para verificar o next extent - ORA-01653 Os que não conseguirão é o script mais abaixo na resposta, sim , achou ???? Só como eu digo, pra mim isso é abobrinha, é inútil, se vc está gerenciando banco com tablespaces LMT como deveria ser... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Cyro <[EMAIL PROTECTED]> escreveu > > Putz... Me desculpa, foi erro de portugues mesmo. O que eu queria saber era > os que não conseguirão. Valeu pela ajuda mesmo assim. > > On 8/3/06, jlchiappa <[EMAIL PROTECTED]> wrote: > > > > Se vc realmente quis dizer "conseguiram", no passado, o lance é que > > afaik o bd Oracle ** não ** arnmazena a data/hora em que um novo > > segmento foi alocado (só há um id sequencial), assim o que vc pode > > fazer é consultar a DBA_EXTENTS, guardando a situação atual, e daqui > > a algum tempo consulta de novo, veja se entraram segmentos novos , > > embora eu NÃO entenda bem pra que isso te servirá. > > Já se vc quer saber os objetos que NÃO CONSEGUIRÃO , no futuro, > > alocar um novo extent (isso sim tem algum sentido, é evitar o erro > > de "unable to allocate extent") não é difícil, é listar os objetos > > onde o espaço livre nas tablespaces às quais eles pertencem seja > > MENOR do que o NEXT_EXTENT dos objetos, isso fica registrado normal, > > seria algo tipo o exemplo abaixo. NOTAR PORÉM que eu escrevi o que vc > > pediu, mas NÃO FAZ SENTIDO a rotina se vc está usando, como 100% > > RECOMENDADO, tablespaces LMT ** e ** cada grupo de objetos de mesmo > > extent-size numa mesma tablespace, pois em tablespaces LMT o extent- > > size é sempre o MESMO, ou pelo menos múltiplo no caso de > > autoallocated, nesse cenário ao invés de gerenciar espaço por > > segmento, vc gerencia por tablespace : no caso descrito, se vc tem > > digamos 100 objetos na tablespace com extent de 1 Mb, se vc garantir > > que a TABLESPACE tenha 100 Mb livres ao menos vc não obterá o "unable > > to extent". Mas de qquer forma segue o exemplo : > > > > [EMAIL PROTECTED]:SQL>select s.owner, s.segment_type, s.partition_name, > > s.tablespace_name, s.next_extent, sum(f.bytes) livre > > 2 from dba_segments s, dba_free_space f > > 3 where s.owner not in ('SYS') > > 4 and s.tablespace_name = f.tablespace_name > > 5 group by s.owner, s.segment_type, s.partition_name, > > s.tablespace_name, s.next_extent > > 6 having sum(f.bytes) < s.next_extent; > > > > não há linhas selecionadas > > > > ==> veja que durou segundos (apesar de desenvolvimento esse banco não > > é tão pequeno assim), query bem boazinha, nada de mais (ao menos no > > meu banco , 9ir2 EE).... > > > > Decorrido: 00:00:00.05 > > > > ==> já que não tenho nenhum, vou quebrar TODAS as regras de bom- tom > > em gerenciamento de espaço e vou montar um caso : > > > > [EMAIL PROTECTED]:SQL>create tablespace TS_TESTE > > datafile '/u2/oradata/srvdev/dados/ts_teste_01.dbf' size 10M > > 2 extent management dictionary nologging; > > > > Tablespace criado. > > > > Decorrido: 00:00:00.02 > > > > [EMAIL PROTECTED]:SQL>create table TB_TESTE (c1 number) tablespace > > ts_teste storage(initial 1m next 20m) nologging; > > > > Tabela criada. > > > > Decorrido: 00:00:00.00 > > [EMAIL PROTECTED]:SQL>select * from dba_segments where > > segment_name='TB_TESTE'; > > > > OWNER SEGMENT_NAME > > PARTITION_NAME SEGMENT_TYPE > > TABLESPACE_NAME HEADER_FILE > > HEADER_BLOCK BYTES BLOCKS > > ---------------- ----------------------------------- ------------- --- > > -------------- ------------------ ------------------------------ - ---- > > ------------- ------------------ ------------------ -------------- ---- > > ---------- > > SYSTEM > > TB_TESTE > > TABLE TS_TESTE > > 23 2 1064960 > > 130 > > > > Decorrido: 00:00:00.00 > > > > [EMAIL PROTECTED]:SQL>select s.owner, s.segment_type, s.partition_name, > > s.tablespace_name, s.next_extent, sum(f.bytes) livre > > 2 from dba_segments s, dba_free_space f > > 3 where s.owner not in ('SYS') > > 4 and s.tablespace_name = f.tablespace_name > > 5 group by s.owner, s.segment_type, s.partition_name, > > s.tablespace_name, s.next_extent > > 6 having sum(f.bytes) < s.next_extent; > > > > OWNER SEGMENT_TYPE PARTITION_NAME > > TABLESPACE_NAME NEXT_EXTENT LIVRE > > ---------------- ------------------ ------------------------------ -- > > ---------------------------- ------------------ ------------------ > > SYSTEM TABLE > > TS_TESTE 20971520 9412608 > > > > Decorrido: 00:00:00.05 > > > > > > []s > > > > Chiappa > > > > > > > > --- Em oracle_br@yahoogrupos.com.br, Cyro <[EMAIL PROTECTED]> escreveu > > > > > > > > Olá a todos, alguem possui um script para verificar se os objetos > > > conseguiram alocar um next extent ? Eu procurei no google e só > > achei scripts > > > muito pesados. > > > > > > Agradeço desde já. > > > > > > -- > > > [ ]´s Cyro > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > > > -- > [ ]´s Cyro > > > [As partes desta mensagem que não continham texto foram removidas] > [As partes desta mensagem que não continham texto foram removidas] -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __________________________________________________________________ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html