informix常用故障处理操作

合集下载

informix数据库的操作和维护

informix数据库的操作和维护

INFORMIX数据库的常用管理命令约定✧命令行中,<>括起来的内容不是实际要键入的内容,而是要键入的内容的说明。

✧命令行中,[]括起来的内容表示是可选项。

✧命令行中,a | b表示a或b选其中之一,为消除二义性,有时也用{a | b }表示。

✧命令行尾的\表示由于排版的限制一行写不下换到下一行,实际输入时可以不换行。

✧/* */括起来的斜体字表示注释。

1.简介INFORMIX-OnLine Dynamic Server(以下简称OnLine)提供了一个字符窗口界面的集成管理工具onmonitor,通过它可以完成除了数据备份外的大部分常用管理任务。

同时,OnLine还提供了一整套命令行管理工具,常用的有以下这些:命令功能oninit 启动OnLineonmode 改变模式和共享内存onstat 通过共享内存结构监视OnLine的操作状态oncheck 检查、修复、显示OnLine的磁盘结构ondblog 改变database的log方式onparams 修改逻辑和物理日志的配置参数onspaces 修改blobspace和dbspace的配置ontape 数据库备份和恢复工具onarchive 比ontape功能更强的备份和恢复工具dbexport 将整个database备份成文本文件格式dbimport 用文本文件格式的database备份重建databasedbschema 显示数据库、表的结构dbaccess 字符窗口界面的交互式SQL命令执行环境严格来说,最后四个命令不属于管理工具,但是因为在进行数据库管理时经常用到,所以也在此列出。

2.权限在Informix中,用户root和informix拥有最高的权限,可以执行所有的管理命令,可以查看所有database中的数据。

其次是属于informix组的用户,它们可以执行数据库server的启动和关闭等重要的管理命令。

其它不在informix组中的用户权限最低,只能执行一般的管理命令。

Informix错误代码中文解释(转1)

Informix错误代码中文解释(转1)

0 成功。

操作成功。

当 SQL 语句成功地执行时,数据库服务器把这个 SQLCODE 值返回给应用程序。

100 没有发现匹配的记录。

数据库服务器不能寻找更多的数据。

这个信息是ANSI 标准的 SQLCODE 值。

如果你想选择或取数据,遇到了数据结束,或没有数据匹配 WHERE 子句中的条件。

检查是否是空表。

使用这个 SQLCODE值决定一个语句什么时候到达数据结束。

要了解更多的信息,请参看适当的 INFORMIX-ESQL/C 程序员手册中的讨论。

数据库服务器能够返回这个 SQLCODE 值给在运行的程序。

1203 找不到信息文件数据提取不能找到所需的信息文件。

确保当你设置INFORMIXDIR 和 DBLANG 环境变量时,已指定了适当的路径名。

如果你在设置环境变量时需要帮助,请与系统管理员联系。

1204 你的系统遇到了一个未知的终端类型。

确认你正确地设置了 TERM 环境变量。

检查数据库名拼写正确与否。

如果你在设置环境变量时需要帮助,请与系统管理员联系。

2005 数据库<数据库名>;没有发现或不正确的格式。

检查数据库名拼写正确与否。

2008 表<表名>;在数据库中不存在。

在 DATABASE 节中所指定的数据库不含有在屏幕表格说明文件的 TABLE 节中包含的表名。

检查表名是否拼写正确。

2009 你没有选择数据库表。

必须在屏幕格式说明文件的 TABLE 节中,包含一个或多个表名。

2020 下表含有一个错误:<表名>;。

检查对系统运行指示中跟随出现的信息。

给出的错误包含指示的表。

4074 不能在你给出路径的目录中找到 C 语言的编译器。

这是一个 4GL 的编译器的信息。

你需要 C 编译器来完成编译程序的工作。

改变你的执行路径,以便在名字 cc 下能执行 C 编译器。

4102 请看错误编号<_号码>;。

这是一个 4GL 编译器的信息。

查找错误编码信息。

Informix数据库常用命令介绍

Informix数据库常用命令介绍

华为产品维护资料汇编 TELLIN智能网维护资料数据库基础知识目录目录第1章 Informix数据库常用命令介绍 (1)1.1 概述 (1)1.1.1 oninit (1)1.1.2 dbexport (2)1.1.3 dbimport (4)1.1.4 dbload (5)1.1.5 dbschema (7)1.1.6 oncheck (8)1.1.7 onload (9)1.1.8 onlog (10)1.1.9 onmode (11)1.1.10 onparams (13)1.1.11 onspaces (13)1.1.12 onstat (14)1.1.13 ontape (19)1.1.14 onunload (21)第1章 Informix数据库常用命令介绍1.1 概述Informix数据库服务器提供了在shell提示符下直接执行管理任务功能的应用程序。

列出这些应用程序:表1-1提示符下直接执行管理任务功能的应用程序以下对这些应用程序逐一简要说明。

1.1.2 oninit1. 功能说明oninit 应用程序用于改变系统的运行模式。

数据库有六种工作模式,它们是:离线(off-line)不运行状态●静模式(quiescent)在此模式下,用户不能连接到数据库,但可用onstat等命令查看数据库信息●在线(on-line)数据库运行状态●只读(read-only)只能读数据库但不能写●恢复(recovery)是一种临时状态,存在于从离线模式到静模式之间●关闭(shutdown)是一种临时状态,存在于从在线模式到静模式或离线模式oninit命令将在离线(off-line)状态的数据库启动为在线(on-line)模式,并初始化共享内存(shared memory),在作初始化之前,应先设置环境变量INFORMIXSERVER,否则数据库不建立sysmaster表,必须以root或informix注册才能执行本命令,本命令不但能初始化共享内存,还能初始化磁盘空间。

