[转载]informix学习分享

原文地址:informix学习分享作者:shamir
Informix 备份(详解)
2009-07-10 14:54

Informix-Online数据库因其具有高性能、高可靠性、支持数据完整性定义/检查等特性而得到广泛应用。对于使用中的数据库,数据备份的安全可靠性便成为人们关注的焦点。根据多年的学习和经验,笔者对Informix-Online数据库常用的三种数据备份方式加以归纳和比较。
     一.使用ontape工具进行数据备份
     1.ontape工具的功能
     ontape工具具有如下功能:备份和恢复Online数据、备份和恢复逻辑日志、改变数据库日志状态等(本文着重介绍数据备份功能)。
     2.执行ontape备份数据的语法
     ontape备份语法为:
     ontape -s -L 备份级别(0、1、2)
     在online处于联机或静止方式时, Informix用户或具有DBA权限的用户可以通过执行上面的命令进行备份。根据备份方案安排进行0级、1级、2级备份。0级备份是对整个数据库的所有数据进行完整备份;1级备份是只对0级备份以后修改过的数据进行备份;2级备份只是对1级备份以后修改过的数据进行备份。
     3.使用ontape工具进行数据备份需要注意的问题
     1)在执行ontape备份前要对Onconfig文件中的TAPEDEV、TAPEBLK、TAPESIZE参数进行正确的设置。
     2)为了缩短数据恢复时间,应以进行0级为主,尽量减少1级和2级备份。对银行等重要部门数据,应每天进行0级备份。
     3)如果需要将ontape备份的数据恢复到另一台服务器上时,要求两台服务器机型、操作系统、Onconfig配置文件及非临时分配的Dbspace磁盘空间数量和大小必须一致,否则数据不能正常恢复。
     4)必须保证有足够可用的逻辑日志文件。如果剩余的逻辑日志空间小于单个逻辑日志的50%,Informix-online将拒绝执行备份操作。必须先备份已使用过的逻辑日志,然后才能进行数据备份。
     5)保留Onconfig文件副本。在进行0级备份后,应备份Onconfig文件,因为在恢复0级备份时需要读Onconfig文件信息,如果online配置被修改,数据恢复将失败,如果恢复此0级备份,必须恢复当时的配置。
     6)备份可以在online联机或静止方式下进行,在备份过程中不能改变online运行方式,否则备份会被中断。
     7)不要使用后台方式执行备份命令(UNIX下的&&),因为备份采用交互方式进行。
     二.使用dbexport命令进行数据备份
     1.dbexport命令简介
     dbexport命令以ASCII码格式将数据写到文件或备份介质上(如磁带)。dbexport卸出的文件包括数据库模式文件和数据文件。
     2.dbexport 命令语法如下
     dbexport [-X] [-c] [-q] [-d] [-ss] [{-o -t -b -s [-f ]}]
     以上命令中参数的意义如下:
     <>;中包括的内容为必选项,[ ]中的内容为可选项。
     -c:指示如果没有错误,则输出全部信息。
     -q:在标准输出设备上不显示错误信息、警告和所生成的SQL数据定义语句。
     -d:仅输出blob描述符,不输出blob数据。
     -ss:在模式文件中输出特定于服务器的用于创建数据库和表的信息,比如:初始的extent和附加的extent的大小、上锁方式、表所驻留的dbspace等信息。
     -o:指定数据输出文件的磁盘目录。
     -t:指定数据输出文件的备份介质名称。
     -b:指定备份介质块大小。
     -s:指定备份介质的最大存储量。
     -f:用于指定存储在备份介质上的模式文件名。
     database:指定备份的数据库名称。
     使用dbexport功能及需注意的问题
     1)执行dbexport命令必须是Informix用户或具有DBA访问权限的用户;
     2)用dbexport备份的数据必须用dbimport命令恢复;
     3)用户可以通过编辑模式文件来改变dbimport生成的数据库,如改变数据库名称或相关的表信息;
     4)dbexport以独占方式(exclusive mode)占用数据库,备份期间其他用户不能对数据库进行查询和修改及插入操作;
     5)模式文件不保留数据库的日志文件,用户使用dbimport命令建立数据库时必须为新建数据库选择一种日志方式(ANSI、buffered、nobuffered类型);
     6)用户可以使用dbexport/dbimport命令,将Informix-online和Informix-SE下的数据进行相互转换;也可以将数据在Informix-online的不同版本之间转换,这种转换对数据库服务器的结构和online的配置没有特别要求;
     7)使用dbexport/dbimport命令备份/恢复数据,可以起到消除数据分配空间碎块的作用,提高数据库整体运行效率。
     三.使用Onunload命令进行数据备份
     1.Onunload命令简介
     Onunload命令以页为单位,使用二进制形式卸出数据,备份效率比dbexport高。
     2.Onunload命令的语法
      Onunload [-l] [-t ] [-b ] [-s ] [:[owner>;.>;
     以上参数代表的意义如下:
     <>;中包括的内容为必选项,[ ]中的内容为可选项
     -l:指示onunload分别从配置参数TAPEDEV、TAPEBLK和TAPESIZE中读入磁带设备、块大小和备份设备容量值
     -t:指定备份设备名
     -b:指定备份设备的块大小
     -s:指定备份设备的存储容量
     database:指定要备份的数据库
     owner:指定表的属主
     table:指定要卸出的表
     使用onunload需要注意的问题
     1)onunload备份的数据必须用onload命令进行恢复;
     2)onunload/onload不能实现不同版本的online之间的数据转移;
     3)onunload/onload是以磁盘页大小为单位存储的二进制数据,卸出和接受数据的计算机必须具有相同的磁盘页大小;
     4)只能将onunload卸出的数据装入online管理的数据库或表;
     5)用户必须具有DBA访问权限,才能执行onunload命令;
     6)onunload不保留初始表上定义的访问特权;
     7)onunload不保留初始表上定义的同义词。
     以上三种数据备份方式各有特点,ontape备份对online参数配置前后一致性要求较高,但数据备份和恢复操作简单,备份和恢复速度较快;onunload备份以页为单位以二进制形式进行备份效率较高,数据恢复时只要计算机磁盘页大小一致即可;用dbexport所做的备份可以实现不同版本、不同Informix产品之间的数据转换,数据转移灵活方便。
     为保证数据能够安全恢复,数据备份至少应该选择两种方式。通过对Informix-Online数据库三种常用备份方法分析比较与归纳,用户可以根据实际情况选择适合自己需要的备份方式,来保证数据的安全恢复与转移


