Esta é uma resposta geral do Postgres, e não específica para heroku
(A resposta simples e estúpida para esta pergunta pode ser ... apenas reinicie o postgresql. Supondo que isso não seja desejável ou não seja uma opção ...)
Encontre o PID executando este sql:
SELECT pid , query, * from pg_stat_activity
WHERE state != 'idle' ORDER BY xact_start;
(A consulta pode precisar de reparo dependendo da versão do postgres - eventualmente, basta selecionar * de pg_stat_activity). Você encontrará o pid na primeira coluna (esquerda) e a primeira linha (superior) provavelmente será a consulta que você deseja encerrar. Vou assumir que o pid é 1234 abaixo.
Você pode cancelar uma consulta por meio do SQL (ou seja, sem acesso ao shell) desde que seja sua ou tenha acesso de superusuário:
select pg_cancel_backend(1234);
Essa é uma solicitação "amigável" para cancelar a consulta 1234 e, com alguma sorte, ela desaparecerá depois de um tempo. Eventualmente, isso é mais eficiente:
select pg_terminate_backend(1234);
Se você tiver acesso ao shell e permissões de root ou postgres, também poderá fazê-lo a partir do shell. Para "cancelar" pode-se fazer:
kill -INT 1234
e para "encerrar", simplesmente:
kill 1234
NÃO:
kill -9 1234
... que muitas vezes resultará em todo o servidor postgres em chamas, então você também pode reiniciar o postgres. Postgres é bastante robusto, então os dados não serão corrompidos, mas eu recomendo não usar "kill -9" em qualquer caso :-)
Um "inativo na transação" de longa duração geralmente significa que a transação não foi encerrada com um "commit" ou um "rollback", o que significa que o aplicativo está com bugs ou não foi projetado adequadamente para funcionar com bancos de dados transacionais. A "inatividade na transação" de longa duração deve ser evitada, pois também pode causar grandes problemas de desempenho.