`

Informix 数据库常用问题解决方案

    博客分类:
  • DB
 
阅读更多
转自博文:
http://blog.csdn.net/qinghua9/article/details/5295968
1.1修改锁模式方法
用dbaccess选择要修改的数据库,在Query-language中执行

修改某个表table_name为行锁:alter table table_name lock mode (row);

如果要修改为页锁可以将row 换为page



1.2SQLCODE=240
l         INFORMIX解释:

-240 不能删除行。
数据库服务器不能完成DELETE语句的执行。滚回当前的事务处理;然后,检查伴随的 ISAM错误代码,得到更多的信息。

l         问题分析:

这种情况比较复杂,数据库可能出错的方面比较多,但在应用文件日志中都有记录是哪个数据库的哪一张表有问题。

l          参考解决方法:

可以通过informix的oncheck命令进行检查修复,如果修复后还有问题,则只有将该表的数据unload出重新创建此表,再将数据load到新表中,

oncheck –cID databasename:tablename

1.3SQLCODE=268
l         INFORMIX解释:

-268 唯一限制<限制名>违法。
在执行这条语句期间,重复的值引入受唯一性限制保护的字段。不允许有重复值的行进入表中(不能插入或修改)。对于OnLine数据库服务器,在发现重复值之前由这条语句做的任何改动已被滚回。(然而,在事务中先于语句的影响,如果有的话,仍然起作用,必须明确地滚回或提交。)

l         问题分析:

上下级数据该表的主键不一致,请检查是否一致。

l          参考解决方法:

修改分公司索引,等待重新装载。

1.4SQLCODE=244
l         INFORMIX解释:

-244 不能按物理顺序读来取得下一行。
数据库服务器不能读取包含一个表的某行的磁盘页。更多的信息请检查伴随的ISAM 错误代码。可能硬件有问题,或表文件或索引文件可能被损坏。除非ISAM错误代码或操作系统信息指出其它原因,否则运行bcheck或secheck实用工具来检验文件的完整性。

l         举例:

l         问题分析:

同时对数据库的某个表操作时没有用到索引,导致应用程序之间出现互锁现象。

l          参考解决方法:

对数据库做优化,修改表的索模式为记录锁。等待重新装载。

问题十:索引优化

问题一:修改锁模式方法

1.5SQLCODE=242
l         INFORMIX解释:

-242 不能打开数据库表< 表名>。
数据库服务器不能开始读取表。更多的信息请检查伴随的ISAM错误代码。问题可能是在文件权限,硬件错误,或被损坏的系统目录等方面。除非ISAM错误代码或操作系统信息指出其它原因,否则运行bcheck或secheck实用工具来检验文件的完整性。

l          参考解决方法:

参考问题五:SQLCODE=244



1.1SQLCODE=271
l         INFORMIX解释:

-271 不能把新行插入这个表。
这个问题可能有许多原因,包括锁定的表或满磁盘。更多的信息请查看伴随的ISAM 错误代码。

l         问题分析:

可能是数据库空间、表空间满或者互锁。

l          参考解决方法:

检查数据库空间,如果是数据库空间满,则及时通知数据库管理员。如果还不能解决问题,则重建表,即先将表数据卸载下来,然后重新建表,在建表的语句中添加extent size 1048576 next size 104857 lock mode page,最后将表数据重新装载上去。

如create table sf01

(

    ksdm char(8) not null ,

    policyno char(22) not null ,

。。。。。。

    sffid serial not null ,

    primary key (policyno) constraint "datagath".sf01_p

) extent size 1048576 next size 104857 lock mode page;

 

1.2SQLCODE=329
l         INFORMIX解释:

-329 数据库没有找到或没有系统权限。
试图打开的数据库在数据库服务器中找不到。检查名称的拼写。可能是数据库放在不同的数据库服务器(或网络系统),而你忽略了指定有该数据库名的服务器名(或节点名)。如果确认数据库如你拼写的那样存在,下一步就取决于正在使用的数据库了。 如果使用的是INFORMIX-SE,看得见的数据库是在形如<数据库名>.dbs中的目录名。必须对它们可读可写。数据库服务器首先在当前工作目录查看,然后是在DBPATH环境变量中命名的每个目录。这个错误的最常见原因是不正确设置或没有设置DBPATH环境变量。 如果使用的是INFORMIX OnLine动态服务器,按所拼写的数据库不存在。在某些环境中,可能有一次运行两个或更多的OnLine的实例,每个实例有它自己的数据库集合。对于版本6.0或以后版本,INFORMIX SERVER环境变量决定使用哪个INFORMIX OnLine 动态服务器的实例。对于版本5.01或更早的版本,TBCONFIG环境变量指出配置文件,它决定使用哪个INFORMIX -OnLine的实例。如认为可能在使用错误的OnLine实例,请找OnLine管理员。

l         问题分析:

1、 跨server连接数据库时,没有指定服务器名称。

2、 未启动数据库。

l         参考解决方法:

检查数据库是否已经启动,如果没有,则请分公司启动数据库。

1.3SQLCODE=387
l         INFORMIX解释:

-387 没有连接权限。
不能访问这条语句所要求的数据库,因为没有被获准与该数据库连接的权限。请与拥有该数据库管理员权限的人联系,并向他申请与该数据库连接的权限。

l         问题分析:

没有给下发用户赋连接权限。

l          参考解决方法:

给下发用户授权,然后在下发用户下,用dbaccess连接该数据库,测试连接是否成功。

1.4上下级数据库表结构不一致
l         现象描述

SQLCODE=1215,SQLCODE=217。

l         问题分析:

产生原因可能是作升级操作或者修改数据库结构导致上下级公司数据库表结构不一致。

l          参考解决方法:

仔细查询上下级数据库表结构,检查每个字段的字段明、数据类型、长度是否一致,如果不一致,将下级数据库表结构修改和上级数据库一致。

1.5SQLCODE=217
l         INFORMIX解释:

-217 查询中在任何表中都无法找到字段 column-name (或 SLV 未定义)。
该名称出现在此次查询的选择列表或 WHERE 子句中,但未在表中定义且不以语句本地变量 (SLV) 的定义出现。检查字段名或 SLV 名以及所选表名的拼写是否与所需的一样。 如果所有名称的拼写都正确,则所使用的表是错的,或数据库已改变,或者尚未定义 SLV。如果此无法找到的名称是对某一字段的引用,则该字段可能已重命名或被取消。如果此无法找到的名称代表的是 SLV 而且在语句中已定义了这个 SLV,则要确保 SLV 定义出现在对 SLV 名的其它所有引用之前。 当引擎试图更新与该表有关的视图时,在执行 ALTER TABLE 期间,该错误消息也会出现。

l         问题分析:

可能是上下级数据库升级不一致导致,问题十一:上下级数据库表结构不一致

1.6SQLCODE=1215
l         INFORMIX解释:

-1215 值过大,不能放进一个INTEGER。
INTEGER数据类型能接受绝对值从 0 到 2,147,483,647 (±231-1)的数值。若要存储超过此范围的数,字段或变量必须重定义为DECIMAL类型。(-2,147,483,648 是32位的值,但不被接受;在4GL中,它被用来指示一个null值。)

l         问题分析:

可能是上级数据库字段类型支持的长度比较大导致。

l          参考解决方法:

按照实际长度修改分公司字段类型。

1.7SQLCODE=201
l         INFORMIX解释:

-201 出现语法错误。
该一般性错误表明 SQL 语句的格式有错。可查找是否有遗漏或多余的标点(如遗漏或多余的逗号、子查询两边遗漏了括号等等)、拼写错误的关键字(如将 VALUES 写成 VALEUS )、用错的关键字(如 INSERT 语句中的 SET 或子查询中的 INTO )、顺序错误的关键字(如将 "NOT value IS" 写成 "value IS NOT" ),或将保留字用作标识符等。 提供完全 NIST 兼容的数据库服务器不保留任何字;在这些服务器上可以进行的查询,在较早期版本的 Informix 数据库服务器上就有可能失败并返回错误 -201。 试图将 round-robin 语法与索引上的 CREATE INDEX 或 ALTER FRAGMENT INIT 一起使用可能会引起此错误。不能用 round-robin 索引。

l         问题分析:

产生原因可能是数据不规范,如单证号带有特殊字符或是单引号”’”,导致应用生成SQL时报语法错误。

l          参考解决方法:

修改loadfile下的报错的数据文件,然后用bin目录下的compress.sh压缩回去。重新启动装载。





1.1SQLCODE=134
l         INFORMIX解释:

-134 ISAM错误: 没有更多的锁。
ISAM处理器需要锁定一行或一个索引页但是已没有可用的锁了。一个操作所需要的锁的个数主要取决于在一个事务中改变的行的个数。你可以通过减少每个事务所修改的行数来减少一个操作所需的锁的个数,或通过锁定整个表来代替锁定行。可用的锁的个数根据你所使用的实现可能在下面三个位置之一被配置:操作系统核心;共享内存段;或是OnLine。向你的系统管理员咨询如何获得更多的锁。

l         问题分析:

需要删除或更新的数据过多导致的错误。

l          参考解决方法:

查看是否锁资源不足,请系统管理员解决。

1.2索引优化
l         问题分析:

由于集中对数据库的修改、查询比较多,对数据库的索引要求也比较高,应用会因为索引的没有及时优化而导致互锁或提取插入慢。

l          参考解决方法:

选择要优化的数据库执行

UPDATE STATISTICS HIGH 或 UPDATE STATISTICS MEDIUM



1.3SQLCODE=206
l         INFORMIX解释:

-206 数据库中没有指定的表。
在数据库中找不到需要的表或者视图。

l         问题分析:

可能该数据库中没有需要的表或者该表已经改名或者已经从数据库中删除

                 

1.4SQLCODE=691
l         INFORMIX解释:

-691 在参照约束的参照表中遗漏主键。
违反了参照的约束条件。当试图把值插入到参照的约束条件中的某个字段或者修改其中某个字段的时候,试图插入的值不在被参照的父键里。

l         问题分析:

插入纪录时存在约束,插入时必须要先在与其有主键关系的表中插入相应的纪录。

l         参考解决方法:

查看数据库中需要插入纪录的表所存在的主键关系,先在与其有关联的表中插入相关记录,然后再插入需要插入的纪录



1.5SQLCODE=692
l         INFORMIX解释:

-692 约束的键值仍然被参照。
违反了参照的约束条件。这情况通常发生在你试图删除某一行,而该行的某一列(父键)与另一行的某一列(子键)有约束关系的时候。

l         问题分析:

删除纪录的时候存在约束,删除时必须要先将与其有外键关系的表中的相应纪录删除。

l         参考解决方法:

查看数据库中需要删除纪录的表所存在的外键关系,先将与其有关联的表的相关记录删除,然后再删除需要删除的纪录。

1.6SQLCODE=847
l         INFORMIX解释:

-847 正在装载的行报错。
这种情况通常出现在装载数据文件的某一行的数据时。操作将在插入该行时报错并退出。如果该操作时在某个事务中,会造成事务回滚,否则在重新开始执行此项操作前,要把已经插入的纪录从表里面删除或者把文件中已经装上的数据移走。

l         问题分析:

可能存在数据转换问题,(例如,在需要数值类型数据时出现了非数值型数据,非法格式的日期型数据或者太长的字符串)。还可能是在不为空的列里面插入了一个空值。

l         参考解决方法:

编辑装载报错的文件,找出报错的行,并检查是否有存在类似问题的行。确认文件没有问题之后,重新执行装载。





1.1SQLCODE=568
l         INFORMIX解释:

-568 数据库没有逻辑日志。

l         参考解决办法:

请分公司加日志。

1.2下发传输未完成
l         问题描述

下发过程中程序中断或者挂起,数据未传输完成。

l         问题分析

1、 可能是总公司数据量过大,导致程序coredump了。出现这种问题的数据一般只能是按时间传输数据的表或者全量表。

2、 其他原因导致进程被中断。

l         参考解决办法

1、 检查数据量是否过大,如果确实过大,需要考虑是否采用别的方式下发数据。请相关系统的老师查看是否正常。

2、 做重新传输的准备工作。

1) 如果是ids系统

先执行$HOME/application/dataexch/bin下命令:sh updatecontrol.sh 1;然后删除sendfile下的txt文件。

2) 如果是其他系统

删除$HOME/dataexchange/DataExch_new/sendfileBak下的txt文件。

3、 重新启动传输

执行bin目录下的tmpsend.sh。

使用方法:sh tmpsend.sh 系统号[比如:01]&

4、 扫尾工作

Ids补传之后,需要在$HOME/application/dataexch/bin下执行命令:sh updatecontrol.sh 2
分享到:
评论

相关推荐

    informix数据库常用备份方法 - 总结

    3. **常见问题及解决方案** - **dbimport 导入数据失败** 如果在导入时未指定日志类别,可能会导致事务开始失败,因为数据库的日志级别不是 buffer log。解决方法是在导入时通过 `-l buffered` 指定日志类别,...

    如何解决informix数据库锁表问题.doc

    Informix 数据库锁表问题解决方案 在 Informix 数据库中,锁表问题是一个常见的错误,会导致系统性能下降和数据不一致。锁表问题的解决需要对数据库进行深入的分析和诊断。本文将讨论 Informix 数据库锁表问题的...

    Informix数据库基础

    在实际工作中,Informix的高性能、高可用性和易用性使其成为许多企业首选的数据库解决方案。随着课程的深入,我们将探讨更多关于Informix的特性和应用场景,例如事务处理、并发控制、备份恢复策略等,帮助学员成为一...

    informix数据库常用备份方法[参考].pdf

    《Informix数据库常用备份方法详解》 Informix数据库在软件开发中扮演着至关重要的角色,其稳定性和高效性是许多企业选择它的原因。对于数据库管理,备份是保障数据安全的重要手段。本文将深入探讨Informix数据库的...

    IBM Informix数据库设计和实现指南

    根据提供的标题“IBM Informix数据库设计和实现指南”以及描述“IBM Informix设计、实现和管理”,我们可以推断出这...这对于想要利用IBM Informix构建高效可靠数据存储解决方案的专业人士来说是一份非常有价值的资源。

    Informix数据库sqlcode出错信息

    当SQL语句成功执行时,Informix数据库服务器会将特定的SQLCODE值返回给应用程序,帮助开发人员或维护人员判断SQL语句是否正确执行,或者执行过程中发生了什么问题。下面将详细介绍SQLCODE的一些常见值及其含义,并...

    INFORMIX数据库报错信息

    本文将深入探讨INFORMIX数据库中的错误码及其汉语意思,旨在帮助数据库管理员、开发人员和IT专业人士更有效地识别和解决数据库操作过程中可能遇到的问题。 ### INFORMIX数据库错误码详解 #### SQL执行错误(SQL ...

    Informix 常见问题处理

    本篇文章将深入探讨 Informix 常见的三个问题及其解决方案。 1. 逻辑日志满 逻辑日志是 Informix 数据库记录事务操作的重要组件,当逻辑日志满时,数据库将无法进行进一步的操作。问题表现为使用 `onstat -l` 命令...

    informix数据库健康检查

    ### Informix数据库健康检查知识点详解 #### 一、概述 Informix数据库是由IBM开发的一款高性能关系型数据库管理系统,尤其适用于大规模的数据处理环境。为了确保Informix数据库系统的稳定性和高效运行,进行定期的...

    Informix数据库设计和实现指南 V9.4.rar

    4. 高可用性与复制技术:了解Informix的高可用性解决方案,如镜像、连续保护、多站点复制等,确保数据安全和业务连续性。 四、安全与维护 1. 用户管理与权限控制:设置用户账户,分配角色,实现细粒度的权限控制。...

    informix 数据库错误代码

    为了帮助用户更好地理解并解决这些问题,本文将详细介绍一系列常见的Informix数据库错误代码及其含义,旨在为用户提供一份全面且实用的错误代码指南。 #### 错误代码解释 1. **-100C ISAM: 错误参数** - **错误...

    INFORMIX数据库维护指南

    INFORMIX数据库维护是确保系统稳定运行和数据安全的关键任务。以下是对INFORMIX数据库维护指南的详细解读,涵盖从基础信息保存到性能优化、监控和恢复策略等多个方面。 一、保存好INFORMIX的系统信息 系统信息的...

    C#连接Informix数据库的问题

    【C#连接Informix数据库的问题】 在C#开发中,连接Informix数据库时可能会遇到一系列挑战。首先,Informix数据库在版本11中引入了许多新特性,包括增强的SQL跟踪、非阻断检查点、SDS辅节点、星型连接、自动存储扩展...

    informix的CDR分布式数据库同步配置

    Informix CDR 是一种基于日志的数据库复制解决方案,它能够利用 Informix 数据库的日志文件来实现数据的同步。与传统的表级或行级复制不同,CDR 直接读取数据库的日志文件,这意味着它可以更高效地捕获并传播数据...

    Informix错误码说明.zip

    Informix是一个高效、可靠的数据库解决方案,由IBM公司提供。本篇文章将详细讲解与“Informix错误码”相关的知识,结合Linux系统的命令使用,帮助你更好地理解和处理Informix数据库中的问题。 首先,让我们了解一下...

    informix dbaccess 用户指南

    - **故障排除**:提供了详细的故障排查流程和解决方法,帮助用户快速定位并解决问题。 ### 总结 IBM Informix DB-Access 是一款强大的数据库连接工具,为用户提供了一系列功能以方便地管理和操作 Informix 数据库。...

    Informix教程

    3. **NEWERA系列** - 提供了事务处理和业务应用的解决方案,支持企业级的数据库应用需求。 Informix的动态可伸缩体系结构允许数据库随着业务需求的增长而灵活扩展,确保系统的性能和可用性。 **第二章 INFORMIX ...

    Informix_CSDK_ODBC.pdf

    标题:Informix_CSDK_ODBC.pdf 描述:Informix_CSDK_ODBC.pdf 开发手册 ...通过遵循文档中的指导,开发者可以有效地利用IBM Informix Connect和ODBC标准,构建高效且兼容性良好的数据库连接解决方案。

Global site tag (gtag.js) - Google Analytics