sexta-feira, 23 de abril de 2010

Gerenciamento Automático de Memória em banco de dados Oracle - alterações da versão 11g

Na versão anterior (Oracle 10g) havia dois parâmetros para gerenciamento de memória automático:

1. SGA_TARGET = NNN G

2. PGA_AGGREGATE_TARGET = NNN G


Assim o SGBD Oracle automaticamente aloca espaço para Buffer cache, Shared pool, Large Pool, etc.

Na versão Oracle 11g foi introduzido um novo parâmetro chamado "MEMORY_TARGET", para configuração de alocação da SGA e PGA.

Para a configuração de memória, se especificar o parâmetro MEMORY_TARGET para a instância, não é necessário especificar SGA_TARGET ou PGA_AGGREGATE_TARGET. O banco de dados Oracle irá automaticamente alocar memória para os parâmetros de memória.



Como habilitar o gerenciamento automático de memória?


O novo parâmetro MEMORY_MAX_TARGET na versão 11g (como o prévio SGA_MAX_SIZE) é o limite máximo para a memória da instância de banco Oracle.

Os parâmetros abaixo são de banco de dados ainda não configurado com o parâmetro MEMORY_TARGET

SQL> show parameter target
NAME TYPE VALUE

------------------------------------ ----------- ------

archive_lag_target integer 0

db_flashback_retention_target integer 1440

fast_start_io_target integer 0

fast_start_mttr_target integer 0

memory_max_target big integer 0

memory_target big integer 0

pga_aggregate_target big integer 25M

sga_target big integer 172M


1. Primeiro atribuir valor para o parâmetro MEMORY_MAX_TARGET - ajustando assim o limite máximo de memória para a instância.


SQL> alter system set memory_max_target=200M scope=SPFILE;
System altered.

OBSERVAR: memory_target=(sga_target+pga_aggregate_target)


2. Shutdown e startup do banco de dados

SQL> shutdown immediate

SQL> startup

NOTE: ORA-00843: Parameter not taking MEMORY_MAX_TARGET into account, see alert log for more information


O erro acima ocorre quando o valor para o parâmetro MEMORY_MAX_TARGET é menor do que o valor para o parâmetro SGA_MAX_SIZE. Então, ou deve ser removido o valor para o parâmetro SGA_MAX_SIZE ou deve ser aumentado o valor para o parâmetro MEMORY_MAX_TARGET.


SQL> create pfile='c:\temp\init.ora' from spfile;
File created.
SQL> --after editing recreate new spfile.SQL> create spfile from pfile='c:\temp\init.ora';
File created.

SQL> startup

3. SET MEMORY_TARGET para valor não-zero e SET "0" para o parâmetro SGA ou PGA_AGGREGATE_TARGET.

SQL> alter system set memory_target=200m;
System altered.
SQL> alter system set sga_target=0;
System altered.
SQL> alter system set pga_aggregate_target=0;
System altered.
SQL> show parameter target
NAME TYPE VALUE

------------------------------------ ----------- -----------archive_lag_target integer 0

db_flashback_retention_target integer 1440

fast_start_io_target integer 0

fast_start_mttr_target integer 0

memory_max_target big integer 200M

memory_target big integer 200M

pga_aggregate_target big integer 0

sga_target big integer 0


Monitoramento do gerenciamento automático de memória


Nova view V$ : V$MEMORY_DYNAMIC_COMPONENTS mostra o valor atual do tamanho da SGA e da PGA.

e a nova view V$ : v$MEMORY_TARGET_ADVICE exibe sugestão para o valor do parâmetro MEMORY_TARGET


REFERÊNCIA: http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/memory003.htm#BGBJAHEJ

Nenhum comentário:

Postar um comentário