Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用户informix持有表锁_Sql_Informix_Aix - Fatal编程技术网

Sql 用户informix持有表锁

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是表的十六进制数。然后使用

我正在AIX上运行Informix v12.10。 当我以用户informix身份登录时,就会出现问题。我将在SQL中运行一个简单的查询,例如“从海洋中选择颜色

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

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会话终止时,对该表的引用将消失

“结束会话”是什么意思

如果只是关闭应用程序,而应用程序未关闭连接,则会话可以处于活动状态一段时间

  • 服务器会话可能仍在处理sql—如果是这样,服务器将不会注意到客户端应用程序已离开,直到sql完成,并且服务器收到无法将结果发送到客户端应用程序的错误

  • 如果服务器会话未处理sql,则服务器将等待来自客户端的命令。在像TCP/IP keepalive这样的东西启动之前,服务器会话将被卡在网络读取调用中,并且会话不会消失

  • 一旦服务器接收到客户机已离开的错误,服务器仍必须回滚任何活动事务(使用GB的活动事务可能需要数小时!)

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


    您可以在会话线程上使用
    onstat-gses
    onstat-gstk
    来查看发生了什么。

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

    “结束会话”是什么意思

    如果只是关闭应用程序,而应用程序未关闭连接,则会话可以处于活动状态一段时间

  • 服务器会话可能仍在处理sql—如果是这样,服务器将不会注意到客户端应用程序已离开,直到sql完成,并且服务器收到无法将结果发送到客户端应用程序的错误

  • 如果服务器会话未处理sql,则服务器将等待来自客户端的命令。在像TCP/IP keepalive这样的东西启动之前,服务器会话将被卡在网络读取调用中,并且会话不会消失

  • 一旦服务器接收到客户机已离开的错误,服务器仍必须回滚任何活动事务(使用GB的活动事务可能需要数小时!)

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


    您可以在会话线程上使用
    onstat-gses
    onstat-gstk
    来查看发生了什么。

    grep
    -p
    做了什么?使用BSD
    grep
    ,它表示“在递归搜索中不遵循符号链接”;对于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
    做什么?使用BSD
    grep
    ,它表示“在递归搜索中不遵循符号链接”;对于Linux,它似乎没有任何意义