Unix系统的十大常见故障及解决方法

Unix系统的十大常见故障及解决方法

Unix系统的十大常见故障及解决方法SCO Openserver 5.0.5作为一种高效稳定、安全性能高的多用户操作系统,在金融、保险、电信等部门得到广泛的应用。

在系统日常维护工作中,有时会遇到一些系统故障。

下面店铺就为大家介绍一下Unix系统的十大常见故障及解决方法,望对大家能有所帮助。

常见故障现象及解决方法:一、打开计算机电源后,主控台屏幕上出现如下信息:boot not found cannot open stage 1 boot failure:error loading hd(40)/boot,然后死机。

分析:这表明系统根目录下的Boot文件丢失或找不到。

Boot文件是用于装载并执行UNIX程序的交互式程序,主要用于装载和执行UNIX操作系统的核心,在引导过程中Boot将读取/etc/default/boot,显示引导过程信息,装入并执行/Unix,所以当Boot文件丢失或找不到将导致系统引导失败。

解决方法:若Boot文件丢失:1.以Boot盘(应急软盘或安装光盘)引导。

2.在系统引导提示下敲入hd(40) unix,这个命令用于从硬盘把Unix核心载入。

然后输入root用户的口令,进入单用户模式,此时出现超级用户提示符#.3.卸载Boot文件系统,执行命令: umount /stand.4.装载Boot文件系统,执行命令:mount /stand.(说明:SCO Openserver5.0.5系统启动后将/stand文件系统设置为只读,且不能更改属性,用此方法使/stand目录可写。

)5.用命令把Boot软盘安装到系统中,执行命令:mount /dev/fd0135ds18 /mnt,然后用命令:cp /mnt/boot /stand将Boot 文件拷贝到/stand目录下。

6.用命令umount /dev/fd0135ds18(或umount /mnt)把Boot 盘卸载。

7.取出Boot盘,敲入haltsys或reboot命令重新引导系统。

Informix数据库维护及应急手册

Informix数据库维护及应急手册

北京国际会议中心东配楼二层邮政编码:100101电话:800-810-1818转5266Informix数据库维护及应急手册前言本手册适用于Informix数据库系统,用于数据库管理及使用人员对数据库的日常维护、数据库异常情况初步诊断及应急处理。

如何拨打800免费支持热线IBM Informix 数据库技术支持中心开通有免费支持热线8008101818转5266,周一至周五早8:30到晚5:00为普通热线支持时间,其他的为24*7服务支持时间(包括节假日和公休日,具体安排依据IBM公司人力资源部的公布为准)。

当发现数据库有任何异常现象时,请根据本手册中“数据库异常情况初步诊断方法”中的内容进行初步判断,如果判定为与数据库相关的问题,请保留好现场(保留现场的方法请根据本手册的“如何保留现场”执行),并请提前准备好如下的信息,以支持IBM Informix 支持中心的工程师能更快更有效分析解决问题:1、数据库的版本序列号IBM Informix 的版本序列号S/N形如AAD#J123456,在产品包上可以找到,如果无法确认,也可在命令行状态下($)敲入命令onstat –V来获得。

例如:Informix Dynamic Server Version 9.21.HC7 Software Serial Number AAD#J1234562、数据库的版本信息操作步骤与1同,其中9.21HC7为版本信息。

3、操作系统平台和版本信息该信息可通过敲入命令uname –a来获得。

4、数据库信息日志的内容如果已知信息日志的位置(通常称为online.log文件),则可忽略下面的步骤(1)至(5)。

(1) 以informix用户登陆进入IBM Informix数据库;(2) 在命令行状态下($)敲入env|grep INFORMIXDIR,找出INFORMIXDIR所对应的值,例如:INFORMIXDIR=/informix;(3) 在命令行状态下($)敲入env|grep ONCONFIG,找出ONCONFIG所对应的值,例如:ONCONFIG=onconfig.bill;北京国际会议中心东配楼二层邮政编码:100101电话:800-810-1818转5266 此例中,onconfig,bill为数据库配置文件。

Informix常见错误处理思路

Informix常见错误处理思路

数据库 chunk 出现异常,I/O 失败
• 故障现象: 数据库日志中出现 chunk IO 错误,使用 onstat –d 观察 chunk flag 的状态是 down 的状态,数据库操作中不能操作包含在这些 chunk 中的数据,如果使 用到这些数据可能会返回错误,严重情况下会导致数据库宕机。
Informix 常见错误处理思路及应用
深圳IT-叶万华
2019年1月10日
informix常见错误处理思路
逻辑日志满
频繁的锁冲突 长事务 I/O 失败
逻辑日志满
• 故障现象: 数据库不再进行任何操作,使用 onstat –l 命令观察逻辑日志状态,所有 的逻辑日志都处于已使用未备份状态,即 flags 为 U------ 标志。
• /informix-dba/194-informix.html 中国Informix数据库用户协会
所有的管理都存在一定风险,所有的监控都是为了更好的管理。希望同事们不 断总结经验,共享经验,从各方面提升自我。我们可以抱着怀疑的态度去肯定 自己,证实自己。任何操作都是有风险的,请大家多留意细节!
类似的锁表现象中,我们在日常的监控过程中会经常观察得到。
频繁的锁冲突
• 故障分析:
数据库在进行修改操作的时候为了防止其他用户的同时修改,都会在修改所涉及的数据上设 置对应的锁,如果其他用户再访问到这些已经被放置上锁的数据,就会出现锁失败。例如如 果需要知道在指定的表上是有哪些用户具体占用了锁,可以通过以下的方式查看: 执行 onstat –u来获得实际的 session 信息,从中就可以找到锁的拥有者。
长事务
• 故障处理: 根据数据库日志里面所提供的信息可以很方便的发现具体是哪一个事务造 成了长事务。系统在将某个事务判定为长事务以后就会自动对其进行回滚 操作。事后可以有针对性的调整应用将大的事务划分为小事务进行提交; 避免一个活动事务长时间没有后续的操作;提供充足的逻辑日志空间,这 里所指出的不仅是空间的总量需要增加,逻辑日志的个数也是应该增加的 ,因为判断的标准是以逻辑日志的使用个数所占比例来确定的。在 INFORMIX 9.3X 以后的版本中可以通过动态增加逻辑日志的手段避免由于 长事务带来的一些不良影响,在长事务回滚过程中如果逻辑日志空间被消 耗完毕,如果 DYNAMIC_LOGS 设置为 2,数据库服务器会自动在最后创 建的逻辑日志所存在的 dbspace 上查找空余空间,按照最后创建的逻辑日 志的大小自动在当前逻辑日志之后新增逻辑日志,如果不能满足需要则会 创建失败,需要管理员手工添加。

