Igor, 

Não sei te dizer se existe uma forma semelhante do Cahé funcionar como no Postgre, já que você mencionou que o registro está em edição. Isso até me soa estranho não ocorrer problemas de concorrência no registro no Postgre.

Sobre o gerenciamento dos locks você pode verificar essa documentação Managing the Lock Table. Também recomendo a verificação de outra parte esclarecedora sobre este tema: Locking and Concurrency Control 

Boa sorte! 

Olá Igor. 

Toda vez que é efetuado algum UPDATE em registros da tabela, o mesmo entra em Lock durante o processo de atualização, justamente para não permitir que mais de um processo tente atualizar o mesmo registro ao mesmo tempo. 

Conforme você mesmo mencionou: "Esse erro ocorre quando há mais de uma cópia sendo feita simultanemanente. Além disso, percebemos erros de locking, em outras operações mais básicas como edição de registros.

Recomendo verificar na documentação o tópico sobre concorrência, que pode te ajudar a identificar a forma mais apropriada para tratar o seu caso: 


Object Concurrency Options: 
https://docs.intersystems.com/iris20243/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_concurrency

Depois retorna aqui pra gente saber se você conseguiu resolver ou não 😉 

Bom dia, Marcio. 

Você encontrou registro do erro nos logs do Caché (cconsole, erros de app)? 

Em relação aos privilégios de acesso, você verificou se está habilitado corretamente para o Caché ser acessado pelo dblink? 

Encontrei um artigo (antigo) que pode te ajudar com os pré-requisitos para a criação e execução de um dblink. Apesar de ser sobre o Oracle, pode de dar alguma dica! 💡
https://www.devmedia.com.br/criacao-de-database-links/2748

Hi Davidson. 

As far as I know, the IP shown in IRIS is the one provided by the operating system. It is not possible to make any changes in IRIS.

The format shown in your example follows the IPV6 protocol standard, where: "Addresses written in eight groups of four hexadecimal digits, separated by colons (:)" . You can check the page for more info:   https://pt.wikipedia.org/wiki/IPv6#:~:text=Os%20endere%C3%A7os%20IPv6%20s%C3%A3o%20normalmente,por%20exemplo%2C%20o%20mais%20pr%C3%B3ximo.

I also found this link with a related topic.
https://serverfault.com/questions/408667/how-do-i-disable-ipv4-mapped-ipv6 

Maybe it will help you. 

Oi Jenifer, 

Você tentou usar o argumento de restrição %NOJOURN? 

  • %NOJOURN — suppress journaling of the rows being deleted and disable transactions for the duration of the deletions. None of the changes made in any of the rows are journaled, including any triggers fired. If you perform a ROLLBACK after a statement with %NOJOURN, the changes made by the statement will not be rolled back.

https://docs.intersystems.com/iris20231/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_truncatetable#RSQL_truncatetable_desc_restrictargs

Talvez você tenha o resultado que está buscando. 

Tenta aí e me avisa se funcionou 😉  

Boa tarde, Igor. 
Pode passar mais informações a respeito dessa troca de ambiente, teve alteração de sistema operacional? teve migração da versão do IRIS também?   Como foi feito a montagem do banco no novo servidor ?

O erro está ocorrendo nas rotinas de consultas em cache.   

Existe uma documentação com instruções para migração de versão, se for o seu caso sugiro verificar:  https://docs.intersystems.com/iris20232/csp/docbook/DocBook.UI.Page.cls?... 

Oi Daniella, 

Referente a sua questão eu tinha feito essa pergunta na mensagem anterior: 

1) O erro <NOROTINE> indica que a rotina YYHORG002 não existe. Isso pode ter ocorrido se a YYHORG002 não foi compilada. Você verificou se a classe foi compilada com sucesso?  

Você verificou ? 

Oi Daniella. 
Tudo bem? 

Seguem algumas considerações que observei a respeito do seu código: 

1) O erro <NOROTINE> indica que a rotina YYHORG002 não existe. Isso pode ter ocorrido se a YYHORG002 não foi compilada. Você verificou se a classe foi compilada com sucesso? 

2) Se você está trabalhando com classes, por quê não está chamando ao método usando a orientação a objetos, e sim chamando a rotina gerada através da compilação ?  

Exemplo:

substituir de: set sc $$ValidarPalindromo^YYHORG001(str
para : set sc = ##class(YYHORG001).ValidarPolindromo(str)

Observações: 

1ª - está faltando na assinatura do método o tipo do retorno:
       Ex1: Method ValidarPalindromo(string) As %Status
     
 Ex2: 
Method CalcularMedia(stringByRef retMedia) As %Status (ou o tipo desejado)

2ª - No método CalcularMedia(stringByRef retMedia) o segundo parâmetro retMedia está definido com passagem por referencia, e na chamada da rotina você deveria usar o ponto (.) antes da variável: .retMedia 

3ª - No mesmo método você está retornando o mesmo valor de retMedia que foi enviado na chamada ao método. Está correto?  Desta forma as variáveis media e retMedia terão sempre o mesmo valor.

4ª - Se os métodos não são de instancia (que acessam dados do objeto da classe) e são chamados como métodos de operação, eles devem ser definidos como ClassMethod para serem acessados diretamente sem instanciar a classe. 
 

Espero ter ajudado!
Boa sorte 🤞🏼 

Olá Gustavo! 

Seja bem-vindo a nossa comunidade de desenvolvedores e ao mundo InterSystems. 

Vou listar aqui algumas dicas para você:

1- Verifique em nossa documentação online publica, que é separada por tópicos, quais os assuntos que mais te interessam e que você quer se aprofundar. Lá você irá encontrar todas as explicações e descrições. 
https://docs.intersystems.com/

2- No nosso portal de aprendizagem, InterSystems Learning, você vai encontrar vários videos tutoriais e cursos que ensinam como desenvolver e aprimorar os conhecimentos das plataformas InterSystems. Minha sugestão para iniciantes é explorar os caminhos de aprendizado, disponível no catálogo na página principal do portal. Segue o link direto: InterSystems Learning Paths . Os "caminhos" são separados por tópicos de interesse: arquitetura, desenvolvimento, integração, etc ... 

Se você precisar de outras orientações é só postar aqui que a Comunidade te responde 😉  

Espero ter ajudado.
Boa sorte e divirta-se!