Re: [oracle_br] Re: Dúvida Armazenamento

2006-01-10 Por tôpico thiagomz
Mais uma aula do Mestre Chiappa 


Thiago M. Zerbinato
Oracle Certified Professional
Linux Professional desde 1997
Ribeirao Preto / SP
---
http://thiagomz.hpg.com.br
Linux User  #286429
Debian User #534

Primeiro eles o ignoram. Depois riem de voce. Entao eles
o combatem. Ai voce vence

Mohandas Gandhi


jlchiappa wrote:
 ** Nenhuma ** necessidade de coleta de estatística só pra saber uso 
 de espaço, isso já é AUTOMATICAMENTE registrado nas views do sistema, 
 assim :
 
 SQL*Plus: Release 9.2.0.5.0 - Production on Seg Jan 9 09:45:20 2006
 
 Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
 
 
 Conectado a:
 Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
 With the Partitioning, Oracle Label Security, OLAP and Oracle Data 
 Mining options
 JServer Release 9.2.0.5.0 - Production
 
 [EMAIL PROTECTED]:SQLcreate tablespace TESTE datafile 'D:\O9IR2\O9IR2
 \TESTE.DBF' size 50m autoextend on;
 
 Tablespace criado.
 
 
 == primeiro ponto, DEPENDENDO da versão, o default é tablespace LMT 
 (Local-Managed Tablespace), com extents de tamanho variável 
 controlados pelo sistema, é o meu caso :
 [EMAIL PROTECTED]:SQLselect * from dba_tablespaces where 
 tablespace_name='TESTE';
 
 TABLESPACE_NAMEBLOCK_SIZE 
 INITIAL_EXTENTNEXT_EXTENTMIN_EXTENTS
 MAX_EXTENTS   PCT_INCREASE MIN_EXTLEN STATUSCONTENTS  
 LOGGING   FOR EXTENT_MAN ALLOCATIO PLU SEGMEN
 -- -- -- -
 - -- -- --
  -- - - - --- -- -
  --- --
 TESTE8192  
 65536 1 
 2147483645 65536 ONLINEPERMANENT 
 LOGGING   NO  LOCAL  SYSTEMNO  MANUAL
 
 == já que é LMT, de cara em cima da qtdade que vc especificou o 
 banco SUBTRAI 64Kb, pra criar o bitmap de controle : veja que eu 
 especifiquei 50 Mb (ie, 52428800 bytes, coluna BYTES abaixo), só 
 obtive disponível pra mim 52363264 bytes (coluna USER_BYTES) :
 
 [EMAIL PROTECTED]:SQLselect * from dba_data_files where 
 tablespace_name='TESTE';
 
 FILE_NAME 
   FILE_ID TABLESPACE_NAME 
 BYTES BLOCKS STATUS  RELATIVE_FNO AUT   
 MAXBYTES  MAXBLOCKS   INCREMENT_BY 
 USER_BYTESUSER_BLOCKS
  -
 - -- -- --
  - -- --- -- -
 - -- -- --
 
 D:\O9IR2\O9IR2
 \TESTE.DBF
  11 TESTE52428800   
 6400 AVAILABLE 11 YES34359721984
 4194302  1   52363264   6392
 
 == vamos ver quanto tenho nunca usado, ie, totalmente disponível :
 
 [EMAIL PROTECTED]:SQLl
   1  select * from dba_free_space
   2* where tablespace_name='TESTE'
 [EMAIL PROTECTED]:SQL/
 
 TABLESPACE_NAME   FILE_ID   
 BLOCK_ID  BYTES BLOCKS   RELATIVE_FNO
 -- -- -- -
 - -- --
 TESTE  11  
 9   52363264   6392 11
 
 == exato e perfeito, tenho 52363264 livres, é isso mesmo ... Agora 
 vamos criar um objeto que consome espaço, tabela pra seguir o seu 
 caso :
 
 [EMAIL PROTECTED]:SQLcreate table teste
   2   (id number)
   3   tablespace teste
   4  storage (initial 10m next 1m);
 
 Tabela criada.
 
 == Aqui é que entra o CONCEITO-CHAVE pra se entender storage no bd 
 Oracle, que é provavelmente onde vc está falhando : pra ter sempre a 
 maior performance possível em INSERTs, o bd Oracle usa de vários 
 trucões, um deles é : quando vc cria uma objeto de banco que consome 
 espaço em disco (tabela, índice, o que for), nesse EXATO momento, 
 mesmo estando inicialmente vazio, o bd ** IMEDIATAMENTE ** já cria, 
 aloca e reserva dentro da tablespace o espaço inicial (o initial 
 extent). A vantagem disso é que quando chegarem os INSERTs, o espaço 
 JÀ ESTARÁ formatado, prontinho pra usar... Trucão básico. Vamos ver 
 que é isso mesmo :
 
 [EMAIL PROTECTED]:SQLselect * from dba_free_space
   2  where tablespace_name='TESTE';
 
 TABLESPACE_NAME   FILE_ID   
 BLOCK_ID  BYTES BLOCKS   RELATIVE_FNO
 -- -- -- -
 - 

