Troubleshooter IT

Kill de Sessões Siebel – Parte I

Kill Siebel

Esta é a primeira abordagem do tema Kill de Sessões Siebel com a introdução e dicas preliminares sobre o assunto. O próximo artigo será referenciado aqui assim que for publicado.

Por que o Kill de Sessões Siebel no Database merece um artigo (ou uma trilogia de artigos)?

Todo DBA ou SADMIN que suporta alguma instância Oracle (ou SQL Server, IBM DB2, Sybase/SQL Anywhere) de um Siebel Enterprise está careca de saber a resposta para esta pergunta.

Para quem ainda não sabe, um “alter system kill session” em sessões Siebel ofensoras no banco de dados, por padrão, não adianta nada e as vezes até piora a situação que se queria remediar.

Nem mesmo um “kill -9” direto no processo (PID) no SO do banco de dados é suficiente para se livrar de uma vez por todas de um ofensor com origem no Siebel.

Assim que uma sessão Siebel no banco de dados é “morta”, o que acontece, por padrão, é re-logon numa nova sessão devido algum mecanismos para Alta Disponibilidade.

Ok, mas o que é uma sessão ofensora?

Uma sessão ofensora é uma instrução DML ou DQL na imensa maioria das vezes.

As vezes pode até ser um DDL ou DTL e, bem raramente, um DCL – quando um abençoado dá um grant num objeto high usage que exige atualização de dicionário de dados, p. ex..

Essas sessões são ofensoras porque consomem recursos por mais tempo que o normal ou  consumem mais recursos que o normal.

  • Pode ser um select fazendo full scan ou usando um índice pouco seletivo
  • As vezes é um grupo de queries rápidas que ficam executando em loop
  • Um update impactado por um lock
  • Um commit travado
  • Um gargalo de CPU devido a configuração do Resource Manager do banco de dados.
  • Pode ocorrer em decorrência de algum processos custoso em execução durante o horário de pico da aplicação (RMAN, datapump, delta sync do Data Guard, algum extrator mau construído, etc.)
  • Enfim, pode ter inúmeras causas. 

Camarada, uma sessão ofensora pode ser o pior pesadelo da sua empresa. 

Continua após a publicidade

Sua operação inteira pode ficar indisponível em casos extremos e o trabalho de investigação pode exigir o envolvimento de vários profissionais até se descobrir e resolver a causa raiz do problema.

No contexto do dia-a-dia do Siebel, as causas mais comuns de sessões ofensoras são queries ruins, códigos em loop ad infinitum e locks.

E os impactos causados pelas sessões ofensoras?

Bem, impactos podem ser muitos dependendo do processo específico que originou a sessão ofensora. Aqui eu vou exemplificar os primeiros que me vêm a mente separando por módulo:

  • Application Object Manager (eEnergy, eSales, eCommunications, etc.): Lentidão em certos fluxos, telas ou processos dentro da operação (call-center, equipe de vendas, etc.);
  • Workflow
    • Online: Filas de processamento cada vez maiores devido a lentidão de processamento (lembrando que o processamento de grupos de workflows é serializado;
    • Batch: Processos que rodam de madrugada invadindo o horário comercial;
  • EAI: Timeout em integrações web. Se o serviço executa algum comando que causa uma sessão ofensora, não vai responder no dentro do timeout e vai provocar um erro no sistema cliente;
  • Assignment Manager: Activities, SRs, Quotes, Contracts, Accounts, Opportunities, etc. demoram muito para serem atribuídas aos times ou perfis responsáveis;
  • Product Configurator: Lentidão ao configurar um produto;
  • Lentidão generalizada.

A Alta Disponibilidade (HA) é a nossa inimiga!

Não, a alta disponibilidade não é nossa inimiga ou, em dois casos bem específicos, até podem ser. Explico:

Alta Disponibilidade – Siebel

A partir da versão Siebel 7.8.2.x, se não me falha a memória, foi introduzido nas bibliotecas de gestão de recursos no banco de dados do Siebel o recurso de reconexão quando há a perda de conexão abrupta.

É fácil para nós, meros mortais, interpretar a perda de conexão abrupta como quedas de instâncias do Oracle RAC, perdas de conectividade com a rede ou falhas de roteamento de rede, por exemplo, certo?

Contudo, o grande xis da questão é que o kill de sessões no banco de dados também é considerado uma perda de conexão abrupta e, por isso, há a reconexão partindo do Siebel Object Manager para continuar a processamento exatamente do ponto onde ele foi interrompido. 

Meu amigo, esse é um tremendo recurso que merece vir habilitado por padrão. 

Imagine a quantidade de reclamações dos usuários se, por exemplo, intermitências de rede causassem a queda irremediável da conexão com um posterior logoff do usuário e a necessidade de reinício da atividade que gerou o problema inicial? Seria o caos!

Alta Disponibilidade – Oracle TAF

O Oracle  TAF (Transparent Application Failover) interpreta o kill de sessões da mesma forma que faz com qualquer outra conexão de rede perdida e simplesmente reconecta e reinicia a consulta. 

Já sabe do que estamos falando?

Agora que você já sabe o que é uma sessão ofensora e porque matá-la não adianta nada com o ambiente padrão, seguimos adiante sobre esse tema tão recorrente para o SADMIN e o DBA, mas não hoje.

No próximo artigo dessa trilogia, vou mostrar como identificar sessões ofensoras no database, seja através dos logs do Siebel ou do próprio banco de dados, e no último artigo sobre esse tema, veremos como desativar a reconexão da engine do Siebel para alguns componentes.

Se sua operação Siebel está com problemas de lentidão, travamentos inexplicáveis ou crashs e erros incorrigíveis, fale com a gente

Abraço.

Do you need help with Assessment and Troubleshootings in your Oracle Siebel CRM environment or in the Database? Contact us.

By Neilson Faria
Siebel Architect & Troubleshooter

Assine nossa newsletter.

Your subscription could not be saved. Please try again.
Your subscription has been successful.

Compartilhe esse conteúdo com seus contatos

Deixe um comentário