Re: [oracle_br] Re: Dúvida Armazenamento
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
** 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
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