RES: [oracle_br] RES: tamanho das tablespace/datafiles
Ederson, é exatamente esse script, eu tinha ele mas acabei perdendo. Chiappa/Milton, entendi a parte do espaço externo do disco alocado. Hoje eu monitoro o tamanho dos discos diariamente, e tomo cuidado de verificar o espaço antes de criar datafiles para as minhas tablespaces. Obrigado pessoal. De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de ederson2001br Enviada em: Thursday, 17 de May de 2012 13:36 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] RES: tamanho das tablespace/datafiles Márcio, Abaixo o script que eu uso. Ele demora um pouquinho prá rodar, mas traz a consulta bem completa como a que vc está precisando, inclusive avisa quando a área de autoextend está acima de 80% de ocupação de maxextends: -- free.sql set linesize 120; set pagesize 100; select total.name tablespace , lpad(to_char( total_space ,'999,999,999'),12) Alocado (Mb) , lpad(to_char( (total_space - free_space) ,'999,999,999'),12) usado , lpad(to_char( free_space ,'999,999,999'),12) livre , lpad(to_char( (total_space - free_space) * 100 / total_space ,'990.00'),7) PERC_USO , lpad(to_char( mxMbytes ,'999,999,999'),12) mxMbytes , lpad(to_char( DECODE(mxMbytes,0,0,(ebytes / mxMbytes)) * 100 ,'90.00'),7) USEDPCTMX , CASE WHEN DECODE(mxMbytes,0,0,(ebytes / mxMbytes)) * 100 90 THEN '*' ELSE ' ' END obs from (select tablespace_name, sum(bytes/1024/1024) free_space from sys.dba_free_space group by tablespace_name ) free, (SELECT tablespace_name name, SUM(bytes/1024/1024) total_space, SUM(DECODE(maxbytes,0,user_bytes/1024/1024,maxbytes/1024/1024)) mxMbytes FROM sys.dba_data_files GROUP BY tablespace_name ) total, (SELECT tablespace_name tblspc, SUM(bytes/1024/1024) ebytes FROM sys.dba_extents GROUP BY tablespace_name ) Maxspac where free.tablespace_name = total.name and free.tablespace_name = Maxspac.tblspc order by 1; set linesize 90; set pagesize 20; -- Um exemplo de uma execução em uma base de teste: DBANM@nmdes @free TABLESPACE Alocado (Mb) USADO LIVRE PERC_US MXMBYTES USEDPCT OBS -- --- --- - AUDITORIA_IDX 2,048 1 2,047 0.05 204,800 0.00 BASICA_DATA 113,671 112,078 1,593 98.60 204,800 54.73 BASICA_IDX 144,393 115,761 28,632 80.17 204,800 56.52 BASICA_JN 2,048 245 1,803 11.96 204,800 0.12 CAMPOS_BLOB 6,144 2,753 3,392 44.80 204,800 1.34 CLIENTE_DATA 26,626 25,799 827 96.90 204,800 12.60 CLIENTE_IDX 24,577 24,215 363 98.52 204,800 11.82 CONTRATO_DATA 63,492 62,976 516 99.19 204,800 30.75 CONTRATO_IDX 78,853 77,614 1,239 98.43 204,800 37.90 CORREIO_DATA 2,048 268 1,780 13.07 204,800 0.13 CORREIO_IDX 2,048 389 1,659 19.01 204,800 0.19 CRIVO_DATA 985 982 3 99.65 20,000 4.91 CRIVO_IDX 465 458 7 98.45 20,000 2.29 DOC_DATA 50,179 49,207 972 98.06 204,800 24.03 DOC_IDX 52,227 52,125 102 99.81 204,800 25.45 MOVEST_DATA 9,216 8,898 319 96.54 204,800 4.34 OBJBIGSNK 18,433 18,411 22 99.88 102,400 17.98 SENIOR 6,144 5,673 471 92.33 204,800 2.77 SYSAUX 610 496 114 81.36 2,000 24.81 SYSTEM 1,050 1,047 3 99.74 2,000 52.36 UNDOTBS1 2,000 239 1,761 11.95 2,000 12.25 USERS 20,433 20,260 173 99.15 22,480 90.12 * 22 rows selected. 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 , Márcio - Grupos Oracle marcio_cbj@... escreveu Ficou confuso o e-mail que passei, vou tentar descrever melhor o que preciso. Eu tenho uma tablespace, e crio um data file de tamanho de 2GB AUTOEXTEND de 100MB e tamanho máximo 2,5GB. Se eu fizer a consulta vai retornar. Tablespace = dados Tamanho = 2GB Usado = 100MB (digamos que utilizei esse tanto) Espaço livre = 1,9GB. O que eu queria seria assim: Tablespace = dados Tamanho = 2,5GB (gostaria de trazer aqui o maxsize do meu datafile) Usado = 100MB Espaço livre = 2,4GB O espaço em disco eu controlo pelo crontab, e antes de criar qualquer datafile verifico o espaçamento. Grato. 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: Thursday, 17 de May de 2012 11:02 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: [oracle_br] Re: tamanho das tablespace/datafiles Bem, em primeiro lugar eu não sei o que são extents reservados : se vc está falando sobre datafiles AUTOEXTEND, o espaço em disco que ainda estálivre para atender ao pedido de crescimento absolutamente NÂO TEM extent algum, é espaço livre e não-usado no disco... Na suposição que vc realmente o que quer é ter info sobre espaço livre em disco, externo ao banco, potencialmente alocável em qquer pedido de auto-crescimento via datafgle com autoextent , a primeira coisa é que (óbvio) já que esse espaço está EXTERNO ao database, vc dificilmente conseguirá obter essa
Re: RES: [oracle_br] RES: tamanho das tablespace/datafiles
ok : só pra deixar escrupulosamente claro, vc sabe que quando vc cria tablespaces tipo : CREATE TABLESPACE X datafile 'C:\teste01.dbf' size 1 GB autoextend on maxsize 10G; CREATE TABLESPACE Y datafile 'C:\outro.dbf' size 1 GB autoextend on maxsize 10G; CREATE TABLESPACE Z datafile 'C:\aindaoutroteste01.dbf' size 1 GB autoextend on maxsize 10G; saiba que duas coisas ocorrem : = o espaço Alocado em disco para as tablespaces será APENAS de 3 GB = os 30 GB que podem vir a ser exigidos no futuro ABSOLUTAMENTE NÃO SÃO criados/alocados neste momento - isto é Crítico, tem gente que acha que só pelo fato de vc especificar maxsize x no datafile , esse x já fica reservado, o que é Totalmente Inverdade ok ? Então é SUA responsabilidade, e não do RDBMS, se assegurar que todo o espaço que pode ser eventualmente exigido ESTÁ mesmo livre e disponível, certo ? Então não é só olhar na hora de criar a tablespace... E para vc poder fazer a monitoração de espaço livre fora do database vc tem que saber o total que pode vir a ser exigido (ou se não puder ter tudo isso permanentemente livre pelos problemas de custo de alocação que eu citei ou algo assim, ao menos uma fração determinada dessa soma que pode vir a ser exigida), E comparar isso com o que vc tem livre externamente, para só então poder julgar se o espaço livre nos discos/filesystems está adequado ou não... Se isso tudo está claro, perfeito, vc não deve ter problema nenhum na sua monitoração, e nem será surpreendido por erros de unable to allocate space... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Márcio - Grupos Oracle marcio_cbj@... escreveu Ederson, é exatamente esse script, eu tinha ele mas acabei perdendo. Chiappa/Milton, entendi a parte do espaço externo do disco alocado. Hoje eu monitoro o tamanho dos discos diariamente, e tomo cuidado de verificar o espaço antes de criar datafiles para as minhas tablespaces. Obrigado pessoal. De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de ederson2001br Enviada em: Thursday, 17 de May de 2012 13:36 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] RES: tamanho das tablespace/datafiles Márcio, Abaixo o script que eu uso. Ele demora um pouquinho prá rodar, mas traz a consulta bem completa como a que vc está precisando, inclusive avisa quando a área de autoextend está acima de 80% de ocupação de maxextends: -- free.sql set linesize 120; set pagesize 100; select total.name tablespace , lpad(to_char( total_space ,'999,999,999'),12) Alocado (Mb) , lpad(to_char( (total_space - free_space) ,'999,999,999'),12) usado , lpad(to_char( free_space ,'999,999,999'),12) livre , lpad(to_char( (total_space - free_space) * 100 / total_space ,'990.00'),7) PERC_USO , lpad(to_char( mxMbytes ,'999,999,999'),12) mxMbytes , lpad(to_char( DECODE(mxMbytes,0,0,(ebytes / mxMbytes)) * 100 ,'90.00'),7) USEDPCTMX , CASE WHEN DECODE(mxMbytes,0,0,(ebytes / mxMbytes)) * 100 90 THEN '*' ELSE ' ' END obs from (select tablespace_name, sum(bytes/1024/1024) free_space from sys.dba_free_space group by tablespace_name ) free, (SELECT tablespace_name name, SUM(bytes/1024/1024) total_space, SUM(DECODE(maxbytes,0,user_bytes/1024/1024,maxbytes/1024/1024)) mxMbytes FROM sys.dba_data_files GROUP BY tablespace_name ) total, (SELECT tablespace_name tblspc, SUM(bytes/1024/1024) ebytes FROM sys.dba_extents GROUP BY tablespace_name ) Maxspac where free.tablespace_name = total.name and free.tablespace_name = Maxspac.tblspc order by 1; set linesize 90; set pagesize 20; -- Um exemplo de uma execução em uma base de teste: DBANM@nmdes @free TABLESPACE Alocado (Mb) USADO LIVRE PERC_US MXMBYTES USEDPCT OBS -- --- --- - AUDITORIA_IDX 2,048 1 2,047 0.05 204,800 0.00 BASICA_DATA 113,671 112,078 1,593 98.60 204,800 54.73 BASICA_IDX 144,393 115,761 28,632 80.17 204,800 56.52 BASICA_JN 2,048 245 1,803 11.96 204,800 0.12 CAMPOS_BLOB 6,144 2,753 3,392 44.80 204,800 1.34 CLIENTE_DATA 26,626 25,799 827 96.90 204,800 12.60 CLIENTE_IDX 24,577 24,215 363 98.52 204,800 11.82 CONTRATO_DATA 63,492 62,976 516 99.19 204,800 30.75 CONTRATO_IDX 78,853 77,614 1,239 98.43 204,800 37.90 CORREIO_DATA 2,048 268 1,780 13.07 204,800 0.13 CORREIO_IDX 2,048 389 1,659 19.01 204,800 0.19 CRIVO_DATA 985 982 3 99.65 20,000 4.91 CRIVO_IDX 465 458 7 98.45 20,000 2.29 DOC_DATA 50,179 49,207 972 98.06 204,800 24.03 DOC_IDX 52,227 52,125 102 99.81 204,800 25.45 MOVEST_DATA 9,216 8,898 319 96.54 204,800 4.34 OBJBIGSNK 18,433 18,411 22 99.88 102,400 17.98 SENIOR 6,144 5,673 471 92.33 204,800 2.77 SYSAUX 610 496 114 81.36 2,000 24.81 SYSTEM 1,050 1,047 3 99.74 2,000 52.36 UNDOTBS1 2,000 239 1,761 11.95 2,000 12.25 USERS 20,433 20,260 173 99.15 22,480 90.12 * 22 rows selected. Ederson Elias DBA Oracle