Informix常见错误处理方法思路

Informix常见错误处理方法思路

长事务
• 故障处理: 根据数据库日志里面所提供的信息可以很方便的发现具体是哪一个事务造 成了长事务。系统在将某个事务判定为长事务以后就会自动对其进行回滚 操作。事后可以有针对性的调整应用将大的事务划分为小事务进行提交; 避免一个活动事务长时间没有后续的操作;提供充足的逻辑日志空间,这 里所指出的不仅是空间的总量需要增加,逻辑日志的个数也是应该增加的 ,因为判断的标准是以逻辑日志的使用个数所占比例来确定的。在 INFORMIX 9.3X 以后的版本中可以通过动态增加逻辑日志的手段避免由于 长事务带来的一些不良影响,在长事务回滚过程中如果逻辑日志空间被消 耗完毕,如果 DYNAMIC_LOGS 设置为 2,数据库服务器会自动在最后创 建的逻辑日志所存在的 dbspace 上查找空余空间,按照最后创建的逻辑日 志的大小自动在当前逻辑日志之后新增逻辑日志,如果不能满足需要则会 创建失败,需要管理员手工添加。
Update Statistics的作用
为了提高数据库的效率,INFORMIX提供了一个基于成本的查 询优化器, 执行update statistics语句的作用就是将您创建的数据库 表的有关统计信息更新到系统sysmaster的相关表中,以便查询优化 器选择最佳的执行路径。当sysmaster库中没有相应的统计信息,或 者统计信息不十分准确时,优化器便无法制定一个行之有效的查 询策略,其结果必然是进行大量极其可怕的顺序扫描,产生严重 的性能问题。
address
number flags uniqid begin
size used %used
(注:红色部分为异常状态,如绿色部分也被使用完,数据库将出现异常。版 面上只显示出该店出现异常时用onstat –l监控到的部分信息。)
逻辑日志满

informix基本操作详

informix基本操作详

informix基本操作详oninit应用程序用于改变系统的运营模式。

informix数据库有六种模式:1:off_line:不运行状态2:Quiescent:静模式。

在此模式下用户不能连接到数据库,但是可用onstat 等命令查询数据库信息。

主要用于对系统进行底层维护操作。

3:on_line:运行状态4:read-only:只读模式5:recovery:恢复模式。

是一种临时状态,存在于从离线模式到静模式之间。

6:shutdown:关闭模式。

是一种临时状态,存在于从在线模式到静模式或者离线模式之间。

oninit -ipsvy-i :初始化数据库,包括磁盘空间,该参数只在安装完成之后做一次。

只会保留onconfig文件配置的初始化信息,其它全部消失。

-p:当数据库不正常宕机后,数据库中会保留临时表,这些表会占据一定的磁盘空间,一般在重启数据库的时候,数据库会自动删除临时表数据的,如果加上这个参数,则会继续保留这些数据。

-s:数据库启动至静模式,做维护工作,不受其它用户的干扰-v:正常启动数据库,并显示启动的过程信息-y:关闭交互式提示,自动选择yes。

-j:启动informix进入单用户状态。

(informix 11 之后版本)onmod e 应用程序提供以下功能:1:改变online的工作模式2:强制生成检查点3:立即改变该会话过程中online共享内存的驻留空间4:转换逻辑日志文件5:撤销online的数据库服务进程6:撤销online的事物只有注册为root或informix的用户才能执行onmode参数:-a :increase shared memory segment size。

增加共享内存大小-BC [1|2] :change server large chunk mode。

支持大chunk 模式-c [block|unblock] :do checkpoint Block or Unblock。

informix错误代码及解决方案

informix错误代码及解决方案

informix错误代码及解决方案-100 错误的描述:C—ISAM错误;向具有唯一索引的字段加入一个重复值。

系统的操作:该语句不被处理。

更正的方法:检查是否用iswrite,isrewrite,isrewcurr或isaddindex的方法,向一个具有唯一索引的字段加入一重复值。

-101 错误的描述:C-ISAM错误;文件没有打开。

系统的操作:该语句不被处理。

更正的方法:检查C-ISAM错误:C-ISAM文件是否已用isopen 调用打开,或者是否向一个以只读打开的C-ISAM文件中执行写操作。

-102 错误的描述:C—ISAM错误:C—ISAM函数含有非法参数系统的操作:该语句不被处理更正的方法:检查C—ISAM调用的第一个参数,是否超出相应的值域-103 错误的描述:C—ISAM错误;非法的关键字说明(太多的分量或太长)系统的操作:该语句不被处理。

更正的方法:检查组成该关键字说明的一个或多个元素,是否超出相应的值域。

