Avalados por :

Como encerrar uma sessão no HANA Studio sem reiniciar - Guia passo a passo

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Cargando...

Quero encerrar uma sessão no HANA versão 80. Através do HANA Studio, encontrei a sessão e a encerrei com 'Cancelar sessão...'. O estado da sessão mudou para 'EXECUÇÃO (CANCELAMENTO SOLICITADO)', mas nunca foi encerrada. Existe alguma forma de encerrar realmente a sessão sem reiniciar o HANA?

Obrigado,

Scott

image1.JPG
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Scott Xu,

você pode tentar o seguinte:

ALTER SYSTEM DISCONNECT SESSION '<connection_id>'

hdbcons 'transaction c <transaction_id>'

pode levar mais tempo para cancelar uma consulta longa em execução. Consulte a nota 2092196, 233401

espero que te ajude,

Nicholas Chang

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá, parece que a nota da SAP não está carregando. Você lembra qual era a solução proposta pela nota?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Scott,

Além disso, para saber como encerrar/cancelar corretamente uma sessão no SAP HANA, consulte a nota 2092196 - Como: Encerramento de Sessões no SAP HANA

Saudações,

Ning

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Foi explicado algumas vezes antes e não tenho certeza do porquê ainda parece ser um mistério que às vezes as sessões não são canceladas imediatamente (ou nunca).

Do meu livro Administração do SAP HANA | Livro e E-Book - por SAP PRESS:


10.2.4 Cancelar uma sessão
Às vezes pode ser desejável não apenas cancelar uma declaração em execução de uma sessão, mas também desconectar completamente a sessão. O comando para isso é ALTER SYSTEM DISCONNECT SESSION '' e pode ser usado de forma semelhante ao comando CANCEL SESSION. A diferença entre isso e o comando CANCEL WORK é simplesmente que não apenas a declaração atual será cancelada, mas a sessão em si será encerrada.

Nota
Desconectar a sessão não é uma forma "mais forte" de forçar o término de uma declaração em execução. Com qualquer uma das opções, a declaração em execução primeiro deve reconhecer a flag de cancelamento e em seguida o rollback da transação deve ser realizado, o que também pode levar um tempo considerável. Se o comando CANCEL WORK não conseguiu parar uma declaração em execução, então não faz sentido tentar DESCONECTAR SESSÃO.

10.2.5 Problemas com o Cancelamento de Sessões

Como você viu, a capacidade de interromper comandos em execução e desconectar sessões depende da ideia de que a sessão a ser cancelada verifica ativamente se a flag de cancelamento está definida. Esse abordagem tem a desvantagem de que há situações em que a sessão não pode verificar a flag e, portanto, nunca pode ser cancelada.
Por exemplo, uma sessão poderia abrir uma transação e atualizar uma tabela, mas não confirmar a atualização. Em vez disso, a sessão não faz mais nada e simplesmente mantém um bloqueio no registro modificado (por exemplo, imagine um usuário que tem um formulário de entrada de dados aberto e sem salvar sai para almoçar). Se outras sessões precisarem alterar esse registro também, elas terão que esperar até que a primeira sessão libere o bloqueio.

Nessa situação, cancelar a sessão do detentor do bloqueio não ajuda, porque a sessão atualmente não está executando nenhum código que possa verificar a flag de cancelamento. Essa situação, em que a sessão está INATIVA, só pode ser resolvida desconectando a sessão.

O problema com isso é óbvio: e se o aplicativo cliente estiver processando legitimamente os dados e precisar gravar os resultados de volta no banco de dados? Nesse caso, o trabalho será perdido e a sessão terá que ser reiniciada. Portanto, é importante investigar por que a sessão está inativa enquanto uma transação está aberta e decidir caso a caso se desconectar a sessão. (Veremos como encontrar quem está executando uma sessão na Seção 10.3).

Um segundo problema é que às vezes leva vários minutos até que o rollback de uma sessão seja concluído com sucesso. Durante esse tempo, não há sinais visíveis, no monitor de Threads, por exemplo, de que o thread específico está marcado para término. Isso poderia levar os administradores de banco de dados a tentar executar o comando CANCEL SESSION repetidamente até que funcione. Claramente, isso é inútil.

Para garantir que os comandos de controle de sessão sejam compreendidos, você pode examinar o arquivo de rastreamento do servidor de Índices no Listagem 10.4.
[...]
[12351]{301610}[-1/-1] 2013-12-19 03:03:05.410801 i SQLSessionCmd
Statement.cc(03254): 
o comando de controle de sessão é realizado por 301610, 
usuário=LARS, usuário de aplicação=I028297, 
fonte de aplicação=csns.sql.editor.SQLExecuteFormEditor$1$1
.run(SQLExecuteFormEditor.java:796);
, consulta=ALTER SYSTEM CANCEL SESSION '301611'
[...]

Listagem 10.4 Extrato do Arquivo de Rastreamento do Servidor de Índices

No caso de uma declaração ou cancelamento de sessão não ter sucesso de forma alguma, pode ser que o SAP HANA esteja atualmente executando uma rotina que ainda não verifica a flag de cancelamento. Para encontrar essas rotinas e melhorá-las, o desenvolvimento do SAP HANA precisa conhecê-las. Essas informações podem ser coletadas por meio de um dump em tempo de execução. A Nota da SAP 1951590 cobre isso.

Nesse caso, infelizmente, as únicas possibilidades de interromper a sessão em execução são forçar o cliente a liberar o bloqueio (se possível), interromper o processo do cliente ou, como último recurso, interromper e reiniciar todo o processo do servidor de Índices, o que também encerrará todas as outras sessões.

Portanto, antes de dar esse último passo, considere se o cancelamento pode esperar, por exemplo, até que a maioria dos usuários tenham encerrado a sessão e os trabalhos importantes tenham sido concluídos. Além disso, você deve abrir um chamado com o Suporte da SAP para essa situação e garantir que o dump em tempo de execução seja coletado para que a causa raiz possa ser analisada mesmo que o sistema seja reiniciado. Em resumo, não se apresse em cancelar threads reiniciando o sistema!
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?