informix-4gl常见错误

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Informix-4gl编程过程中常见错误

Informix -244 错误:

Could not do a physical-order read to fetch next row.具体错误解释:

#finderr -244

原因:

a.锁表

b.记录太多

c.页损坏

d.某个进程死了以后资源未释放导致

在数据库端用 onstat –g ses/onstat –g sql /

Onstat –k 等找出锁表进程,用onmode –z结束该进程,不行,重启数据库释放。

锁方式:

行方式(row),页方式(默认page),表方式(table)。

解决:

1.降低锁级别

2.减少加锁事务的时间跨度

3.设置等待解琐时间

相关命令:

)检查索引及页损坏情况

#oncheck –cID database_name:table_name

) 查看锁级别

#oncheck –pt database_name:table_name

)设置锁级别(行方式)

#alter table table_name lock mode(row)

)设置隔离级别

#set isolation to dirty read

)设置等待解锁时间(不宜过大)

#set lock mode to wait second(秒)

不等待

#set lock mode to not wait

1:$ onstat -k | grep HDR+X

HDR+X 为排他锁

HDR 头

X 互斥

owner

是正持有锁的线程的共享内存地址

2:$ onstat -u |grep c60a363c

c60a363c 为1中查到的owner内容。

sessid

是会话标识符编号

3:$ onstat -g ses sessid

根据sessid得到进程pid

pid

与此会话的前端关联的进程标识

$ onstat -g sql sessid

通过上面命令查看执行的sql语句

4:$ ps -ef |grep pid

由此,我们可得到锁表的进程,可根据实际锁表进程的重要程度的具体情况采取相映处理方法:

对于重要且该进程可以自动重联数据库的进程,可以用onmode -z sesid 的方法杀掉锁表session,

$ onmode –z sessid

否则也可直接杀掉锁表的进程kill pid。

$ kill -9 pid

将表的页锁改为行锁

参考语句为

unload to optimize.sql delimiter "" select 'alter table

'||tabname||

' lock mode(row)'||';'from systables where locklevel=" P" and tabid > 99

将卸载的optimize.sql稍微删除一下其中出现的字符或乱码,后运行,即可把表的页锁改为行锁

相关文档
最新文档