• [转载]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>  作为计算机技术人员,熟悉数据库的操作,掌握一些操作技巧和方法对于我们解决工作中遇到的问题,查找错误,是十分有帮助的。

  • 相关阅读:
    Python变量、标识符
    PyCharm中设置作者信息
    去中心化
    复杂逻辑---取数
    行政机构处理
    2020.11案例分析
    中间表
    软考--项目管理名词
    软考--近6次上午考点分析
    软考--学习方法、做题方法
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7481039.html
Copyright © 2020-2023  润新知