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@yahoogrupos.com.br] Em nome de J. Laurindo Chiappa Enviada em: Thursday, 17 de May de 2012 11:02 Para: oracle_br@yahoogrupos.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 informação via dicionário de dados, vc terá que utilizar (num shell-script, talvez) algum comando do SO que dê espaço livre (du ou df , o que vc tiver), gravar essa informação (num arquivo-texto, talvez) e depois a usar no seu script, lendo o arq-texto como external table, provavelmente... Obtido o espaço livree em disco, temos a segunda dificuldade, que é : normalmente vc tem um filesystem /ORADADOS ou similar, e todos os datafiles estão nele, então vc pode ter múltiplos datafiles AUTOEXTEND em múltiplas tablespaces todos residindo no mesmo filesystem /ORADADOS , como é que vc vai saber se o espaço livre vai ser alocado pratablespace x, y ou z ?? Não sabe... ] Então a minha Recomendação pro seu script é : uma vez que vc obteve o espaço livre em disco que pode ser requisitado pros datafiles AUTOEXTEND, vc mostre essa soma como uma nova consulta no seu script , abaixo da consulta atual, E tenha também um algoritmo de aviso - por exemplo, some 10% do tamanho total de cada tablespace que pode serauto-extendida e aí o seu script avisa se o espaço livre que pode ser alocado é inferior à isso , algo assim.. []s Chiappa --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> , Márcio - Grupos Oracle <marcio_cbj@...> escreveu > > Bom dia! > > > > Hoje eu tenho o seguinte script que utilizo para monitoramento das minhas > tablespaces: > > > > SELECT ts.tablespace_name, "File Count", > > TRUNC("SIZE(MB)", 0) "Size(MB)", > > TRUNC(fr."FREE(MB)", 0) "Free(MB)", > > --TRUNC("SIZE(MB)" - "FREE(MB)", 2) "Used(MB)", > > TRUNC("SIZE(MB)" - "FREE(MB)", 0) "Used(MB)", > > df."MAX_EXT" "Max Ext(MB)", > > (fr."FREE(MB)" / df."SIZE(MB)") * 100 "% Free", > > RPAD('*', TRUNC(CEIL((fr."FREE(MB)" / df."SIZE(MB)") * 100)/10), '*') > "Graph" > > FROM (SELECT tablespace_name, > > SUM (bytes) / (1024 * 1024) "FREE(MB)" > > FROM dba_free_space > > WHERE TABLESPACE_NAME NOT IN ('SYSTEM', 'SYSAUX', 'UNDOTBS', 'USERS', > 'USER_DATA', 'UNDOTBS1', 'UNDO') > > GROUP BY tablespace_name) fr, > > (SELECT tablespace_name, SUM(bytes) / (1024 * 1024) "SIZE(MB)", COUNT(*) > > "File Count", SUM(maxbytes) / (1024 * 1024) "MAX_EXT" > > FROM dba_data_files > > GROUP BY tablespace_name) df, > > (SELECT tablespace_name > > FROM dba_tablespaces > > WHERE TABLESPACE_NAME NOT IN ('SYSTEM', 'SYSAUX', 'UNDOTBS', 'USERS', > 'USER_DATA', 'UNDOTBS1', 'UNDO')) ts > > WHERE fr.tablespace_name = df.tablespace_name (+) > > AND fr.tablespace_name = ts.tablespace_name (+) > > ORDER BY ts.tablespace_name > > > > Ele não é 100% confiável, pois não pega o tamanho total da tablespace, ou > seja, o tamanho que foi criado + os extents que estão "reservados" para > crescer mais. > > > > Tenho como adaptar ou montar outro script que retorne o espaço livre da > tablespace = (tamanho tablespace + máximo extents)- utilizado? > > > > Oracle 10.2.0.5 > > > > Obrigado. > > > > [As partes desta mensagem que não continham texto foram removidas] > [As partes desta mensagem que não continham texto foram removidas]