Re: [oracle_br] Re: ORA-1653: unable to extend table OWNER.TABELA by 128 in tablespace XXX
Opa Chiappa, Exato, falei errado. Gerenciado Automático de Espaço (SEGMENT SPACE MANAGEMENT AUTO) :P O cenário é exatamente este! Vários schemas (um para cada cliente) com tabelas idênticas, muitas vezes export/import feito pelo próprio cliente para se criar schemas novos, tabelas pequenas e algumas poucas bem grandes. Vou agendar um MOVE destes objetos com uma redefinição de parâmetros de STORAGE e analisar os resultados. Mais uma vez obrigado. Sds, Marcelo 2009/9/29 jlchiappa > > > Segue : > > > > Ok, vamos lá: > > O banco é 10.2.0.4 64bits Linux, a tablespace é gerenciada localmente, > > > usando gerenciamento automático de segmentos. > > "gerenciamento automático de segmentos" não faz sentido, deve ser > "gerenciamento automático de ** ESPAÇO ** nos segmentos" , ou seja, o > PCTFREE/PCTUSED, quanto espaço é livre pra INSERTs e quanto fica reservado > para UPDATEs , mas isso é NOS BLOCOS, dificilmente isso ia influenciar o > cenário em questão > > > SEGMENT SPACE MANAGEMENT AUTO > > OK, confirmando que é gerenciamento automático de ESPAÇO dentro dos > segmentos, ok ... > > > FLASHBACK ON; > > > > Sum na DBA_SEGMENTS (em MB): 24403,5625 > > Sum na DBA_DATA_FILES (em MB): 3 > > > Não consegui enxergar nada na dba_free_space. > > se não há nada pra essa tablespace na DBA_FREE_SPACE não deve ter espaço > livre, o que DEVE ter espaço é alocado mas não usado devido à extents > enormemente grandes... > > > > > Ao consultar a DBA_SEGMENTS, vi que o NEXT_EXTENT está vazio > (provavelmente > > por causa do gerenciamento automático) > > sim, isso mesmo... > > >> mas achei os INITIAL_EXTENT de > > algumas tabelas muito altos (1167523840, 412876800, 377880576, etc). > > bingo ! vc achou a causa, muito certamente Veja vc, o banco Oracle > SEMPRE aloca espaço por extents, E mesmo uma tabela vazia ao ser criada ele > já aloca um extent pra ela : com esses INITIALs absolutamente MALUCOS , > assim que vc criar uma tabela de cara ele já alocou eses milhões todos aí > (divididos em extents de 64 Kb, depois 1 Mb, já que é AUTO, mas quantos > extents forem necessários pra obedecer à esse INITIAL doido) - aposto um > picolé de limão que o que vc tem aísão tabelas PEQUENAS mas com montes de > espaços em branco sem uso no extent inicial, o que consumiu rapidamente o > seu espaço disponível, aí quando o bd tenta alocar espaço na tablespace não > encontra, pois o que havia está alocado (embora sem uso), aí só quando vc > adiciona mais espaço livre é que ele consegue crescer Não tem o que > pensar, é REALOCAR esses extents absurdos, seja com MOVE/REBUILD seja com > DBMS_REDEF, sim... Um detalhe, muitas vezes quando vc vê extents assim tão > grandes foi porque neguinho fez IMPORT de um EXPORT aonde ** não ** foi > especificado COMPRESS=N, aí ele 'somou' os extents totais do origem no > INITIAL do destino... > > []s > > Chiappa > > > [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: ORA-1653: unable to extend table OWNER.TABELA by 128 in tablespace XXX
Segue : > Ok, vamos lá: > O banco é 10.2.0.4 64bits Linux, a tablespace é gerenciada localmente, > usando gerenciamento automático de segmentos. "gerenciamento automático de segmentos" não faz sentido, deve ser "gerenciamento automático de ** ESPAÇO ** nos segmentos" , ou seja, o PCTFREE/PCTUSED, quanto espaço é livre pra INSERTs e quanto fica reservado para UPDATEs , mas isso é NOS BLOCOS, dificilmente isso ia influenciar o cenário em questão > SEGMENT SPACE MANAGEMENT AUTO OK, confirmando que é gerenciamento automático de ESPAÇO dentro dos segmentos, ok ... > FLASHBACK ON; > > Sum na DBA_SEGMENTS (em MB): 24403,5625 > Sum na DBA_DATA_FILES (em MB): 3 > Não consegui enxergar nada na dba_free_space. se não há nada pra essa tablespace na DBA_FREE_SPACE não deve ter espaço livre, o que DEVE ter espaço é alocado mas não usado devido à extents enormemente grandes... > > Ao consultar a DBA_SEGMENTS, vi que o NEXT_EXTENT está vazio (provavelmente > por causa do gerenciamento automático) sim, isso mesmo... >> mas achei os INITIAL_EXTENT de > algumas tabelas muito altos (1167523840, 412876800, 377880576, etc). bingo ! vc achou a causa, muito certamente Veja vc, o banco Oracle SEMPRE aloca espaço por extents, E mesmo uma tabela vazia ao ser criada ele já aloca um extent pra ela : com esses INITIALs absolutamente MALUCOS , assim que vc criar uma tabela de cara ele já alocou eses milhões todos aí (divididos em extents de 64 Kb, depois 1 Mb, já que é AUTO, mas quantos extents forem necessários pra obedecer à esse INITIAL doido) - aposto um picolé de limão que o que vc tem aísão tabelas PEQUENAS mas com montes de espaços em branco sem uso no extent inicial, o que consumiu rapidamente o seu espaço disponível, aí quando o bd tenta alocar espaço na tablespace não encontra, pois o que havia está alocado (embora sem uso), aí só quando vc adiciona mais espaço livre é que ele consegue crescer Não tem o que pensar, é REALOCAR esses extents absurdos, seja com MOVE/REBUILD seja com DBMS_REDEF, sim... Um detalhe, muitas vezes quando vc vê extents assim tão grandes foi porque neguinho fez IMPORT de um EXPORT aonde ** não ** foi especificado COMPRESS=N, aí ele 'somou' os extents totais do origem no INITIAL do destino... []s Chiappa
Re: [oracle_br] Re: ORA-1653: unable to extend table OWNER.TABELA by 128 in tablespace XXX
Ok, vamos lá: O banco é 10.2.0.4 64bits Linux, a tablespace é gerenciada localmente, usando gerenciamento automático de segmentos. Segue DDL (com nomes alterados para preservar o cliente) CREATE TABLESPACE DADOS DATAFILE 'z1.dbf' SIZE 5000M AUTOEXTEND OFF, 'z2.dbf' SIZE 5000M AUTOEXTEND OFF, 'z3.dbf' SIZE 5000M AUTOEXTEND OFF, 'z4.dbf' SIZE 5000M AUTOEXTEND OFF, () LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON; Sum na DBA_SEGMENTS (em MB): 24403,5625 Sum na DBA_DATA_FILES (em MB): 3 Ao consultar a DBA_SEGMENTS, vi que o NEXT_EXTENT está vazio (provavelmente por causa do gerenciamento automático) mas achei os INITIAL_EXTENT de algumas tabelas muito altos (1167523840, 412876800, 377880576, etc). Não consegui enxergar nada na dba_free_space. Executamos semanalmente um SHRINK TABLE em todas as tabelas. Seriam eles (os INITIAL) os culpados? Abraços, Marcelo 2009/9/29 jlchiappa > > > Com certeza, UMA VEZ o colega lá comprovando que é extent size errado na > definição do segmento sem dúvida... Já se o problema for tablespace DMT > fragmentando, aí muito mais recomendável seria se criar uma ** OUTRA ** LMT > e mover, sim, mas o passo ZERO é descobrir a causa pra se poder aplicar o > remédio... > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br , > Marcos Fontana escreveu > > > > > Será que um DBMS_REDEFINITION não cai bem ai não? Talvez fazer um move > > também dos objtos uma tablespace de manobra e depois retornar? > > > > Atenciosamente, > > > > Marcos Fontana > > DBA Oracle > > > > 2009/9/29 jlchiappa > > > > > > > > > > > > Não necessariamente : se vc tiver a tablespace como gerenciada por > > > dicionário pode acontecer a fragmentação real (ie, extents fisicamente > de > > > tamanhos totalmente diferentes e não-múltiplos), enquanto se vc tiver > > > tablespace gerenciada por bitmap, o caso principal aonde poderia haver > a > > > situação que vc descreve é , por erro total vc tem uma tabela com > extent > > > sizes extremamente grandes, aí se for alocação física de 1 mb o banco > vai > > > querer 'somar' tantos extents de 1 Mb quanto necessários pra atender ao > seu > > > extent size monstruoso da tabela, e se for autoallocate o banco vai > somar > > > primeiro extents de 64 Kb, depois de 1Mb, assim por diante, até > alcançar o > > > que vc pediu de extent size na tabela... Todas essas situações vc vê > > > consultando as views citadas. > > > > > > []s > > > > > > Chiappa > > > --- Em oracle_br@yahoogrupos.com.br > > > 40yahoogrupos.com.br>, > > > Marcelo Medrado escreveu > > > > > > > > Chiappa, > > > > Isso teria alguma coisa a ver com o modo de alocação da tablespace > ser > > > > uniforme (1MB) ou automático? > > > > > > > > Vou fazer a verificação solicitada. > > > > > > > > Abraços, > > > > > > > > Marcelo > > > > > > > > > > > > 2009/9/28 jlchiappa > > > > > > > > > > > > > > > > > > > A ** primeira ** coisa que a gente pensa é FRAGMENTAÇÃO real, ie, > que > > > vc > > > > > tem TAMANHOS DE EXTENTs diferentes e não-múltiplos na mesma > tablespace, > > > aí > > > > > os tais espaços livres que o OEM te diz são de tamanhos DIFERENTES > do > > > extent > > > > > que a tabela que ficou sem espaço precisou alocar, aínão tem como > ser > > > usado > > > > > esse espaço... VERIFIQUE os tamanhos de extents pra essa > tablespace, > > > tanto > > > > > na DBA_SEGMENTS quanto na DBA_FREE_SPACE , veja se é isso... > > > > > > > > > > []s > > > > > > > > > > Chiappa > > > > > --- Em > > > > > oracle_br@yahoogrupos.com.br 40yahoogrupos.com.br> > > 40yahoogrupos.com.br>, > > > > > Marcelo Medrado escreveu > > > > > > > > > > > > > > > > > Prezados, > > > > > > Este erro parece simples porém o que ocorre é que trata-se de uma > > > > > tablespace > > > > > > de 30Gb (vários datafiles) onde existem 6Gb livres, de acordo com > o > > > > > > Enterprise Manager. > > > > > > > > > > > > Ou seja: Existe espaço em disco (a não ser que o Enterprise > Manager > > > > > esteja > > > > > > furado) e ele não consegue alocar. Quando eu aumento o datafile > (ou > > > crio > > > > > > outro), o erro pára de ocorrer (como se eu tivesse uma área morta > que > > > não > > > > > > está sendo usada). > > > > > > > > > > > > Alguém já passou por isso por aqui? > > > > > > > > > > > > Abraços, > > > > > > > > > > > > Marcelo Medrado > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram > removidas] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: ORA-1653: unable to extend table OWNER.TABELA by 128 in tablespace XXX
Com certeza, UMA VEZ o colega lá comprovando que é extent size errado na definição do segmento sem dúvida... Já se o problema for tablespace DMT fragmentando, aí muito mais recomendável seria se criar uma ** OUTRA ** LMT e mover, sim, mas o passo ZERO é descobrir a causa pra se poder aplicar o remédio... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcos Fontana escreveu > > Será que um DBMS_REDEFINITION não cai bem ai não? Talvez fazer um move > também dos objtos uma tablespace de manobra e depois retornar? > > Atenciosamente, > > Marcos Fontana > DBA Oracle > > 2009/9/29 jlchiappa > > > > > > > Não necessariamente : se vc tiver a tablespace como gerenciada por > > dicionário pode acontecer a fragmentação real (ie, extents fisicamente de > > tamanhos totalmente diferentes e não-múltiplos), enquanto se vc tiver > > tablespace gerenciada por bitmap, o caso principal aonde poderia haver a > > situação que vc descreve é , por erro total vc tem uma tabela com extent > > sizes extremamente grandes, aí se for alocação física de 1 mb o banco vai > > querer 'somar' tantos extents de 1 Mb quanto necessários pra atender ao seu > > extent size monstruoso da tabela, e se for autoallocate o banco vai somar > > primeiro extents de 64 Kb, depois de 1Mb, assim por diante, até alcançar o > > que vc pediu de extent size na tabela... Todas essas situações vc vê > > consultando as views citadas. > > > > []s > > > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br , > > Marcelo Medrado escreveu > > > > > > Chiappa, > > > Isso teria alguma coisa a ver com o modo de alocação da tablespace ser > > > uniforme (1MB) ou automático? > > > > > > Vou fazer a verificação solicitada. > > > > > > Abraços, > > > > > > Marcelo > > > > > > > > > 2009/9/28 jlchiappa > > > > > > > > > > > > > > > A ** primeira ** coisa que a gente pensa é FRAGMENTAÇÃO real, ie, que > > vc > > > > tem TAMANHOS DE EXTENTs diferentes e não-múltiplos na mesma tablespace, > > aí > > > > os tais espaços livres que o OEM te diz são de tamanhos DIFERENTES do > > extent > > > > que a tabela que ficou sem espaço precisou alocar, aínão tem como ser > > usado > > > > esse espaço... VERIFIQUE os tamanhos de extents pra essa tablespace, > > tanto > > > > na DBA_SEGMENTS quanto na DBA_FREE_SPACE , veja se é isso... > > > > > > > > []s > > > > > > > > Chiappa > > > > --- Em oracle_br@yahoogrupos.com.br > > > > > 40yahoogrupos.com.br>, > > > > Marcelo Medrado escreveu > > > > > > > > > > > > > > Prezados, > > > > > Este erro parece simples porém o que ocorre é que trata-se de uma > > > > tablespace > > > > > de 30Gb (vários datafiles) onde existem 6Gb livres, de acordo com o > > > > > Enterprise Manager. > > > > > > > > > > Ou seja: Existe espaço em disco (a não ser que o Enterprise Manager > > > > esteja > > > > > furado) e ele não consegue alocar. Quando eu aumento o datafile (ou > > crio > > > > > outro), o erro pára de ocorrer (como se eu tivesse uma área morta que > > não > > > > > está sendo usada). > > > > > > > > > > Alguém já passou por isso por aqui? > > > > > > > > > > Abraços, > > > > > > > > > > Marcelo Medrado > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] >
Re: [oracle_br] Re: ORA-1653: unable to extend table OWNER.TABELA by 128 in tablespace XXX
Será que um DBMS_REDEFINITION não cai bem ai não? Talvez fazer um move também dos objtos uma tablespace de manobra e depois retornar? Atenciosamente, Marcos Fontana DBA Oracle 2009/9/29 jlchiappa > > > Não necessariamente : se vc tiver a tablespace como gerenciada por > dicionário pode acontecer a fragmentação real (ie, extents fisicamente de > tamanhos totalmente diferentes e não-múltiplos), enquanto se vc tiver > tablespace gerenciada por bitmap, o caso principal aonde poderia haver a > situação que vc descreve é , por erro total vc tem uma tabela com extent > sizes extremamente grandes, aí se for alocação física de 1 mb o banco vai > querer 'somar' tantos extents de 1 Mb quanto necessários pra atender ao seu > extent size monstruoso da tabela, e se for autoallocate o banco vai somar > primeiro extents de 64 Kb, depois de 1Mb, assim por diante, até alcançar o > que vc pediu de extent size na tabela... Todas essas situações vc vê > consultando as views citadas. > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br , > Marcelo Medrado escreveu > > > > Chiappa, > > Isso teria alguma coisa a ver com o modo de alocação da tablespace ser > > uniforme (1MB) ou automático? > > > > Vou fazer a verificação solicitada. > > > > Abraços, > > > > Marcelo > > > > > > 2009/9/28 jlchiappa > > > > > > > > > > > A ** primeira ** coisa que a gente pensa é FRAGMENTAÇÃO real, ie, que > vc > > > tem TAMANHOS DE EXTENTs diferentes e não-múltiplos na mesma tablespace, > aí > > > os tais espaços livres que o OEM te diz são de tamanhos DIFERENTES do > extent > > > que a tabela que ficou sem espaço precisou alocar, aínão tem como ser > usado > > > esse espaço... VERIFIQUE os tamanhos de extents pra essa tablespace, > tanto > > > na DBA_SEGMENTS quanto na DBA_FREE_SPACE , veja se é isso... > > > > > > []s > > > > > > Chiappa > > > --- Em oracle_br@yahoogrupos.com.br > > > 40yahoogrupos.com.br>, > > > Marcelo Medrado escreveu > > > > > > > > > > > Prezados, > > > > Este erro parece simples porém o que ocorre é que trata-se de uma > > > tablespace > > > > de 30Gb (vários datafiles) onde existem 6Gb livres, de acordo com o > > > > Enterprise Manager. > > > > > > > > Ou seja: Existe espaço em disco (a não ser que o Enterprise Manager > > > esteja > > > > furado) e ele não consegue alocar. Quando eu aumento o datafile (ou > crio > > > > outro), o erro pára de ocorrer (como se eu tivesse uma área morta que > não > > > > está sendo usada). > > > > > > > > Alguém já passou por isso por aqui? > > > > > > > > Abraços, > > > > > > > > Marcelo Medrado > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: ORA-1653: unable to extend table OWNER.TABELA by 128 in tablespace XXX
Não necessariamente : se vc tiver a tablespace como gerenciada por dicionário pode acontecer a fragmentação real (ie, extents fisicamente de tamanhos totalmente diferentes e não-múltiplos), enquanto se vc tiver tablespace gerenciada por bitmap, o caso principal aonde poderia haver a situação que vc descreve é , por erro total vc tem uma tabela com extent sizes extremamente grandes, aí se for alocação física de 1 mb o banco vai querer 'somar' tantos extents de 1 Mb quanto necessários pra atender ao seu extent size monstruoso da tabela, e se for autoallocate o banco vai somar primeiro extents de 64 Kb, depois de 1Mb, assim por diante, até alcançar o que vc pediu de extent size na tabela... Todas essas situações vc vê consultando as views citadas. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Medrado escreveu > > Chiappa, > Isso teria alguma coisa a ver com o modo de alocação da tablespace ser > uniforme (1MB) ou automático? > > Vou fazer a verificação solicitada. > > Abraços, > > Marcelo > > > 2009/9/28 jlchiappa > > > > > > > A ** primeira ** coisa que a gente pensa é FRAGMENTAÇÃO real, ie, que vc > > tem TAMANHOS DE EXTENTs diferentes e não-múltiplos na mesma tablespace, aí > > os tais espaços livres que o OEM te diz são de tamanhos DIFERENTES do extent > > que a tabela que ficou sem espaço precisou alocar, aínão tem como ser usado > > esse espaço... VERIFIQUE os tamanhos de extents pra essa tablespace, tanto > > na DBA_SEGMENTS quanto na DBA_FREE_SPACE , veja se é isso... > > > > []s > > > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br , > > Marcelo Medrado escreveu > > > > > > > > Prezados, > > > Este erro parece simples porém o que ocorre é que trata-se de uma > > tablespace > > > de 30Gb (vários datafiles) onde existem 6Gb livres, de acordo com o > > > Enterprise Manager. > > > > > > Ou seja: Existe espaço em disco (a não ser que o Enterprise Manager > > esteja > > > furado) e ele não consegue alocar. Quando eu aumento o datafile (ou crio > > > outro), o erro pára de ocorrer (como se eu tivesse uma área morta que não > > > está sendo usada). > > > > > > Alguém já passou por isso por aqui? > > > > > > Abraços, > > > > > > Marcelo Medrado > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] >
Re: [oracle_br] Re: ORA-1653: unable to extend table OWNER.TABELA by 128 in tablespace XXX
Chiappa, Isso teria alguma coisa a ver com o modo de alocação da tablespace ser uniforme (1MB) ou automático? Vou fazer a verificação solicitada. Abraços, Marcelo 2009/9/28 jlchiappa > > > A ** primeira ** coisa que a gente pensa é FRAGMENTAÇÃO real, ie, que vc > tem TAMANHOS DE EXTENTs diferentes e não-múltiplos na mesma tablespace, aí > os tais espaços livres que o OEM te diz são de tamanhos DIFERENTES do extent > que a tabela que ficou sem espaço precisou alocar, aínão tem como ser usado > esse espaço... VERIFIQUE os tamanhos de extents pra essa tablespace, tanto > na DBA_SEGMENTS quanto na DBA_FREE_SPACE , veja se é isso... > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br , > Marcelo Medrado escreveu > > > > > Prezados, > > Este erro parece simples porém o que ocorre é que trata-se de uma > tablespace > > de 30Gb (vários datafiles) onde existem 6Gb livres, de acordo com o > > Enterprise Manager. > > > > Ou seja: Existe espaço em disco (a não ser que o Enterprise Manager > esteja > > furado) e ele não consegue alocar. Quando eu aumento o datafile (ou crio > > outro), o erro pára de ocorrer (como se eu tivesse uma área morta que não > > está sendo usada). > > > > Alguém já passou por isso por aqui? > > > > Abraços, > > > > Marcelo Medrado > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: ORA-1653: unable to extend table OWNER.TABELA by 128 in tablespace XXX
A ** primeira ** coisa que a gente pensa é FRAGMENTAÇÃO real, ie, que vc tem TAMANHOS DE EXTENTs diferentes e não-múltiplos na mesma tablespace, aí os tais espaços livres que o OEM te diz são de tamanhos DIFERENTES do extent que a tabela que ficou sem espaço precisou alocar, aínão tem como ser usado esse espaço... VERIFIQUE os tamanhos de extents pra essa tablespace, tanto na DBA_SEGMENTS quanto na DBA_FREE_SPACE , veja se é isso... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Medrado escreveu > > Prezados, > Este erro parece simples porém o que ocorre é que trata-se de uma tablespace > de 30Gb (vários datafiles) onde existem 6Gb livres, de acordo com o > Enterprise Manager. > > Ou seja: Existe espaço em disco (a não ser que o Enterprise Manager esteja > furado) e ele não consegue alocar. Quando eu aumento o datafile (ou crio > outro), o erro pára de ocorrer (como se eu tivesse uma área morta que não > está sendo usada). > > Alguém já passou por isso por aqui? > > Abraços, > > Marcelo Medrado > > > [As partes desta mensagem que não continham texto foram removidas] >