Administrando conexões no Oracle

Veja neste artigo um pequeno roteiro com scripts onde você poderá executar em todo banco de dados antes mesmo de você começar efetivamente o seu trabalho.

Scripts para melhorar sua administração

por Darci Leandro

 

Olá pessoal,

 

Quando somos acionados para identificar o que possa estar ocorrendo com algum banco de dados, devemos fazer isso de uma forma muito cuidadosa, apesar de toda pressão que possamos estar recebendo a situação poderá piorar se executarmos comandos errados.

 

Pois bem, é visando isso que a seguir estarei mostrando um pequeno roteiro com scripts onde você poderá executar em todo banco de dados antes mesmo de você começar efetivamente o seu trabalho.

 

  1. Identificando a Instância

Antes de iniciar qualquer trabalho é importante obtermos algumas informações sobre a instância.

 

SQL> set pagesize 1000

SQL> set linesize 300

SQL>

SQL> column instance_name format a15

SQL> column host_name format a15

SQL> column startup format a21

SQL> column hoje format a21

SQL>

SQL> select host_name, instance_name, version,

  2  to_char(startup_time, 'DD-MON-RRRR HH24:MI:SS') STARTUP,

  3  to_char(sysdate, 'DD-MON-RRRR HH24:MI:SS') HOJE

  4  from v$instance;

 

HOST_NAME       INSTANCE_NAME   VERSION           STARTUP               HOJE

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

DLTECNOLOGIA    DLTST           10.1.0.3.0        03-JAN-2007 16:10:27  19-JAN-2007 23:18:02      

 

  1. Alterando o Prompt

Em alguns casos, por exemplo, em servidores de produção seria interessante você mudar o prompt para o nome da instância, assim você terá a certeza se está conectado no lugar certo.

 

SQL> define Prompt = ''

SQL> column instance_name new_value Prompt

SQL> select instance_name from v$instance;

 

INSTANCE_NAME       

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

DLTST         

 

SQL> set sqlprompt '&&Prompt>'

 

  1. Todas conexões existentes

Com o script abaixo você poderá identificar quantas conexões existem nesse exato momento em seu banco de dados.

Estou totalizando por “status” e utilizando a cláusula UNION para facilitar a visualização do resultado.

 

DLTST> select count(username) as QTDE, 'TOTAL' as CONEXOES

  2  from v$session where username is not null

  3  UNION

  4  select count(username), 'ATIVOS'

  5  from v$session where username is not null and status = 'ACTIVE'

  6  UNION

  7  select count(username), 'INATIVOS'

  8  from v$session where username is not null and status = 'INACTIVE'

  9  UNION

 10  select count(username), 'PERDIDOS'

11from v$session where username is not null and status = 'SNIPED'

12order by 1, 2;

 

      QTDE CONEXOES

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

         1 ATIVOS

         4 PERDIDOS

        20 INATIVOS

        25 TOTAL

 

 

  1. Detalhando as conexões existentes

 

DLTST> select username, status, count(username) TOTAL

  2  from v$session

  3  where  username is not null

  4  group by username, status

  5  order by 1, 2;

 

USERNAME                       STATUS        TOTAL

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

DBA_DLTECNOLOGIA         ACTIVE            1 
SYSMAN                            INACTIVE         10     

USUARIO_01                     SNIPED            1      

USUARIO_02                     INACTIVE          2

USUARIO_03                     INACTIVE          1

USUARIO_04                     INACTIVE          1 

USUARIO_05                     SNIPED            1   

USUARIO_06                     SNIPED            2             

USUARIO_07                     INACTIVE          1  

USUARIO_08                     INACTIVE          5

 

10 linhas selecionadas.

 

 

  1. Conexões perdidas

Caso existam conexões com o Status ‘SNIPED’ significa que são conexões que ficaram perdidas por algum motivo.

 

    1. Selecionando as conexões perdidas

 

DLTST> select sid, serial#, username, osuser, machine, status

  2  from v$session

  3  where  username IS NOT NULL

  4  and status = 'SNIPED'

  5  order by 3, 4;

 

   SID SERIAL# USERNAME             OSUSER               MACHINE    

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

   151      14 USUARIO_01          USU_01                DL56  

   130    2617 USUARIO_05          USU_05                DL34                

   113   22126 USUARIO_06          USU_06                DL28          

   120   57981 USUARIO_06          USU_18                DL12      

 

    1. Eliminando essas conexões

 

DLTST> alter system kill session '151,14';

DLTST> alter system kill session '130,2617';

DLTST> alter system kill session '113,22126';

DLTST> alter system kill session '120,57981';

 

 

Conclusão

Com esse artigo fica mais claro você ter certeza onde está conectado e identificar quais são os outros usuários que estão conectados também, além de identificar quantas conexões existem para cada um e seus ‘status’, enfim, você poderá administrar melhor a situação.

 

Boa sorte a todos e até a próxima...

 

Artigos relacionados