(每个关键字的说明最多允许8个分量和120个字符)-104 错误的描述:C—ISAM错误:打开文件太多系统的操作:该语句不被处理。

更正的方法:在UNIX系统中(以及多数DOS系统中),每个进程打开文件夹的最大个数为20。

-105 错误的描述:C—ISAM错误:C—ISAM文件格式有误。

系统的操作:该语句不被处理。

更正的方法:C—ISAM文件的格式已被破坏,对该文件运行bcheck程序,修复被破坏了的索引。

如果bcheck不能修复该文件,须从后援存储介质上重新装入数据。

-106 错误的描述:C—ISAM错误;非互斥访问。

系统的操作:该语句不被处理。

更正的方法:当要增加或删除一个索引时,必须以互斥访问打开文件。

-107 错误的描述:C—ISAM错误:记录被锁住。

系统的操作:该语句不被处理。

更正的方法:由该调用请求的文件或记录不能被访问,这是因为该文件被其它用户锁住。

请稍等一会儿,再提出请求。

INFORMIX-OnLine故障诊断与排除

INFORMIX-OnLine故障诊断与排除

INFORMIX-OnLine故障诊断与排除(1)-系统不能进入静态方式---摘自互联网开放系统以其无与伦比的能力连接不同的计算机软件,硬件。

在这种环境下,诊断问题时就需要关注问题的全局与细节。

本文就如果诊断INFORMIX-Online的问题给出了良好的建议。

诊断问题的症状系统管理员诊断问题时首先要定义问题的症状。

∙系统是否难于进入静态(quiescent)状态?∙是否有非正常结束的INFORMIX系统进程?∙系统进程是否定期挂起?下面的讨论指出如何定位系统问题,讨论可能的起因,并对这些问题的解决提出建议。

系统不能进入静态方式该症状常常伴有一条错误信息。

一般错误是:tbinit:fatal error in shared memory creation (共享内存生成时有严重错误)检查系统初始化时定义的系统日志文件来发现错误的出处。

该日志的缺省名为$INFORMIXDIR/online.log。

在此文件中会看到与下面相近的信息:16:00:56 Cannot Open Primary Chunk '/dev/turbo_root',errno = 1316:00:56 Cannot Open Primary Chunk '/dev/turbo_root',errno = 1316:00:56 I/O error,Primary Chunk 'dev/turbo_root' -- Offline16:00:56 I/O lseek() chunk 1,pagenum 0, pagecnt 1 -->errno =916:00:56 INFORMIX-Online Stopped这些错误是由UNIX权限问题造成的。

OnLine产品需要由root来安装。

系统的部分可执行程序应属于root 或者root有权限。

所有INFORMIX系统文件的属主及权限都应该记录在$INFORMIXDIR/etc/onlinefiles中。

处理Informix故障偶得

处理Informix故障偶得

dr p i d x up t s dl o n e ima jn ;
del e f om et r upim a her a us= ”1 : t sw e st t ”
由此 可 知 ,此 程 序 首 先卸 下 数 据 库 表 u i s pt ma
中 sau tts为 1的 记 录 , 后 删 除 一 些 记 录 , 删 除 记 然 在
( )给 u i s建 索 引 ; 7 pt ma ( 8)执 行 s h命 令 :na e —S —U p b d o tp ccb
设 定 p b d 的 日 志 模 式 (o gn d )为 D - ccb 1g igmo e R
bu er f ed oggi l ng;
录 之 前 , 先 删 除 了 此 表 的 索 引 。 我 们 认 为 这 一 点 首
( 6)从 u i sb 中 取 记 录 插 入 u i s pt _ ma _ pt : ma
u odt l n a o¥ { a h} u i s P P t p t ¥ YY ee t , r m ma s lc I o c f
upim as w her s a us= ”1 : t e tt ”
0m 。
右 ,为 此 ,我 们 采 取 一 些 措 施 来 减 少 处 理 上述 处 理之 后 , 有 库表 恢 复正 常 。 所 经 计算 : 述 处 理 过程 共 用 了 2 上 3分 钟 , 显 比 明 直 接做 快 很多 。
从 以 上 处 理 我 们 有 这 样 一 个 启 示 : 对 ifr x no mi
多 万条 记 录 ,故 用正 常 方 法 删 除将 需 要 1 小 时左 0
( 9)在 o mo i r管 理 菜 单 里 把 ifr x备 份 n nt o nomi

Informix错误代码中文解释(转3)

Informix错误代码中文解释(转3)

-101 ISAM错误:文件未打开。

ISAM处理器被要求使用一个未打开的文件(表)。

对C-ISAM程序,程序试图在调用isopen打开文件前使用该文件,或是试图写一个只读方式打开的文件。

如果错误再次出现,请参考INFORMIX-Online的“管理员指南”附录B,“陷井错误”以得到进一步诊断。

有关诊断信息请与Informix技术支持部联系。

-102 ISAM错误: 不合法的ISAM函数参数。

一个传递给C-ISAM函数的参数值超出了可接受的范围。

对C-ISAM程序,检查这个函数调用中使用的参数,并与该函数的文档比较。

如果错误再次出现,请参考INFORMIX- Online的“管理员指南”附录B,“陷井错误”以得到进一步诊断。

有关诊断信息请与Informix技术支持部联系。

-103 ISAM错误: 不合法的键描述符(部分过多或是太长)。

ISAM处理器被给予了一个无效的键描述符。

对C-ISAM程序,检查键描述符。

每个键描述符最多可以有8个部分和120个字符。

如果错误再次出现,请参考INFORMIX-Online 的“管理员指南”附录B,“陷井错误”以得到进一步诊断。