informix提供的备份与复原命令


ON-Bar使用前,而在onconfig文件中进行设置,也可以取默认值。
LTAPEDEV--/dev/null或null时,日志满后立即标为可复用。
利用null磁带机实际上是不备份日志,因此无法用ON-Bar恢复。
应保证对磁带设备正确设置LTAPESIZE与LTAPEBLK value.
on-bar 配置参数
1)bar_act_log---- on-bar活动日志文件的完整path,default is /tmp/bar_act.log
2)bar_max_backup----每个user命令的最大parallel onbar_d 进程数(7.x与9.x).这个参数在8.x中称为bar_worker_max,定为自动启动的onbar_w进程数。如果为0,则7.x与9.x中的进程数不限。default is 0;
3)bar_retry----on-bar的失败重试次数,default is 1;
4)bar_nb_xport_count----每个onbar_d进程的共享内存数据缓冲区个数(在8.x中称为bar_xport_count,用于onbar_w进程)。default is 10;
5)bar_xfer_buf_size----onbar_d进程使用的每个数据缓冲区长度(页数)(在8.x中称为bar_xfer_bufsize,用于onbar_w进程)。default is informix page size 4kb时为15,page is 2kb时为31;
6)restartable_restore----启用或关闭可重新启动恢复(on/off)。在8.x中没有这个参数。default is off;
7)bar_bsalib_path----存储管理器库文件或dll的完整pathname,default is /usr/lib/isad001.platform_extension。
platform_extension为共享库扩展名后缀,通常类unix中为.so,因此default is /usr/lib/ibsad001.so。通过informix机器说明了解你的平台是否支持这个参数;
8)log_backup_mode----使用IECC时如何处理已满逻辑日志文件。这个值对连续逻辑日志备份没置为CONT,对手工备份设置为MANUAL。应通过IECC设置这个值,而不是通过onconfig文件。not default value!
9)ltapedev----在7.x或9.x中,这是逻辑日志备份所用的磁带设备pathname,在8.x中忽略,除非设置为/dev/null或null表示不进行逻辑日志备份;
(下列部分的定义:ISM为informix storage manager,卷池为进行备份序列的一组磁带)
1)ism_data_pool----写入物理备份的ism卷池,default is ISMData;
2)ism_log_pool----写入日志备份的ism卷池,default is ISMLogs;
3)bar_history----onsmsync如何使sysutils数据一级(9.2以上和8.3以上),default is 0;
4)bar_progress_freq----ON-Bar报告完成百分比的频率(9.2以上和8.3以上),default is 0;
5)bar_sm----存储管理器实例的整数ID(只对8.x),无default;
6)end----结束bar_sm说明;
7)bar_boot_dir----写入引导文件的目录的完整pathname(only 8.x),default is $INFORMIXDIR/etc;
8)bar_dbs_cosvr----实际备份到这个bar_sm的parallel services list(only 8.x),default is all parallel servers;
9)bar_log_cosvr----逻辑备份到这个bar_sm的并行服务器清单(only 8.x),default is 所有并行服务器;
10)bar_idle_timeout----onbar_w进程退出之前闲机的时间(only 8.x),
default is 0--无超时;
11)bar_worker_cosvr----对这个bar_sm运行onbar_w并行服务器清单,default is 1;
12)bar_worker_max----控制备份计划程序自动启动的onbar_w进程数(only 8.x),default is 0;
!!!Warning:
若用on-bar实用程序备份逻辑日志,则要保证LTAPEDEV不设为/dev/null或null。
除非总是用on-bar进行整个系统备份(onbar -b -w),否则应备份逻辑日志,不然无法恢复任何数据。
on-bar在LBU PRESERVE数据库中存放备份和档案信息。由于这个数据库使用事务日志,因此应保证存档和逻辑日志备份期间不会填满逻辑日志,从而保证不填满最后一个逻辑日志,保留给on-bar使用。
提示:如果使用on-bar,则应将配置参数LBU PRESERVE 置为1,将最后一个逻辑日志留给on-bar。


