Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91806143
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-04-07 08:13:30

  出处:Unix爱好者家园unix-cd.com   
OnLine非正常结束时,描述有关OnLine进入脱机方式原因的信息将写入日志,下面时OnLine结束时系统日志中登陆日志的示例:


Process Aborted Abnormally: pid=22500 user=210 us=c003f15c flags=a01


Process Aborted Abnormally (critial section):pid=22500 user=210 flag=a01

INFORMIX-OnLine entering ABORT mode!!! INFORMIX-OnLine Stopped


日志条目显示一个进入临界状态的sqlturbo进程非正常结束,临界状态是指一个进程执行写调用而不能被中断所用的术语。如果一个进程处于临界状态时非正常结束,OnLine为保护数据完整性而进入脱机方式。当OnLine重新启动时会执行快速恢复,回滚所有未完成的事务。

如果持有锁存器(latch)的进程非正常结束,OnLine也会非正常结束。锁存器用于控制对诸如缓冲区,锁定表等共享内存资源的访问。为防止干涉其它进程申请共享内存资源,INFORMIX OnLine控制对有锁存器的资源表的访问。

虽然OnLine后台进程对夭折的进程进行日常的清理工作,但数据一致性阻止后台进程在清除过程中释放共享内存锁存器。对后台进程来说,判断用户进程是否完成对数据库的修改是不可能的。为解脱这以一困境,OnLine强制自己进入脱机方式。当OnLine回到联机(Online)方式时,自动进行快速恢复。快速恢复使OnLine达到与最后一个完成事务一致的状态。

当持有锁存器的进程结束时,会生成以下的条目:

Process Aborted Abnormally: pid=10743 user=104 us=60204c flags=21

Process Aborted Abnormally (latch): pid=10743 user=104 flags=21

INFORMIX-OnLine entering ABORT MODE!!!

-- OnLine Aborting -- us=6019a8,pid=11987,uid=1000

这些日志条目提供的信息在判定进程为何非正常结束时十分有用,条目中各域的定义如下:

pid---------sqlturbo UNIX进程id

user--------真正用户id

us----------共享内存中用户结构的地址

flags-------定义如下

0x0000001------0x0000001 正在使用的用户结构

0x0000002------0x0000002 等待锁存器

0x0000004------0x0000004 等待锁

0x0000008------0x0000008 等待缓冲区

0x0000010------0x0000010 等待检查点

0x0000020------0x0000020 等待读取调用

0x0000040------0x0000040 向存档磁道写逻辑日志

0x0000080 等待清除长事务

0x0000100------0x0000080 特定turbo检测用户

0x0000200 处于事务中

0x0000400 进程在回滚

0x0000800------0x0000100 处于临界状态的进程继续...

0x0001000------0x0000200 特定的后台进程

0x0002000 开始工作日志登记

0x0004000------0x0000400 存档

0x0008000------0x0000800 清除死进程

0x0020000------0x00002000 特定缓冲区刷新进程

0x0010000------0x0002000 等待逻辑缓冲区写入

0x0040000------0x0004000 该进程是远程服务器

0x0080000 该进程正完成远程任务

0x0100000------0x0008000死锁超时

-----------0x00010000-----普通锁超时

-----------0x00020000-----超时等待期已结束 -----------0x00040000-----等待事务


以上的日志条目中,sqlturbo进程的UNIX进程id为10743,真正用户id为104,共享内存中用户结构的地址为0x60204c,标志显示用户结构正在使用中,OnLine引擎正处于读取调用之中(0x00000001,&0x00000020)。

这个信息可以标识非正常结束的用户,查明他或她是否遇到意外的错误,或以某种方式导致进程的非正常结束。用户不应对Informix进程使用kill -9命令。管理员可以用onmode -z pid命令中止某一个sqlturbo线索。如果进程正持有锁存器或处于临界状态,tbmode命令不会立即中止该进程。
阅读(679) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~