有关诊断信息请与Informix技术支持部联系。

-104 ISAM错误: 打开文件过多。

ISAM处理器已经到达了打开文件数的极限。

对C-ISAM程序,检查并改变程序逻辑使得它同时打开较少的文件。

使用isclose来关闭不需要的文件。

对SQL产品,这个查询过于复杂;它同时使用了过多的表。

分步执行查询并使用临时表。

-105 ISAM错误: 坏的ISAM文件格式。

一个ISAM文件(表或索引)的内容已被损坏。

对C-ISAM,如果已使用了事务日志,你可以用isrecover程序来恢复该文件。

否则,重新建立或是从备份上恢复该文件。

对SQL 产品,使用bcheck或secheck实用工具来获取有关此问题的进一步信息,可能的话改正错误(在INFORMIX-OnLine数据库服务器中使用tbcheck或是在INFORMIX-OnLine动态服务器中使用oncheck)。

Informix常用操作方法命令

Informix常用操作方法命令

Informix常用操作方法北京先进数通信息技术有限公司编写说明标题:Informix常用操作方法类别:〔文档类别〕(文档/管理/纪要/制度/资料)存放位置:请键入完整文档路径\请键入完整文档名称编辑软件:Microsoft Word XP 中文版版本历史:目录编写说明 (1)目录 (I)1. 相关文件 (1)2. 常用环境变量 (1)3. 数据库状态操作 (2)3.1.查看数据库状态 (2)3.2.启动O N L INE (2)3.3.关闭O N L INE (3)4. DBACCESS使用 (3)4.1.数据库操作 (3)4.2.编辑执行SQL语句 (3)5. 装数/卸数 (4)6. 策略优化 (4)7. 脏读 (4)8. 增加事务 (4)9. ONSTAT用法 (5)1.相关文件●informix配置文件:informix配置文件定义数据库的各种参数设置,通过环境变量$ONCONFIG指定,存放在informix用户的etc目录下,如$ONCONFIG=onconfig.cmq,则配置文件为$INFORMIXDIR/etc/onconfig.cmq;●informix日志文件:记录对数据库的操作,以及操作过程中的错误日志等信息,存放在$INFORMIXDIR目录下,文件名为online.log,如对数据库操作出现异常,可查看该文件定位错误原因;●数据库连接文件:连接文件sqlhosts所含的信息使用户可以连接到数据库服务器上,存放在$INFORMIXDIR/etc目录下,一行为一条配置信息,每条包含四个域:【数据库服务器名】:定义数据库服务器名称,如on_compaq_tcp;【连接类型】:如ontlitcp;【主机名】:在/etc/hosts中定义,或直接写主机的IP;【服务名称】:在/etc/services中定义,或直接写端口号;2.常用环境变量●INFORMIXDIR:informix用户安装路径,如INFORMIXDIR=/usr/informix;●INFORMIXSERVER:informix数据库服务器名,如INFORMIXSERVER=on_compaq,数据库服务器名在数据库连接文件sqlhosts中指定;●ONCONFIG:informix配置文件,如ONCONFIG=onconfig.cmq,该文件存放在$INFORMIXDIR/etc目录下。

关于Informix锁表的问题

关于Informix锁表的问题

6.怎样查看数据库现在用的是什么锁?怎样设置informix的锁? 我现在要把一个表从页级锁改为记录琐该怎么办啊?
1、看表的锁级别
(1)oncheck -pt database_name:table_name
(2)select tabname, locklevel from systables where ...
这个是我经常用得看谁锁表得小脚本,后面可以再加上onstat -g 得选项。看具体执行了什么东西。
代码:
onstat -k|grep X|awk '{print $3}'|sort -u >tmp1.txt
cat tmp1.txt|while read line
do
onstat -u|grep $line
超时后报错:
244: Could not do a physical-order read to fetch next row.
154: ISAM error: Lock Timeout Expired
那么,怎么样找出是谁锁住了这个表呢?介绍一个小技巧,执行下面SQL语句:
DATABASE sysmaster;
谢谢楼上的,解决了我找了很久的问题。不过最后一点是session id
4.如果您执行SQL语句时候出现下面的错误提示:
244: Could not do a physical-order read to fetch next row.
113: ISAM error: the file is locked.
SELECT owner FROM syslocks WHERE tabname="表名";

INFORMIX-OnLine故障诊断与排除

INFORMIX-OnLine故障诊断与排除

INFORMIX-OnLine故障诊断与排除(1)-系统不能进入静态方式---摘自互联网开放系统以其无与伦比的能力连接不同的计算机软件,硬件。

在这种环境下,诊断问题时就需要关注问题的全局与细节。

本文就如果诊断INFORMIX-Online的问题给出了良好的建议。

诊断问题的症状系统管理员诊断问题时首先要定义问题的症状。

•系统是否难于进入静态(quiescent)状态?•是否有非正常结束的INFORMIX系统进程?•系统进程是否定期挂起?下面的讨论指出如何定位系统问题,讨论可能的起因,并对这些问题的解决提出建议。

系统不能进入静态方式该症状常常伴有一条错误信息。

一般错误是:tbinit:fatal error in shared memory creation (共享内存生成时有严重错误)检查系统初始化时定义的系统日志文件来发现错误的出处。

该日志的缺省名为$INFORMIXDIR/online.log。

在此文件中会看到与下面相近的信息:16:00:56 Cannot Open Primary Chunk '/dev/turbo_root',errno = 1316:00:56 Cannot Open Primary Chunk '/dev/turbo_root',errno = 1316:00:56 I/O error,Primary Chunk 'dev/turbo_root' -- Offline16:00:56 I/O lseek() chunk 1,pagenum 0, pagecnt 1 -->errno =916:00:56 INFORMIX-Online Stopped这些错误是由UNIX权限问题造成的。

