我正在使用VPN (端点安全,检查点)从我的计算机上的IBExpert建立到FireBird2.1数据库的连接。有时,我只是忘记断开与数据库的连接,并且只取消/取消VPN会话。
当我再次连接到VPN和数据库时,我可以在mon$附件中看到前面的连接/附件仍然存在,其未解决的事务正在导致死锁错误(属于前一个附件--可以通过死锁错误的错误消息中报告的事务号来精确验证)。
因此- VPN有时会保留会话,而这些VPN会话会保持Firebird附件的存在。
有没有办法(使用SYSDBA连接)结束当前Firebird会话中的其他Firebird附件?
我已经联系了VPN管理员以取消VPN会话,但这需要时间。数据库关闭是不可能的- DB处于生产模式。因此,使用SQL结束Firebird附件是唯一留给我的选项--如果存在这种选项的话?
发布于 2022-03-16 13:29:02
在FireBird2.5及更高版本中,您可以从MON$ATTACHMENTS中删除连接以终止连接。据我所知,Firebird 2.1中的监视表不支持这一点。
考虑到即使Firebird 2.5也是终身制,而Firebird 2.1自2014年起就已经结束了,你真的应该考虑更新一下。
通常,Firebird使用SO_KEEPALIVE套接字选项来检测死连接,但这可能需要很长时间(取决于您的OS配置)。另一种选择可能是将dummy_packet_interval在firebird.conf中配置为非零值(值为秒,因此将其设置为一个合理的(读取,不要太低)值)。
https://stackoverflow.com/questions/71497306
复制相似问题