RES: [oracle_br] RES: tamanho das tablespace/datafiles

2012-05-17 Por tôpico Márcio - Grupos Oracle
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

2012-05-17 Por tôpico J. Laurindo Chiappa
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