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]

Responder a