Páginas filhas
  • Oracle - Parametrizações básicas da base de dados e servidor

Assunto

Produto:

Banco de Dados

Versões:

Qualquer Versão

Ocorrência:

Parametrizações básicas da base de dados e servidor

Ambiente:

RM - Oracle

Passo a passo:

Todos os procedimentos informados abaixo devem ser efetuados pelo DBA responsável da empresa.
Caso haja dúvidas a respeito de algum procedimento deste roteiro entre em contato com a nossa equipe de Consultoria no seguinte caminho da URA (2-3-3-9-5-2).

Este documento contém algumas dicas para DBA’s manterem suas instâncias Oracle em perfeito estado de funcionamento. As primeiras dicas referem-se a parâmetros encontrados no arquivo init.ora, encontrado no diretório de instalação da instância Oracle na máquina em questão. Para alterar alguns deles (quando possível), basta editar o arquivo em questão, salvá-lo e restartar a instância.


1. TAMANHO DO BLOCO ORACLE

Este parâmetro deve ser configurado no momento da criação da base de dados. Sugerimos a utilização de blocos de 8k (DB_BLOCK_SIZE = 8192).

Observação: Note que o tamanho do bloco deve ser informado em nº de bytes.

Caso a instância já esteja criada, pode-se verificar a configuração deste parâmetro, editando-se o arquivo de parâmetros (init.ora) do Oracle e verificando o valor da variável DB_BLOCK_SIZE.

Uma alternativa para visualizar o valor do parâmetro seria a utilização da ferramenta Instance Manager. Aqui, o parâmetro pode ser visualizado através de:

- Initialization Parameters / Instance Specific (A alteração deste parâmetro só pode ser feita caso a instância seja recriada).


2. DISTRIBUIÇÃO DA MEMÓRIA DISPONÍVEL PARA O ORACLE

Depois de determinada a quantidade de memória que estará disponível para o Sistema Operacional e a quantidade que ficará disponível para o Oracle, deve-se fazer a distribuição da memória disponível para o Oracle.

  • SORT_AREA_SIZE

Deve-se configurar este parâmetro com grande cautela, uma vez que ele reflete a quantidade de memória que cada conexão de usuário irá ter disponível para operações de SORT.
Devemos levar em consideração também a quantidade de memória fixa que cada conexão de usuário gasta (1,7 MB).
Sendo assim, o gasto de memória com conexões de usuários em uma aplicação onde estejam abertas 10 sessões e o SORT_AREA_SIZE esteja configurado com o valor de 1048576 (1MB) é:

10 * (1,7+1) = 27 MB.

Observação:Note que o valor do SORT_AREA_SIZE deve ser informado em número de bytes.

O valor a ser configurado para este parâmetro deve ser definido levando-se em consideração o número de conexões simultâneas no Oracle e a quantidade de memória disponível para mesmo.

  • DB_BLOCK_BUFFER

Este parâmetro irá refletir a quantidade de memória destinada ao Oracle que será utilizada para Cache de dados.
Este parâmetro deve ser configurado com o número de blocos do Oracle que será utilizado para este Cache.

Sugerido:

60% da memória restante destinada ao Oracle destinada ao Cache de dados.

Como calcular o valor do parâmetro:

DB_BLOCK_BUFFER = (M * 1048576) / B

Onde:

M = É a quantidade de memória (em Mega bytes) que deve ser destinada ao Buffer de Dados.
B = Tamanho do bloco de dados (em bytes) utilizado pelo Oracle.

  • SHARED POOL

Este parâmetro irá refletir a quantidade de memória destinada ao Oracle que será utilizada para o SHARED POOL.

Sugerido:

Restante da memória destinada ao Oracle (40%), destinada ao SHARED POOL.

O valor deste parâmetro deve ser determinado de Bytes.

SHARED_POOL_SIZE = M,

Onde: M = Memória destinada ao SHARED POOL em bytes.


3. TABLESPACE

Deve-se criar pelo menos uma tablespace distinta para cada finalidade: System, Dados, Indices, Temp, Rollback, Redo. É desejável também que os datafiles destas tablespace sejam distribuídos em discos diferentes, de forma a minimizar a concorrência de acesso. Isto deve ser feito conforme a disponibilidade de discos. Exemplo:


Cenário 1:

Um disco: 

System, Dados, Indices, Temp, Rollback, Redo no mesmo disco, mas em tablespace diferentes.


Cenário 2:

Dois discos:

1º disco: Dados + Temp + Rollback

2º disco: System + Indices + Redo



4. CPU

Deve-se verificar constantemente a taxa de utilização da CPU, a mesma não deve estar com taxa de utilização muito alta durante a maior parte do período (90% de utilização).
Caso esteja utilizando mais de um processador deve-se verificar se a carga da CPU está balanceada.

Para estas medições, pode se utilizar a ferramenta Performance Monitor (no caso de servidores Windows NT/2000).


5. COALESCE

Deve-se verificar periodicamente (mensalmente) a fragmentação do espaço livre alocado para cada tablespace:

SELECT TABLESPACE_NAME, TOTAL_EXTENTS, PERCENT_EXTENTS_COALESCED
FROM DBA_FREE_SPACE_COALESCED
WHERE PERCENT_EXTENTS_COALESCED <> 100

Desfragmentação - necessário indicar o Tablespace:

ALTER TABLESPACE tablespace COALESCE


6. LINGUAGEM E COLLATION

No padrão CorporeRM o Character Set deverá ser definido com WE8ISO8859P15a linguagem como AMERICAN_AMERICA.WE8ISO8859P15 e o Date_Format como DD/MM/YYYY.
Certifique que a linguagem do Oracle das estações (inclui-se servidores de APP e Jobs) estejam igual a do servidor. Para mais detalhes, acesse o seguinte link:

Oracle - Alterando a Linguagem do Client

7. ATUALIZAÇÃO DE ESTATÍSTICAS:

A rotina de atualização de estatísticas deve ser agendada para execução diária.

Link complementar: BD0003_Manutenção_Oracle_BR

Sugere-se o utilizar o Package DB MS_UTILITY para fazer a atualização de estatísticas:

Para agendar a execução diária de estatísticas em um servidor que esteja utilizando o Windows NT ou Windows 2000:

1º) Crie um arquivo TXT com o seguinte conteúdo:

2º) Utilize o command prompt para agendar a tarefa:

O comando acima agenda a atualização de estatísticas para ocorrer todos os dias às 22:00 horas. Considera-se que o arquivo TXT criado no primeiro item é o d:\temp\script.txt


8.ÍNDICES:

Os índices devem ser reconstruídos periodicamente (mensalmente), ou após período de grande "deleção" dos mesmos. Para a verificação do percentual de linhas deletadas em um determinado índice utilize:

Link complementar: BD0003_Manutenção_Oracle_BR

1º) Analyze:

ANALYZE INDEX indice VALIDATE STRUCTURE

2º) Verificando o percentual de deleção:

SELECT LF_ROWS , DEL_LF_ROWS
FROM INDEX _STATS

Observação: Caso 30% das linhas em folhas (LF_ROWS) tenha sido deletado (DEL_LF_ROWS), o índice deve ser reconstruido.

3º) Reconstrução do índice:

ALTER INDEX indice REBUILD tablespace

Para reconstruir o índice, durante o REBUILD deve haver espaço disponível para a coexistência dos dois índices (antigo e novo).

O comando abaixo gera um script para a reconstrução de todos os índices da base de dados:

SELECT 'ALTER INDEX ' || INDEX_NAME ||
' REBUILD TABLESPACE RM_INDICES; '
FROM USER_INDEXES

Este script deve ser executado em um momento em que não haja acesso à base de dados.



9. PROCESSES, SESSIONS E TRANSACTIONS

Por padrão o cálculo para os valores de processes, sessions e transactions baseia-se na seguinte forma:

processes= x
sessions= x*1.1+5
transactions= sessions*1.1

A alteração deste parâmetro deve ser avaliada pelo DBA responsável. Após os cálculos e a definição dos valores a serem alterados, sugerimos a realização do backup do arquivo spfile.
Para localizar no SQL plus execute o comando:

show parameter spfile;

Após localização do arquivo spfile da referida instância e realização de backup do mesmo, segue um exemplo de alteração.

alter system set processes=valor scope=both;
alter system set sessions=valor scope=both;
alter system set transactions=valor scope=both;

Exemplo:
alter system set processes=1000 scope=spfile;
alter system set sessions=1248 scope=spfile


Após realizar o procedimento, reinicie a instância, execute shutdown immediate e startup.

ATENÇÃO: Ressaltamos que este procedimento é de responsabilidade da empresa e deve ser planejado de forma a não impactar negativamente no funcionamento do Banco de dados. Lembrando que os valores a serem inseridos devem ser analisados pelo DBA responsável.


10. EXPORT/IMPORT (Oracle 10g ou inferior):

O Export e Import da base de dados devem ser feito periodicamente com finalidade de reorganizar os dados dentro da base de dados, desfragmentar e resolver casos de linhas Migradas.

Sugere-se fazer a Exportação / Importação da base de dados de 2 em 2 meses.

Passos para a execução do Export / Import:

  • Export da base.
  • Backup físico da base
  • Drop do Schema
  • Import da base

Observação: Semanalmente sugere-se verificar o número de linhas MIGRADAS na base de dados. Caso o número esteja muito alto, deve-se fazer o Export / Import da base.

Para verificar o número de linhas MIGRADAS utilize:

SELECT TABLE_NAME, CHAIN_CNT
FROM USER_TABLES
ORDER BY CHAIN_CNT DESC

Observação: A coluna CHAIN_CNT, reflete não apenas o número de linhas migradas, mas o processo de Export / Import irá atacar apenas este problema.


9. ALERT:

O ALERT dever ser verificado diariamente. Deve-se verificar se existem mensagens de erro do tipo ORA-00600 e /ou ORA- 01578, que indicam erros internos do Oracle ou blocos corrompidos. Caso a mensagem esteja acontecendo, o problema deve ser analisado e solucionado antes que se torne mais grave.



Observações: