Milton,

A sua resposta "teoricamente" estaria certo, tentei criar tablespaces com um
blocksize menor que no padrão do banco e não tive sucesso, segue o exemplo:


SQL> show parameters db_block_size

NAME                                 TYPE        VALUE
------------------------------------ -----------
------------------------------
db_block_size                        integer     8192
SQL> create tablespace TESTE2
  2  datafile
  3     '+NFR_DGR01_D\teste.dbf' size 1m
  4  blocksize 4K;
create tablespace TESTE2
*
ERROR at line 1:
ORA-29339: tablespace block size 4096 does not match configured block sizes


SQL> l 4
  4* blocksize 4K
SQL> c/4K/32K/
  4* blocksize 32K
SQL> l
  1  create tablespace TESTE2
  2  datafile
  3     '+NFR_DGR01_D\teste.dbf' size 1m
  4* blocksize 32K
SQL> /
create tablespace TESTE2
*
ERROR at line 1:
ORA-00382: 32768 not a valid block size, valid range [2048..16384]


SQL> l4
  4* blocksize 32K
SQL> c/32K/2K/
  4* blocksize 2K
SQL> l
  1  create tablespace TESTE2
  2  datafile
  3     '+NFR_DGR01_D\teste.dbf' size 1m
  4* blocksize 2K
SQL> /
create tablespace TESTE2
*
ERROR at line 1:
ORA-29339: tablespace block size 2048 does not match configured block sizes


SQL> l4
  4* blocksize 2K
SQL> c/2K/16K/
  4* blocksize 16K
SQL> l
  1  create tablespace TESTE2
  2  datafile
  3     '+NFR_DGR01_D\teste.dbf' size 1m
  4* blocksize 16K
SQL> /

Tablespace created.

SQL> drop tablespace TESTE2 including contents and datafiles;

Tablespace dropped.

Porém, na documentação da Oracle, existe um exemplo que tem um db_block_size
no banco de dados de 4K e utilizou os parâmetros db_2K_block_size e
db_8k_block_size como se estiverem utilizando. Como isso varia de SO para
SO, aqui no Linux não funcionou, não testei em ambientes com AIX, HP-UX ou
Solaris para verificar se funciona.

Thiago,

O DB_CACHE_SIZE deve ser configurado para o blocksize default do banco de
dados (parâmetro db_block_size), sem problemas até o momento, agora, se meu
banco de dados estiver trabalhando com tablespaces de diferentes BLOCKSIZE,
como no exemplo acima, BLOCKSIZE de 16K, deverei configurar o parâmetro
DB_16K_CACHE_SIZE para um valor até o tamanho do DB_CACHE_SIZE.

No Oracle existem 5 parâmetros para diferentes BLOCKSIZE:

- DB_2K_CACHE_SIZE
 - DB_4K_CACHE_SIZE - DB_8K_CACHE_SIZE - DB_16K_CACHE_SIZE -
DB_32K_CACHE_SIZE

A regra padrão para configurar o DB_CACHE_SIZE continua o mesmo,
DB_CACHE_SIZE = VALOR * BLOCKSIZE. E para os demais deverá ser seguido a
seguinte recomendação:

DB_BLOCK_SIZE = 4K

DB_CACHE_SIZE = 100M

No banco de dados estamos trabalhando com tablespaces que tem BLOCKSIZE de
8K e 16K, então:

DB_8K_CACHE_SIZE = 40M
DB_16K_CACHE_SIZE = 60M

DB_8K_CACHE_SIZE  + DB_16K_CACHE_SIZE  = 100M => DB_CACHE_SIZE

Recomendo a leitura abaixo sobre o assunto:

http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14231/create.htm#i1014121

Abraços,

Rodrigo Almeida


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

Responder a