informix提供的备份与复原命令


onbar -b [-L level]
level0----完整备份;
level1,2----增量备份(分别为level0,level1之后的数据改变),default is level0;
备份所选dbspaces&blobspaces:
onbar -b dbspace2 blobspace4;
备份文件data_list中的所有dbspaces与blobspaces:
onbar -b -f data_list;
整个系统备份:
onbar -b -w [-L level]
onbar -r -w #restore from the latest -w backup,with logs
onbar -r -p -w #restore from the latest -w backup,wtihout logs
逻辑日志备份:
onbar -b -l
包括当前日志的逻辑日志备份:
onbar -b -l -C('C' is upper)
连续逻辑日志备份:
onbar -b -l -C
注意更换新磁带.
逻辑日志挽救:
onbar -b -l -s
恢复数据:
onbar -r [dbspace,[dbspace...]]
onbar -r #restore the whole system
onbar -r rootdbs logdbs #just restore dbspaces rootdbs and logdbs
onbar -r -f dbs_names #restore all dbspaces in the file dbs_name
冷恢复操作:
onbar -b -l -s #log salvage
onbar -r -p #physical restore
onbar -r -l #logical restore
恢复所选dbspaces/blobspaces:
onbar -r dbspace2 blobspace4
恢复文件data_listk 中所有dbspaces&blobspaces:
onstat -r -f data_list
整个系统恢复:
onbar -r -w
逻辑日志恢复:
onbar -r -l
恢复到特定时点:
onbar -r -t "2002-10-08 10:00:00"
恢复到特定逻辑日志号前:
onbar -r -n 540
可重启动恢复(前提:restartbale_restore is ON):
onbar -r rootdbs [lgdbs llogdbs dbspace1 dbspace2 dbspace2
若恢复dbspace1时失败,则可以
onbar -RESTART从dbspaces1开始,恢复dbspace1,2,3和逻辑日志.
Warning:
不能重启动热恢复,只能从头开始重启动恢复.


informix 數據備份中 ontape 與 dbexport dbimport2007-08-01 14:13ontape1)在执行ontape备份前要对Onconfig文件中的TAPEDEV、TAPEBLK、TAPESIZE参数进行正确的设置。
2)如果需要将ontape备份的数据恢复到另一台服务器上时,要求两台服务器机型、操作系统、Onconfig配置文件及非临时分配的Dbspace磁盘空间数量和大小必须一致,否则数据不能正常恢复。
3)必须保证有足够可用的逻辑日志文件。如果剩余的逻辑日志空间小于单个逻辑日志的50%,Informix-online将拒绝执行备份操作。必须先备份已使用过的逻辑日志,然后才能进行数据备份。
4)保留Onconfig文件副本。在进行0级备份后,应备份Onconfig文件,因为在恢复0级备份时需要读Onconfig文件信息,如果online配置被修改,数据恢复将失败,如果恢复此0级备份,必须恢复当时的配置。
5)onstat -d等状态信息输入到file很重要
dbexport1)用户可以通过编辑模式文件来改变dbimport生成的数据库,比如改变数据库名称或相关的表信息2)dbexport以独占方式(exclusive mode)占用数据库,备份期间其他用户不能对数据库进行查询和修改及插入操作; 3)dbimport命令建立数据库时必须为新建数据库选择一种日志方式 -l ,(ANSI、buffered、nobuffered.unbuffer类型 )
4)使用dbexport/dbimport命令备份/恢复数据,可以起到消除数据分配空间碎块的作用,提高数据库整体运行效率。


