首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户informix持有表锁

用户informix持有表锁
EN

Stack Overflow用户
提问于 2017-08-18 12:22:40
回答 2查看 1.1K关注 0票数 0

我正在AIX上运行Informixv12.10。在以用户informix身份登录时,我遇到的问题。我将在SQL中运行一个简单的查询,例如“从海洋中选择颜色;”

这显然会在那个表上放置一个打开的光标锁--太好了。现在,要确定锁是否实际在表上,我使用:

代码语言:javascript
复制
onstat -g opn > filename.txt

将输出重定向到一个文件,这样我们就可以筛选它。然后

代码语言:javascript
复制
cat filename.txt | grep -p hexnumber

其中hexnumber是表的十六进制数。然后我让用户用

代码语言:javascript
复制
onstat -u | grep session id

现在,锁由用户informix持有,当我关闭会话并等待任何时间并重新执行处理时,锁将保持不变。

请告知此锁为何未被释放。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-04 16:57:29

当后端Informix会话终止时,对表的引用将消失。

你所说的“结束会议”是什么意思?

如果您只是关闭应用程序,而应用程序没有关闭连接,则会话可以活动一段时间。

  1. 服务器会话可能仍在处理sql --如果是这样,服务器将不会注意到客户端应用程序已经消失,直到sql完成,并且服务器收到了一个错误,无法将结果发送到客户端应用程序。
  2. 如果服务器会话没有处理sql,则服务器将等待来自客户端的命令。除非像TCP/IP这样的东西在服务器会话中启动,否则会话将被卡在网络读取调用中,并且会话不会消失。

一旦服务器收到客户端消失的错误,服务器仍将不得不回滚任何活动事务(使用GB的活动事务可能需要几个小时!)。

事务回滚完成后,服务器将清除/释放活动游标/准备好的sql语句,然后服务器会话将消失。

您可以在会话线程上使用onstat -g sesonstat -g stk来查看正在发生的事情。

票数 1
EN

Stack Overflow用户

发布于 2017-08-21 09:52:36

正在打开的桌子不是锁。带有明显的“自我推销”警告,我建议您使用"ixtableuse“(https://github.com/domusonline/InformixScripts/blob/master/scripts/ix/ixtableuse)。例如,如果有任何阻止ALTER的东西,它应该会给您提供信息。

如果你觉得它没用,请告诉我为什么。如果你觉得它有用,但你发现任何问题,请做同样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45756552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档