OnLine产品需要由root来安装。

系统的部分可执行程序应属于root 或者root有权限。

所有INFORMIX系统文件的属主及权限都应该记录在$INFORMIXDIR/etc/onlinefiles中。

informix常用故障处理操作

informix常用故障处理操作

Informix 计算长事务回滚时间及解决办法如何估算长事务回滚的时间环境:IDS9.40及其以上版本问题描述:用户往往由于一次操作的数据量过大,导致长事务,使整个数据库服务器暂时挂起而不可用。

用户需要估算长事务回滚完成的时间,以便做出安排。

解答:可以使用onstat -x -r 10监控该事务的回滚状态.并通过日志回滚的速率来估算回滚的时间。

“-r 10”表示每10秒显示一次。

下面是两次的间隔10秒输出:address flags userthread locks beginlg curlog logposit isol retrys coordd745b58 A-R-- d715e7c 4904 51 53 0x8f61c8 COMMIT 0address flags userthread locks beginlg curlog logposit isol retrys coordd745b58 A-R-- d715e7c 4904 51 53 0x5a1acc COMMIT 0从输出可以看到,该事务起始的逻辑日志号是51,当前回滚到53,还需要继续回滚2个逻辑日志。

在这10秒中回滚的逻辑日志大小可以通过两次的logposit相减得出,方法为:去掉每个logposit的后三位,剩下的数字相减就是日志回滚的page数目,再乘以page size 就可得到这10秒回滚的日志大小。

例如:(0x8f6 - 0x5a1)*4 = 3412 K (4表示当前系统的page size是4K),那么一分钟逻辑日志能够回滚 3412/10*60=20472 K假设每个逻辑日志的大小为50M,则该长事务还需要回滚的时间大约是5.28分钟((1024*50) * 2 + 0x5a1*4)/20472 =5.28一、查看数据库状态正常情况下是onstat -IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line -- Up 35 days 16:51:16 -- 3920896 Kbytes长事务情况下是onstat -IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line (LONGTX) -- Up 35 days 16:41:40 -- 3920896 KbytesBlocked:LONGTX二、显示事务(transaction)信息其中flag字段中第三个标志位为R说明事务在rollback,说明这个事务是长事务onstat -xIBM Informix Dynamic Server Version 9.40.FC7 -- On-Line (LONGTX) -- Up 35 days 16:41:56 -- 3920896 KbytesBlocked:LONGTXTransactions1cf0a6748 A-R-- 1cd55c618 642073 119403 119405 0x1aa91e4 DIRTY 0三、通过长事务的userthread值找出session idonstat -u |grep 1cd55c6181cd55c618 --RPX-- 1880841 informix - 0 0 642073 256446 323049四、显示会话连接信息,找出造成长事务的SQL语句,并优化onstat -g ses 1880841informix锁表处理步骤:锁表处理步骤:1、onstat -ks|grep HDR+X //查询是那个表被锁address wtlist owner lklist type tblsnum rowid key#/bsizc1809510 0 d656e774 c181cb3c HDR+X 6002e1 2c602 0需要关注lklist和type项,从上面来看tblsnum为6002e1(十六进制转换成十进制)的表被锁了。

informix-4gl常见错误

informix-4gl常见错误

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 wait1:$ onstat -k | grep HDR+XHDR+X 为排他锁HDR 头X 互斥owner是正持有锁的线程的共享内存地址2:$ onstat -u |grep c60a363cc60a363c 为1中查到的owner内容。

sessid是会话标识符编号3:$ onstat -g ses sessid根据sessid得到进程pidpid与此会话的前端关联的进程标识$ onstat -g sql sessid通过上面命令查看执行的sql语句4:$ ps -ef |grep pid由此,我们可得到锁表的进程,可根据实际锁表进程的重要程度的具体情况采取相映处理方法:对于重要且该进程可以自动重联数据库的进程,可以用onmode -z sesid 的方法杀掉锁表session,$ onmode –z sessid否则也可直接杀掉锁表的进程kill pid。

Informix数据库系统维护及双机HDR疑难问题详解

Informix数据库系统维护及双机HDR疑难问题详解

Informix数据库疑难问题解答目录1、数据库日志模式 (3)No Logging 没有日志 (3)Unbuffered Logging 非缓冲日志 (3)Buffered Logging 缓冲日志 (4)Unbuffered Logging, Mode ANSI ANSI模式 (4)如何改变日志模式 (4)用onmonitor改变日志模式 (4)用ontpae改变日志模式 (4)2、如何在HDR系统中修改参数配子文件(onconfig)? (5)3、在select的时候,where条件是不是有限制? (6)4、关于INFORMIX的运行负荷进行度量的问题 (6)5、informix数据库主备切换的解决方法 (7)问题描述 (7)问题分析 (7)解决方案1(首推方案) (8)解决方案2 (8)故障解决 (9)6、数据库(OnLine)的启动和关闭 (9)7、数据库(OnLine)的状态查询 (10)8、数据库(OnLine)的空间管理 (11)9、数据库(OnLine)的日志管理 (12)数据库日志方式 (12)可使用ontape命令修改数据库日志方式 (12)物理日志的管理 (12)逻辑日志的管理 (13)10、如何查看informix的错误号 (13)11、数据库系统日常监测 (14)1查看锁的信息 (14)2查看物理和逻辑日志状态 (14)3查看一些统计信息 (14)4查看数据库系统占用共享内存的情况 (14)5 查看各chunk文件的读写量和读写率 (14)6 数据库目录结构检查 (14)7 数据库索引结构检查 (14)8 数据库数据结构检查 (15)9 查看数据库锁方法 (15)10查找造成长事务的SQL (15)11检查大表和对大表的维护 (16)1、数据库日志模式问:一般informix做了双机,那么scp的数据库log用什么方式比较好啊?一种是直接用log,一种用buffer log。