[oracle_br] Re: Dúvida Armazenamento

2006-01-09 Por tôpico jlchiappa
** Nenhuma ** necessidade de coleta de estatística só pra saber uso 
de espaço, isso já é AUTOMATICAMENTE registrado nas views do sistema, 
assim :

SQL*Plus: Release 9.2.0.5.0 - Production on Seg Jan 9 09:45:20 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Conectado a:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Oracle Data 
Mining options
JServer Release 9.2.0.5.0 - Production

[EMAIL PROTECTED]:SQLcreate tablespace TESTE datafile 'D:\O9IR2\O9IR2
\TESTE.DBF' size 50m autoextend on;

Tablespace criado.


== primeiro ponto, DEPENDENDO da versão, o default é tablespace LMT 
(Local-Managed Tablespace), com extents de tamanho variável 
controlados pelo sistema, é o meu caso :
[EMAIL PROTECTED]:SQLselect * from dba_tablespaces where 
tablespace_name='TESTE';

TABLESPACE_NAMEBLOCK_SIZE 
INITIAL_EXTENTNEXT_EXTENTMIN_EXTENTS
MAX_EXTENTS   PCT_INCREASE MIN_EXTLEN STATUSCONTENTS  
LOGGING   FOR EXTENT_MAN ALLOCATIO PLU SEGMEN
-- -- -- -
- -- -- --
 -- - - - --- -- -
 --- --
TESTE8192  
65536 1 
2147483645 65536 ONLINEPERMANENT 
LOGGING   NO  LOCAL  SYSTEMNO  MANUAL

== já que é LMT, de cara em cima da qtdade que vc especificou o 
banco SUBTRAI 64Kb, pra criar o bitmap de controle : veja que eu 
especifiquei 50 Mb (ie, 52428800 bytes, coluna BYTES abaixo), só 
obtive disponível pra mim 52363264 bytes (coluna USER_BYTES) :

[EMAIL PROTECTED]:SQLselect * from dba_data_files where 
tablespace_name='TESTE';

FILE_NAME 
  FILE_ID TABLESPACE_NAME 
BYTES BLOCKS STATUS  RELATIVE_FNO AUT   
MAXBYTES  MAXBLOCKS   INCREMENT_BY 
USER_BYTESUSER_BLOCKS
 -
- -- -- --
 - -- --- -- -
- -- -- --

D:\O9IR2\O9IR2
\TESTE.DBF
 11 TESTE52428800   
6400 AVAILABLE 11 YES34359721984
4194302  1   52363264   6392

== vamos ver quanto tenho nunca usado, ie, totalmente disponível :

[EMAIL PROTECTED]:SQLl
  1  select * from dba_free_space
  2* where tablespace_name='TESTE'
[EMAIL PROTECTED]:SQL/

TABLESPACE_NAME   FILE_ID   
BLOCK_ID  BYTES BLOCKS   RELATIVE_FNO
-- -- -- -
- -- --
TESTE  11  
9   52363264   6392 11

== exato e perfeito, tenho 52363264 livres, é isso mesmo ... Agora 
vamos criar um objeto que consome espaço, tabela pra seguir o seu 
caso :

[EMAIL PROTECTED]:SQLcreate table teste
  2   (id number)
  3   tablespace teste
  4  storage (initial 10m next 1m);

Tabela criada.

== Aqui é que entra o CONCEITO-CHAVE pra se entender storage no bd 
Oracle, que é provavelmente onde vc está falhando : pra ter sempre a 
maior performance possível em INSERTs, o bd Oracle usa de vários 
trucões, um deles é : quando vc cria uma objeto de banco que consome 
espaço em disco (tabela, índice, o que for), nesse EXATO momento, 
mesmo estando inicialmente vazio, o bd ** IMEDIATAMENTE ** já cria, 
aloca e reserva dentro da tablespace o espaço inicial (o initial 
extent). A vantagem disso é que quando chegarem os INSERTs, o espaço 
JÀ ESTARÁ formatado, prontinho pra usar... Trucão básico. Vamos ver 
que é isso mesmo :

[EMAIL PROTECTED]:SQLselect * from dba_free_space
  2  where tablespace_name='TESTE';

TABLESPACE_NAME   FILE_ID   
BLOCK_ID  BYTES BLOCKS   RELATIVE_FNO
-- -- -- -
- -- --
TESTE  11   
1289   41877504   5112 11

é o real aqui, vc mandou o initial extent ser de 10 Mb (ie, 10485760 
bytes), é isso aí, 52363264 bytes que eu tinha livres, MENOS os 
10485760 bytes do initial extent automaticamente criado, resultam em 
41877504 bytes livres ...