Dbexport [-c –d –q ] [目标文件选项] database [-ss –V]


1.-c选项

命令程序继续执行,即使有错误产生,并直到一个重大错误产生,这个重大错误有:

Unable to open the tape device specified

Bad writes to the tape or disk

Invalid command parameters

Cannot opendatabase or no system permission

-d 只允许输出BLOB描述而不是BLOB数据.

-q 取消SQL语句的回应,错误信息和警告.


2.目标文件选项:

-o directory –path 指定ASCII码文件存储的目录.指定的目录必须是已经存在的.在指定目录中的一个名为datebase.exp子目录将被产生并收集数据.默认为当前目录.

-t device 指示输出到一个磁盘设备.你必须指定一个BLOCKSIZE和每个磁带生的数据总集.

-b blksize 以千字节指定磁带块尺寸.

-s tapesize 指定被写在每个磁带上的千字节的数量.最大磁带尺寸是2.097.151千字节.

-f file-path 指示SCHEMA SQL命令文件存储到通过完整逻辑名在磁盘中确定的磁盘.


3,DATABASE

它是一个被输出的数据库的名称.


4,-ss选项

产生指定数据库中的所有表的服务-指定信息.当数据库被卸载,SCHEMA将包含如下信息:

数据库的logging模式

初始化表的扩展空间

表的锁定模式

表定位的DBSPACE


5-V选项显示产品版本信息.