informix错误代码及解决方案

informix错误代码及解决方案
系统的操作:包含的错误语句不被处理。
更正的方法:删除非法字符(通常为不可打印的控制字符)或重写语句。
-203 错误的描述:在语句中发现非法整数
系统的操作:包含的错误语句不被处理。
更正的方法:整数必须在-2,147,483,647到2,147,483,647之间。检查是否带有小数部分或超出值域,以及数字中是否含有字母(例如:12593代替了125b3)。
-222 错误的描述:不能新表table-name的临时文件中写信息。
系统的操作:含有错误的语句不被处理。
更正的方法:盘空间可能溢出。检查C—ISAM错误信息以找出问题的原因。
-223 错误的描述:在FROM子句中出现重复的表名table-name。
系统的操作:含有错误的语句不被处理。
-106 错误的描述:C—ISAM错误;非互斥访问。
系统的操作:该语句不被处理。
更正的方法:当要增加或删除一个索引时,必须以互斥访问打开文件。
-107 错误的描述:C—ISAM错误:记录被锁住。
系统的操作:该语句不被处理。
更正的方法:由该调用请求的文件或记录不能被访问,这是因为该文件被其它用户锁住。请稍等一会儿,再提出请求。
-118 错误的描述:不能读事务日志记录。
系统的操作:包含的错误语句不被处理。
更正的方法:运行dblog程序确定哪个记录有问题
-119 错误的描述:不能打开日志文件。
系统的操作:包含的错误语句不被处理。
更正的方法:确定文件是否存在,所使用的路径名是否正确,以及是否具有使用文件适当权限。
系统的操作:包含的错误语句不被处理。
更正的方法:检查数据库管理转换内存空间
-124 错误的描述:没有找到BEGIN WORK。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Informix 计算长事务回滚时间及解决办法如何估算长事务回滚的时间环境:IDS9.40及其以上版本问题描述:用户往往由于一次操作的数据量过大,导致长事务,使整个数据库服务器暂时挂起而不可用。

用户需要估算长事务回滚完成的时间,以便做出安排。

解答:可以使用onstat -x -r 10监控该事务的回滚状态.并通过日志回滚的速率来估算回滚的时间。

“-r 10”表示每10秒显示一次。

下面是两次的间隔10秒输出:address flags userthread locks beginlg curlog logposit isol retrys coordd745b58 A-R-- d715e7c 4904 51 53 0x8f61c8 COMMIT 0address flags userthread locks beginlg curlog logposit isol retrys coordd745b58 A-R-- d715e7c 4904 51 53 0x5a1acc COMMIT 0从输出可以看到,该事务起始的逻辑日志号是51,当前回滚到53,还需要继续回滚2个逻辑日志。

在这10秒中回滚的逻辑日志大小可以通过两次的logposit相减得出,方法为:去掉每个logposit的后三位,剩下的数字相减就是日志回滚的page数目,再乘以page size 就可得到这10秒回滚的日志大小。

例如:(0x8f6 - 0x5a1)*4 = 3412 K (4表示当前系统的page size是4K),那么一分钟逻辑日志能够回滚 3412/10*60=20472 K假设每个逻辑日志的大小为50M,则该长事务还需要回滚的时间大约是5.28分钟((1024*50) * 2 + 0x5a1*4)/20472 =5.28一、查看数据库状态正常情况下是onstat -IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line -- Up 35 days16:51:16 -- 3920896 Kbytes长事务情况下是onstat -IBM Informix Dynamic Server Version 9.40.FC7 -- On-Line (LONGTX) -- Up 35 days 16:41:40 -- 3920896 KbytesBlocked:LONGTX二、显示事务(transaction)信息其中flag字段中第三个标志位为R说明事务在rollback,说明这个事务是长事务onstat -xIBM Informix Dynamic Server Version 9.40.FC7 -- On-Line (LONGTX) -- Up 35 days 16:41:56 -- 3920896 KbytesBlocked:LONGTXTransactions1cf0a6748 A-R-- 1cd55c618 642073 119403 119405 0x1aa91e4 DIRTY 0 三、通过长事务的userthread值找出session idonstat -u |grep 1cd55c6181cd55c618 --RPX-- 1880841 informix -0 0 642073 256446 323049四、显示会话连接信息,找出造成长事务的SQL语句,并优化onstat -g ses 1880841informix锁表处理步骤:锁表处理步骤:1、onstat -ks|grep HDR+X //查询是那个表被锁address wtlist owner lklist type tblsnum rowid key#/bsizc1809510 0 d656e774 c181cb3c HDR+X 6002e1 2c602 0需要关注lklist和type项,从上面来看tblsnum为6002e1(6292193十六进制转换成十进制)的表被锁了。

可以重查询是那个表被锁:dbaccess :select * from systables where partnum='6292193'得到tabname basetab_mvpnowner smpmmlpartnum 6292193tabid 12813rowsize 464ncols 61nindexes 1nrows 2984created 12/10/2002version 839843846tabtype Tlocklevel Rnpused 746fextsize 16nextsize 16flags 02、onstat -u,将owner(address)为d656e774的线程找出来address flags sessid user tty wait tout locks nreads nwritesd656e774 Y--P--- 4261 smp20 - d6ad2330 0 180 99620 163、onstat -g sql d656e774可以将这个线程执行过的sql语句打印出来。

