domingo, 18 de setembro de 2016

Resolvendo Problemas em Banco de Dados Oracle

Ao longo da minha experiência aprendi a resolver problemas comuns que acontecem em Banco de Dados da Oracle que podem provocar até mesmo a parada total do BD. Geralmente um usuário Linux é configurado somente para a instancia do BD. Acesse com o usuário. No sistema Linux utilizamos o comando top para verificar o consumo do processamento. Algumas etapas devem sempre ser verificadas. A primeira é verificar os recursos da máquina e verificar quanto de processamento o BD está consumindo dentro do Sistema Operacional.

Verificar processos:
top –d2 -c

Esse comando exibe o Process ID (PID) dos consumos, verifique o consumo mais elevado.

Se o processo em alto consumo for um processo Oracle, acesse o BD e utilizem a query abaixo para tentar identificar no banco o que está sendo executado neste processo.

select sql_text
  from v$sql
Where hash_value =
       (SELECT sql_hash_value
          FROM v$session
         WHERE paddr = (SELECT addr FROM v$process WHERE spid = PID_SO));

Onde PID_SO é o PID do processo no sistema operacional.

Outra possibilidade é verificar dentro da máquina Linux os espaços em disco utilizando o comando df.

$ df -h

Se o banco estiver parado será necessário dar um startup na instancia, porém é bom que o banco seja desligado antes.

Acessar o banco na instancia normal
sqlplus /nolog

Para acessar o banco como Administrador:

sqlplus '/as sysdba'

Para derrubar o banco (é necessário aguardar alguns minutos 1 a 2, as vezes 3 , varia conforme o tamanho do BD, nessa hora haja coração!):

shutdown immediate;

Se o BD não desligar com o comando acima o comando abaixo é utilizado em uma circunstância mais extrema:

shutdown abort;

Para reiniciar:
startup;


Outro problema que acontece é queda do listener do BD. O listener é responsável por "ouvir" as requisições solicitadas ao banco. Nesses casos o erro não permite nem o acesso ao banco. Então segue o comando para a máquina Linux.

Verificar o listener:
lsnrctl status

Se for o caso de parar:
lsnrctl stop

Se for o caso de levantar:
lsnrctl start

Outro procedimento é verificar se a variável Home do Oracle está configurada, o comando abaixo devera exibir a URI do Home e assim também é possível buscar por logs:

echo $ORACLE_HOME
/oracle/base/product/11gR1/db

Para verificar os arquivos de log do banco:
crosscheck archivelog all

para ver a instancia do banco:
echo $ORACLE_SID

Para acessar Recovery Manager:
rman target /


Segue abaixo uma sequencia de comandos utilizada em um banco local de testes onde foi adicionado o listener ao boot da máquina e também foram verificados os logs de erros do BD:

 1001  cd /etc/sysconfig/
 1002  vi oracle
 1003  cat /etc/oratab
 1004  set | grep ORA
 1005  cd /oracle/base/product/10.2/network/
 1006  ll
 1007  cd log/
 1008  ls
 1009  less -N  listener.log
 1010  hostname
 1011  hostname -f
 1012  cat /etc/hosts
 1013  cd ..
 1014  ls
 1015  cd admin/
 1016  ls
 1017  vi listener.ora
 1018  vi /etc/init.d/boot.local
 1019  vi /var/log/messages (como root)
 1020  history


Nenhum comentário:

Postar um comentário