Dbimport句法:

Dbimport [-c -q] [输入文件定位选项] [create选项] database


1.-c选项

命令程序继续执行,即使有错误产生,并直到一个重大错误产生.


2.输入文件定位选项.

-i directory-path 指定数据文件定位的目录,可以应用目录路径全名或一个与当前目录相关的目录路径.

-t device

-b blksize

-s tapesize

-f file-pathname

3,-q 选项取消SQL语句的回应


4,database是数据库名

Create选项是:

-d dbspace 是数据库的目标dbspace,如果不指定这项,数据库在rootdbspace中产生

-l 指定被输入的数据库使用处理logging,默认时,被输入的数据库将在没有logging情况下被创建

-buffered 指定logging将成为缓冲器,否则,logging将成为unbuffered(无缓存)

-ansi 通知程序以mode ansi产生新的数据库.


例: dbimport -cq -d dbspace2 -t /dev/rmt0

2.3 系统备份与恢复—使用dbexport与dbimport
2.3.1数据卸载工具dbexport
   dbexport的功能:
 将整个数据库卸载成ASCII码文件
 SQL命令的Schema文件被创建
 将数据库中的数据或数据库的描述卸载到磁盘或磁带
 将数据库中的数据卸载到磁带库的描述卸载到磁盘
 dbexport.out信息文件被创建
dbexport 语法:
   dbexport [-c ] [–d] [–q]   [目标文件选项]   database   [-ss] [–V]
其中:
–c 选项
   命令程序继续执行,即使有错误产生,并直到一个重大的错误产生。为此这个重大的错误有:
-unable to open the tape device specified (不能打开指定的磁带设备)
-bad writes to the tape or disk (坏信息写入到磁带或磁盘设备)
-invalid command parameters (无效的命令参数)
-cannot open database or no system permission (不能打开数据库或无系统允许)
-d 选项
   只输出BLOB描述,而不是BLOB数据
-q 选项
   取消SQL语句的回应、错误信息和警告
目标文件选项:
   -o directory–path
      指定ASCII码文件存储的目录。指定的目录必须是已经存在的。在指定目录中的一个名为
      datebase.exp子目录将被产生并且收集数据。默认为当前目录。
    -t device
      指示输出到一个磁带设备。必须指定一个blocksize和每个磁带上的数据总集。
    -b blksize 以千字节指定磁带块尺寸
    -s tapesize
      指定被写在每个磁带上的千字节的数量。最大磁带尺寸是2,097,151千字节。
    -f file-path
      指示Schema SQL命令文件存储到通过完整路径名在文件中确定的磁盘。 database被输出的
      数据库名称。
    -ss选项
确保数据库的建库信息或建表信息被保留。当数据库被卸载时,Schema 将包含如下信息在文
件dbexport.out中:
-数据库的日志模式
-初始化的扩展尺寸
-表的锁定模式
-表所在的Dbspace
     -V 选项
       显示产品版本信息
例1:$ dbexport –c –t /dev/rmt0 –b 16 –s 24000 stores7
这条命令将stores7数据库输出到磁带。其中数据块尺寸为16KB,并且24000KB被写入到每个
磁带。如果错误产生,则程序继续。
例2:$ dbexport –c –t /dev/rmt0 –b 16 –s 24000 –f /usr/port/stores.sql stores7 –ss
这条命令将stores7数据库输出到磁带,并且将磁盘上的stores7.sql 文件放在/usr/port目录。
并包含服务指定信息。

    卸载数据库的步骤如下:
    将数据库motor卸载到目录/usr/informix/data下,并保留数据库motor的服务信息。确保系统处于联机状态,并且没有用户访问数据库motor。用DBA注册系统,执行命令:
$ dbexport motor -o /usr/informix/data -ss
开始卸载数据库,结果完成后将出现信息:
dbexport completed !
2.3.2 数据装载工具dbimport
   dbimport功能:
 数据库被创建
 将ASCII码数据导入数据库
 数据和Schema可被从磁盘或磁带中载入
 用户被授予在数据库上的DBA许可
