热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

informix锁

 1.在将一个表unload时,出现:244:Couldnotdoaphysical-orderreadtofetchnextrow107:ISAMerror:recordislocked在不重启动数据库

 1.在将一个表unload,出现:

244:Could not do a physical-order read to fetchnext row

107:ISAM error:record is locked

在不重启动数据库情况下,如何解锁?

 

onstat -g sesonstat -g sql可以通过SQL语句检查那些用户,那些SQL在操作这张表。

可以重点检查onstat-g sqlUPDATE,DELTE,INSERT语句。

 

onstat -k看锁的情况,通过输出的tblsnum一列检查是否这张表被锁了。

tblsnum可以通过下面的SQL去获得

select tabname,hex(partnum) from systableswhere tabname="tabname"

 

这个是我经常用得看谁锁表得小脚本,后面可以再加上onstat -g 得选项。看具体执行了什么东西。

代码:

 

onstat -k|grep X|awk '{print $3}'|sort -u>tmp1.txt

cat tmp1.txt|while read line

do

onstat -u|grep $line

done

rm tmp1.txt

 

2.近期我在对informix数据库的表进行update时,总也报-244的错误,我已经在配置文件中加大的锁的个数,

但还是不行,不知-244的错误还与什么有关系?

 

请查看该表的锁级别,有page,row之分

 

SQL code只能说明操作上的故障,最终要看ISAM错误代码。

只要索引没问题的前提下,估计是锁并发性的问题,而不是锁不够的问题。

可能通过走索引的方式去尽量避免。

 

3.Informix里如果应用将某个表锁住了,如何查出是那个进程锁住的,又如何释放?

 

1、发现锁表(以tab_test为例)。

2、在systables中找出tab_test对应的partnum

3、用计算器将此数转换成十六进制。

4、用onstat -k|grep [十六进制] 找到相应的锁,并记录相对应的owner号,此owner号表示进行此操作的用户进程,找到rowid0的记录(如果有的话)。

5、用onstat -u|grep [owner] 找到相应的用户进程。

6、如果想看看到底是哪个语句产生的锁,用:onstat -g ses [owner] 查看语句。或者用onmode -z [owner]杀之。

 

 

谢谢楼上的,解决了我找了很久的问题。不过最后一点是session id

 

 

4.如果您执行SQL语句时候出现下面的错误提示:

244: Could not do a physical-order read tofetch next row.

113: ISAM error: the file is locked.

毫无疑问,您要访问的表被别人锁住了。

 

如果您的使用了set lock mode to wait 语句,onstat -u 命令可以报告出会话在等待锁资源的信息(

 

标志位“L”),如:

c0000000379015e8 L--PR-- 4626 informix tJc0000000006e45f0 20 1 0 0

超时后报错:

244: Could not do a physical-order read tofetch next row.

154: ISAM error: Lock Timeout Expired

 

那么,怎么样找出是谁锁住了这个表呢?介绍一个小技巧,执行下面SQL语句:

 

DATABASE sysmaster;

SELECT owner FROM syslocks WHEREtabname="表名";

 

得到的owner就是加锁的会话号SID,于是我们就可以使用 onstat -g ses SID 命令查看该会话的信息,

 

包括是哪个用户、执行了什么SQL语句。还可以通过DBA身份使用onmode -z 命令杀断该会话。

 

 

不过方法真的不错,比我的好多了:

1、发现锁表(以tea为例)。

2、在systables中找出tea对应的partnum

3、用计算器将此数转换成十六进制。

4、用onstat -k|grep [十六进制] 找到相应的锁,并记录相对应的owner号,此owner号表示进行此操作的用户进程。

5、用onstat -u|grep [owner] 找到相应的用户进程。

6、如果想看看到底是哪个语句产生的锁,用:onstat -g ses [owner] 查看语句。或者用onmode -z [owner]杀之。

 

 

 

5.我有一个表,再用ISQL查询时,提示记录被锁定,查不出任可内容,用unlock table 表名,又提示我表未被我锁定。

确认为表中的某一记录被锁定了。在不重启数据库和表数据情况下,怎样解锁。

 

记录应该是被其他进程的数据库访问锁住了,

只能找出源头,释放锁才行。

 

解锁步骤:

1、发现锁表(以tpm_radio_bts为例)。

2、在systables中找出tpm_radio_bts对应的partnum

3、用计算器将此数转换成十六进制。

4、用onstat -k|grep [十六进制] 找到相应的锁,并记录相对应的owner号,此owner号表示进行此操作的用户进程。

5、用onstat -u|grep [owner] 找到相应的用户进程。

6、如果想看看到底是哪个语句产生的锁,用:onstat -g ses [owner] 查看语句。或者用onmode -z [owner]杀之。

 

 

6.怎样查看数据库现在用的是什么锁?怎样设置informix的锁? 我现在要把一个表从页级锁改为记录琐该怎么办啊?

1、看表的锁级别

1oncheck -ptdatabase_name:table_name

2select tabname, locklevel fromsystables where ...

2、设置锁级别

   alter tablet_test lock mode (ROW)



推荐阅读
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
author-avatar
Mr丶X8063_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有