Pra vc conferir que é isso mesmo, o 

Re: [oracle_br] Re: Dúvida Armazenamento

2006-01-09 Por tôpico Marcus Vinicius Miguel Pedro
Obrigado Chiappa, na verdade, eu sempre soube que ao criar um segmento, no caso 
a tabela, a extensão já fica alocada com o tamanho que especifiquei, o que eu 
queria era mesmo saber se existia alguma maneira de pesquisar o que 
efetivamente estaria livre.
   
  Valeu.
   
  Abraços
   
  Vinicius

jlchiappa [EMAIL PROTECTED] escreveu:
  ** Nenhuma ** necessidade de coleta de estatística só pra saber uso 
de espaço, isso já é AUTOMATICAMENTE registrado nas views do sistema, 
assim :

SQL*Plus: Release 9.2.0.5.0 - Production on Seg Jan 9 09:45:20 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Conectado a:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Oracle Data 
Mining options
JServer Release 9.2.0.5.0 - Production

[EMAIL PROTECTED]:SQLcreate tablespace TESTE datafile 'D:\O9IR2\O9IR2
\TESTE.DBF' size 50m autoextend on;

Tablespace criado.


== primeiro ponto, DEPENDENDO da versão, o default é tablespace LMT 
(Local-Managed Tablespace), com extents de tamanho variável 
controlados pelo sistema, é o meu caso :
[EMAIL PROTECTED]:SQLselect * from dba_tablespaces where 
tablespace_name='TESTE';

TABLESPACE_NAMEBLOCK_SIZE 
INITIAL_EXTENTNEXT_EXTENTMIN_EXTENTS
MAX_EXTENTS   PCT_INCREASE MIN_EXTLEN STATUSCONTENTS  
LOGGING   FOR EXTENT_MAN ALLOCATIO PLU SEGMEN
-- -- -- -
- -- -- --
 -- - - - --- -- -
 --- --
TESTE8192  
65536 1 
2147483645 65536 ONLINEPERMANENT 
LOGGING   NO  LOCAL  SYSTEMNO  MANUAL

== já que é LMT, de cara em cima da qtdade que vc especificou o 
banco SUBTRAI 64Kb, pra criar o bitmap de controle : veja que eu 
especifiquei 50 Mb (ie, 52428800 bytes, coluna BYTES abaixo), só 
obtive disponível pra mim 52363264 bytes (coluna USER_BYTES) :

[EMAIL PROTECTED]:SQLselect * from dba_data_files where 
tablespace_name='TESTE';

FILE_NAME 
  FILE_ID TABLESPACE_NAME 
BYTES BLOCKS STATUS  RELATIVE_FNO AUT   
MAXBYTES  MAXBLOCKS   INCREMENT_BY 
USER_BYTESUSER_BLOCKS
 -
- -- -- --
 - -- --- -- -
- -- -- --

D:\O9IR2\O9IR2
\TESTE.DBF
11 TESTE52428800   
6400 AVAILABLE 11 YES34359721984
4194302  1   52363264   6392

== vamos ver quanto tenho nunca usado, ie, totalmente disponível :

[EMAIL PROTECTED]:SQLl
  1  select * from dba_free_space
  2* where tablespace_name='TESTE'
[EMAIL PROTECTED]:SQL/

TABLESPACE_NAME   FILE_ID   
BLOCK_ID  BYTES BLOCKS   RELATIVE_FNO
-- -- -- -
- -- --
TESTE  11  
9   52363264   6392 11

== exato e perfeito, tenho 52363264 livres, é isso mesmo ... Agora 
vamos criar um objeto que consome espaço, tabela pra seguir o seu 
caso :

[EMAIL PROTECTED]:SQLcreate table teste
  2   (id number)
  3   tablespace teste
  4  storage (initial 10m next 1m);

Tabela criada.

== Aqui é que entra o CONCEITO-CHAVE pra se entender storage no bd 
Oracle, que é provavelmente onde vc está falhando : pra ter sempre a 
maior performance possível em INSERTs, o bd Oracle usa de vários 
trucões, um deles é : quando vc cria uma objeto de banco que consome 
espaço em disco (tabela, índice, o que for), nesse EXATO momento, 
mesmo estando inicialmente vazio, o bd ** IMEDIATAMENTE ** já cria, 
aloca e reserva dentro da tablespace o espaço inicial (o initial 
extent). A vantagem disso é que quando chegarem os INSERTs, o espaço 
JÀ ESTARÁ formatado, prontinho pra usar... Trucão básico. Vamos ver 
que é isso mesmo :

[EMAIL PROTECTED]:SQLselect * from dba_free_space
  2  where tablespace_name='TESTE';

TABLESPACE_NAME   FILE_ID   
BLOCK_ID  BYTES BLOCKS   RELATIVE_FNO
-- -- -- -
- -- --
TESTE  11