dbimport语法:
dbimport [-c] [–q] [输入文件定位选项] [create 选项] database
其中:
-c选项与 –q选项:同dbexport
输入文件定位选项:
    -i directory-path
       指定数据文件定位的目录,可以应用目录路径全名或一个与当前目录相关的目录、路径。
    -t device
    -b blocksize
    -s tapesize
       以上选项与dbexport的选项相同。
database   数据库名
create 选项:
-d dbspace
    是数据库的目标dbspace,如果你不指定这项,数据库在rootdbs中被产生。
-l 指定被输入的数据库使用处理日志模式,默认时,被输入的数据库将在没有日志的情况下                 
     被创建。
-buffered   指定数据库日志模式将成为buffer 方式。否则,将成为unbuffered方式。
-ansi       通知程序以ansi模式产生新的数据库。
   
    装载数据库的步骤如下:
将目录/usr/informix/data 下的数据库motor装载到datadbs中去,并保留数据库motor含unbuffered方式。确保系统处于联机状态,并且没有同名数据库.
用DBA注册系统,执行命令
$ cd /usr/informix/data
$ dbimport motor -d datadbs -l
开始装载数据库,结果完成后将出现信息:
dbimport completed !


Informix Online 数据库维护技巧


<br>一、 数据库查询用户的建立
<br>
<br>  银行Informix_on_line数据库由于存储了储户的大量重要信息,为了数据库的安全性必需要对数据的操作有严格的规定,如进入on_line数据库要履行严格的手续,这在某些时候又给查找问题带来不便,因此有必要专门建立一个动态查询用户,该用户仅有对数据库的可读权限。
<br>  具体做法是:
<br>  1.建立查询用户,该查询用户应具有数据库使用的环境
<br>  2.将查询用户与数据库作连接(work用户为例)
<br>  ln-s/homel/work/homel/read(将查询用户read与数据库用户作连接);
<br>  3.由work用户使用数据库,将connect权限赋予read用户
<br>  grant connect to read;
<br>  4.对数据库中每一张表放select权给read用户
<br>  grant select on abc to read.(将select权限赋给read用户)
<br>  这样,以read用户注册,对数据库拥有了可读操作,给查找问题等带来方便。
<br>
<br>二、 数据库一致性检查
<br>
<br>  a.以informix登录
<br>  b.将数据库状态置为off_line
<br>    onmode-ky
<br>   用onstat-检查数据库状态为off_line
<br>  c.将数据库状态置为单用户模式
<br>  onmode -s
<br>  用onstat-检查数据库状态为quiesent
<br>  d.检查数据库保留页状态
<br>  oncheck-cr 1>/tmp/oncheck.cr 2>&1
<br>  e.检查数据库目录页一致性
<br>  oncheck-cc 1 >/tmp/oncheck.cc 2>&1
<br>  f.检查数据库数据的一致性
<br>  oncheck-cD workdb 1>/tmp/oncheck.cd 2>&1
<br>  g.检查数据库索引的一致性
<br>  oncheck-cI workdb 1>/tmp/oncheck.ci 2>&1
<br>  h.检查/tmp下oncheck.cr,oncheck.cc,oncheck.cd,oncheck.ci文件,查看有无错误信息,如没有,则数据库状态正常,反之亦然。
<br>  i.将数据库状态置为online
<br>  onmode-m
<br>  用onstat-检查数据库状态为online
<br>
<br>三、 数据库的备份与恢复
<br>
<br>  1.dbexport备份与dbexport恢复
<br>  dbexport备份是一文体文件备份,该备份将数据库中信息以文本文件方式保存,要注意的是,在备份时必须保证没有对数据库有访问者,否则做dbexport不会成功,dbexport备份的一般格式为(以数据库workdb为例)
<br>  dbexport workdb-d -s workdbs /path
<br>  2.dbimport恢复是将用dbexport备份的文件恢复到数据库中
<br>  a.停止一切数据库操作→删除数据库;
<br>  b.$dbimport workdb-d workdbs -i/path;
<br>  c.用工具onmonitor将参数TAPEDEV改为/dev/null;
<br>  d.ontap -s -u workdb.
<br>廯 e.检查workdb是否改为U状态.
<br>  f.将TAPEDEV值改回原先的值.
<br>  需要指出的是在dbimport恢复过程中,有大量的信息要写在逻辑日志文件中,采用上述方式,可避免写逻辑日志文件,加快dbimport的速度。
<br>  3.数据库的零级备份
<br>  数据库零级备份是重要的备份手段,日常一般用磁带备份,经常用于做重大操作之前的备份,数据往往需要恢复,而磁带上的零级备份数据由于数据量大,恢复起来花费时间较长,因此,可采用在硬盘上做零级备份的办法。
<br>  a.在硬盘上划一个足够大的空间,用于备份文件的存放。
<br>  b.用onmonitor将参数TAPEDEV改定指向零级备份文件。
<br>  如把/cs2000在作为零级备份文件oback的存放空间,可将参数改为TAPEDEV=/cs2000/oback,这样可做硬盘零级备份,备份恢复时间只是磁带机的1/6。在恢复过程中应该用tail -f online.log监控。恢复过程,一直到数据库状态变为online..
<br>  c.将参数TAPEDEV=/cs2000/oback改为TAREDEV=/dev/rmt/0m;
<br>
<br>四、 数据库常见故障处理
<br>
<br>  检查:用onstat_-1检查逻辑日志的使用情况,是否中止进程,根据finder col.数据库故障的一般检查,首先要检查数据库状态,经常用onstat_de查找可能出现的错误,同时检查online.log是否报错。
<br>  2.数据库表的跟踪:遇到在对数据库表作大规模操作时,有时我们不知道对该表的操作是否得以在继续进行,因为isql进入,操作该表,数据库报“该表已被锁”信息,这时可用查询语句:
<br>  首先:set retrieved to drity read
<br>  然后:select count(*)from abc,
<br>  通过不断对abc表进入统计,如统计数在不断增加,则对该表的操作仍在进行,否则,以停止了对该表的操作。还有,当批量执行SQL命令,如update,……insert等时如不能成功执行,可采用增加判断条件,缩小范围的方法去执行,往往可以获得成功,遇有些语句涉及的记录在处理过程中被锁定,直到处理过程结束可能超过系统关于同时锁定界限,遇这种错误,可以在开始处理时锁定该表。
<br>  3.故障排除举例:
<br>  故障现象:在银行批量结息向结息数据表插入记录时出现informix sqlcode错误号为-239。
<br>  故障检查:经查,从现象看,似乎有重复记录插入表中,但经核查数据,可以肯定数据绝无重复记录,考虑到表文件长期使用,表文件的相关信息受到某种破坏,为此,做以下操作:
<br>  a.unload to “/tmp/abc.txt”select*from abc.卸出abc中全部数据;
<br>  b.drop table abc.(删除表文件abc);
<br>  c.create tabk abc
<br>  (abc_swo mteger;
<br>  abc_ano smallint)
<br>   …
<br>  );建立数据库表文件abc.
<br>  d.load form“tmp/abc.txt”insert into abc.
<br>  (将原数据装入表文件abc中)。
<br>  e.重新执行结息操作,新产生的结息数据顺利装入表文件abc中,故障得以排除。
<br>  作为计算机技术人员,熟悉数据库的操作,掌握一些操作技巧和方法对于我们解决工作中遇到的问题,查找错误,是十分有帮助的。

原文地址:https://www.cnblogs.com/liuzhuqing/p/7481040.html