Sql 用户informix持有表锁
我正在AIX上运行Informix v12.10。 当我以用户informix身份登录时,就会出现问题。我将在SQL中运行一个简单的查询,例如“从海洋中选择颜色 这显然会在该表上放置一个打开的光标锁-太好了。现在,为了确定锁是否确实在表上,我使用:Sql 用户informix持有表锁,sql,informix,aix,Sql,Informix,Aix,我正在AIX上运行Informix v12.10。 当我以用户informix身份登录时,就会出现问题。我将在SQL中运行一个简单的查询,例如“从海洋中选择颜色 这显然会在该表上放置一个打开的光标锁-太好了。现在,为了确定锁是否确实在表上,我使用: onstat -g opn > filename.txt 将输出重定向到一个文件,以便我们可以对其进行筛选。然后 cat filename.txt | grep -p hexnumber 其中,hexnumber是表的十六进制数。然后使用
onstat -g opn > filename.txt
将输出重定向到一个文件,以便我们可以对其进行筛选。然后
cat filename.txt | grep -p hexnumber
其中,hexnumber
是表的十六进制数。然后使用
onstat -u | grep session id
现在,锁由用户informix持有,当我关闭会话并等待任意时间并重做处理时,锁仍然存在
请说明此锁未被释放的原因。正在打开的表不是锁。带有明显的“自我提升”警告,我建议您使用“ixtableuse”()。例如,如果有任何东西阻止ALTER table,它应该会提供信息
如果你觉得没用,请告诉我原因。如果您觉得它有用,但发现任何问题,请执行相同操作。正在打开的表不是锁。带有明显的“自我提升”警告,我建议您使用“ixtableuse”()。例如,如果有任何东西阻止ALTER table,它应该会提供信息
如果你觉得没用,请告诉我原因。如果您觉得它有用,但发现了任何问题,请执行相同的操作。当后端Informix会话终止时,对该表的引用将消失 “结束会话”是什么意思 如果只是关闭应用程序,而应用程序未关闭连接,则会话可以处于活动状态一段时间
您可以在会话线程上使用
onstat-gses
和onstat-gstk
来查看发生了什么。当后端Informix会话终止时,对表的引用将消失
“结束会话”是什么意思
如果只是关闭应用程序,而应用程序未关闭连接,则会话可以处于活动状态一段时间
您可以在会话线程上使用
onstat-gses
和onstat-gstk
来查看发生了什么。在grep
上-p
做了什么?使用BSDgrep
,它表示“在递归搜索中不遵循符号链接”;对于Linux,它似乎没有任何意义(Ubuntu 16.04)。还有什么理由不使用grep-p hexnumber filename.txt
?(最后一个主要是修辞性的-我基本上确定没有一个好的理由不让grep
打开文件。)但是,这些都不会直接影响您的根本问题。您说的是“表的十六进制数”。你是如何确定这个数字的?(从“informix.systables”中选择十六进制(partnum),其中tabname='ocean';
?)。为什么要使用onstat-gopn
而不是onstat-k
来确定持有哪些锁?您是如何建立会话ID的?大致上,您可以更明确地将点连接起来。能否显示onstat-g opn
信息部分的标题行?我很想问“为什么您要作为用户informix工作”,但我们可以跳过这个问题。更重要的是,这只会发生在用户informix上,还是会发生在另一个权限较低的用户身上?在表上运行查询时,是否使用DB Access?当您稍后进行检查时,DB Access是否停止运行?或者“关闭会话”是什么意思?正如Jonathan提到的,目前这里没有太多的工作要做。显示的锁类型是什么?也许完整的onstat-gopn或onstat-k输出会有所帮助。一般来说,select语句不应该在表或行上放置比共享锁更严格的限制,除非数据库是模式Ansi或会话隔离大于上次提交。这些锁仅在select语句处于活动状态时保留。另外,锁可能属于不同会话的informix用户,例如dbscheduler。在grep
上-p
做什么?使用BSDgrep
,它表示“在递归搜索中不遵循符号链接”;对于Linux,它似乎没有任何意义