4、只要用informix用户执行onmode-z sessid干掉线程onmode-z 4261重点说明:onstat -g ses sessid找个进程PID来,然后ps -ef|grep Pid。

kill -9 pid在处理这些问题时还会遇到表被锁是因为该线程还没有执行完毕,此时就不能简单的onmode -z杀线程Informix常见问题处理概述在实际的生产运行环境中,笔者在国内很多客户现场都看到开发人员和系统管理人员遇到很多有关 Informix 常见的问题,进而被多次问起如何处理这些常见的 Informix 问题,笔者根据自己在工作中对 Informix 数据库的使用经验积累写下这篇文章。

Informix 常见的问题有以下几种:∙逻辑日志满∙频繁的锁冲突∙长事务问题∙数据库 chunk 出现异常,I/O 失败不能插入数据下面我们分别针对以上问题来一一讲解如何处理。

逻辑日志满故障现象:数据库不再进行任何操作,使用 onstat –l 命令观察逻辑日志状态,所有的逻辑日志都处于已使用未备份状态,即 flags 为 U------ 标志。

故障分析:由于数据库的大部分操作都需要记录逻辑日志,所以如果逻辑日志由于各种各样的原因被充满都会导致数据库停止正常的操作,等待逻辑日志空间的释放、重新再利用。

这一般会由于数据库逻辑日志没有及时备份、数据库逻辑日志空间分配过小、逻辑日志里面包含活动事务、包含检查点信息等原因。

故障处理:检查是否是由于逻辑日志备份出现问题,如果是不能备份请查找不能备份的原因,可能是由于磁带满或磁带机出现故障,或者是磁带设备繁忙;个别情况下即使逻辑日志标志为已备份但是仍然是不可使用的,包括:1. 该逻辑日志包含活动的事务信息,由于数据库需要考虑其可能的回滚操作,因此是不会让该逻辑日志的内容被覆盖的,可以通过onstat –x 检查其 beginlg 来确定事务的逻辑日志起始位置;2. 包含检查点信息,可以通过 onstat –l 观察 flags 的最后一位为L 的逻辑日志的位置,在它之后的逻辑日志即使已经备份也是不可使用的,因为这些逻辑日志内容将会在快速恢复中使用到。

在这些情况出现以后如果暂时不能快速的处理,在 IDS 9.3x 或以后的版本上可以使用逻辑日志联机增加的功能,只要有空闲的 chunk 空间,使用 onparams -a -d <DBspace> -s <size> -i 即可在当前逻辑日志后增加新的逻辑日志,并且不需要执行 0 级备份。

频繁的锁冲突故障处理:调整数据库隔离级别,例如使用 dirty read;将数据库表的缺省页级锁修改为行级锁;设置锁等待时间;调整应用 SQL,提高执行效率,尽量快的完成事务处理,释放资源;如果需要快速处理锁冲突的情况,在确定锁的实际拥有者以后可以确定是否应该终止其操作,执行 onmode –z <sid> Kill specified session id,以达到释放锁资源的目的。

长事务故障现象:在数据库日志里面出现发现长事务的提示,受影响的事务处于回滚状态,个别情况下会导致整个数据库实例的其他数据库会话都停止执行。

故障分析:当一个活动事务它所占用的逻辑日志个数的比例达到或超过 LTXHWM 所设定的值,数据库就会判定该事务为一个长事务,对该事务进行回滚操作,如果这个时候逻辑日志的使用个数仍然持续上涨达到或超过 LTXEHWM 所设定的值,则数据库会停止其他会话的正常运转,全力保证该长事务的回滚操作。

故障处理:根据数据库日志里面所提供的信息可以很方便的发现具体是那一个事务造成了长事务。

系统在将某个事务判定为长事务以后就会自动对其进行回滚操作。

事后可以有针对性的调整应用将大的事务划分为小事务进行提交;避免一个活动事务长时间没有后续的操作;提供充足的逻辑日志空间,这里所指出的不仅是空间的总量需要增加,逻辑日志的个数也是应该增加的,因为判断的标准是以逻辑日志的使用个数所占比例来确定的。

在 INFORMIX 9.3X 以后的版本中可以通过动态增加逻辑日志的手段避免由于长事务带来的一些不良影响,在长事务回滚过程中如果逻辑日志空间被消耗完毕,如果 DYNAMIC_LOGS 设置为2,数据库服务器会自动在最后创建的逻辑日志所存在的 dbspace 上查找空余空间,按照最后创建的逻辑日志的大小自动在当前逻辑日志之后新增逻辑日志,如果不能满足需要则会创建失败,需要管理员手工添加。

数据库 chunk 出现异常,I/O 失败由于表所存在的 dbspaces 上没有足够的连续空间来创建新的 extent;达到每个单片表的 extents 个数上限;达到每个单片表记录数的上限,以上 3 种可能都会导致不能插入数据情况的发生。

故障处理:在出现这种问题以后,首先应该查看应用日志、应用程序,也可以通过查看当前正在执行并返回错误的 SQL 以确定到底是哪张表不能插入数据。

在定位受到影响的表以后应该确定表所存在的 dbspace 是否有足够的连续空闲空间,如果没有请相应的增加 chunk 空间以扩充其数据库存储空间。

在确认存在足够的连续空闲空间以后再检查是否达到后续的 2 个上限,可以使用一些脚本工具或数据库命令来实现这一点。

在确认问题的原因以后,理想的解决方法是为数据库表提供更多的使用空间,例如增加 chunk、将表进行重建、将表进行合理的分片等;应急的处理原则是:小批量、小批量地删除部分数据,尽量将需要处理的数据限制在较小的范围内,通过多次的操作来达到删除数据的目的,避免出现大事务、长时间不能完成的情况出现。

相关文档
最新文档