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 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>
<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]
>





[As partes desta mensagem que não continham texto foram removidas]

Responder a