首页系统INFORMIX备份(如何利用Informix数据库备份逻辑日志?)

INFORMIX备份(如何利用Informix数据库备份逻辑日志?)

编程之家2024-02-09116次浏览

一、informix 逻辑日志与物理日志分配多大

1.物理日志

INFORMIX备份(如何利用Informix数据库备份逻辑日志?)

物理日志的作用在于保持一批dbspace页的前映象。这些“前映象”代表了所有数据在物理上与逻辑上都保持一致的这样一个时刻。将物理日志中的前映象与逻辑日志中的逻辑日志记录结合起来,可以恢复数据库自上一次已知的一致点以来发生的所有事务。这样的已知的一致点称为检查点。在快速恢复过程中,第一步首先用到物理日志,将整个系统恢复在Online中最近一次检查点时所处的物理一致的状态。

1)物理日志的存放地址

当IDS初始化时,将会在rootdbs中创建物理日志。

当IDS处于静止方式时,用户可将物理日志从一个dbspace移到另一个dbspace中。用户这样做的目的是想尽量提高效率。

物理日志的位置由配置文件中的PHYSDBS参数指定。这个参数仅当用户决定将物理日志从 rootdbs中移到另一个dbspace中才必须被改变;否则,该参数在缺省情况下,仍包含着rootdbs的名称。

物理日志的大小由配置参数PHYSFILE指定,以kb为单位。用户可以修改物理日志文件的位置和大小。

INFORMIX备份(如何利用Informix数据库备份逻辑日志?)

2)物理日志的内容

物理日志是一组连续的磁盘页面,每一个都包含有一个特别的Online页的副本。物理日志中的页面可以是除了blobspace中blobpage以外的其它任何Online页面。甚至可对应于系统开销页,例如chunk空闲链页、blobspace空闲映象页、blobspace位图页等等,这些页也必须在其上的数据被修改并刷新到磁盘上之前被复制到物理日志中去。

Blobspace blobpage并不出现在物理日志中,这是因为blob采用与其它数据类型不同方法记录日志。

3)物理日志前映象

在某一次检查点后,某个页面第一次被修改时,该页的“前映象”将被写入共享内存中的物理日志缓冲区。在该被修改的页从共享内存刷新到磁盘上之前,该页的“前映象”应首先被刷新到磁盘上物理日志中。需要注意的是,仅当对页面的第一次修改才会导致往物理日志中写“前映象”。先写日志文件原则是为快速恢复所必需的。

4)检查点操作逻辑地清空物理日志

INFORMIX备份(如何利用Informix数据库备份逻辑日志?)

每次Online检查点操作以后,物理日志中逐渐被填上发生修改的“前映象”。当再一次检查点操作发生以后的瞬间,这时Online中的数据在物理上是一致的,这时也就再不需要原来的Online物理日志中的“前映象”了。(这对于继续执行的事务也同样适用。如果某一个这样的事务需要执行回滚操作,则执行回滚所需的信息都已包含在逻辑日志文件中了。)在检查点操作完成时,Online将逻辑上清空逻辑日志,Online仅仅重置物理日志中的指针,标明下一组“前映象”所存储的起始位置。Online循环使用物理日志,不断地覆盖那些已过时的数据。

检查点操作是唯一可以清空物理日志的机制。如果物理日志75%的空间已被占用,则Online将启动一次检查点操作。

2.逻辑日志

逻辑日志文件的作用在于自上一次Online archive以来,对Online数据所发生的变化进行记录。Online把逻辑日志分成三个或更多个相互分离的磁盘空间,每磁盘空间称为一个逻辑日志文件。相应于每一个逻辑日志文件有一个唯一标识号。

1)逻辑日志与快速恢复

Online使用逻辑日志可以恢复自上一次已知的物理一致点以来发生的所有事务。这一已知的物理一致点在Online系统中称为检查点。快速恢复中,当Online使用物理日志将整个系统恢复到上一次检查点时所处的状态以后,Online将使用逻辑日志记录将整个系统恢复到最近一次逻辑日志记录时刻的逻辑一致性状态,这实际上是快速恢复的第二步骤。

2)逻辑日志与数据恢复

将逻辑日志文件的备份磁带与最近一次的Online的archive结合在一起,可以将Online系统重新恢复到最近一次逻辑日志记录时的状态。

3)逻辑日志文件被循环使用

Online通过标识一个逻辑日志文件为used(使用)状态来保护逻辑日志文件不被覆盖,直至该文件被备份到磁带上并且快速恢复已不再需要该逻辑日志文件时为止。当一个逻辑日志文件中的所有记录对应的事务都已完成时,快速恢复过程将不再需要该逻辑日志文件。如果上面所说的两个重要条件都已被满足,即逻辑日志文件已被备份到磁带上,并且快速恢复也已不再需要该逻辑日志文件,这时Online将该逻辑日志文件标记为free(空闲)状态,该文件也就可以被再次用以填如逻辑日志记录。

在 Online处理过程中,Online按数字顺序依次填充空闲的(即状态为free)的逻辑日志文件。当第一个逻辑日志文件变满时,Online接着开始填充下一个逻辑日志文件,如果下一次逻辑日志的状态为“used”而不是“free”,则正常的Online处理将被挂起。Online不能跳过该标记为“used”状态的逻辑日志文件而去填充别的空闲的日志文件。保证空闲的逻辑日志文件在Online处理过程中总可以被得到,这是Online管理员的职责。

Online至少需要三个逻辑日志文件以便循环使用逻辑日志文件,当一个逻辑日志文件在接收当前记录时,Online有可能正将另一个日志文件往磁带上备份,第三个日志文件是当前日志文件已满,而备份另一个日志文件的工作尚未完成时所需要的。(这个使用三个逻辑日志缓冲区的考虑是类似的)。

4)逻辑日志文件:标识号与备份

逻辑日志备份带以逻辑日志所包含的唯一数值标记。每当一个日志文件填满时,逻辑日志标识号就增加数值1。例如,如果一个Online系统包含三个逻辑日志文件,则相应的三个日志文件的标识号为1、2、3。当逻辑日志文件1第一次被释放以便循环使用时,它将变为逻辑日志文件4,第二次它又将变为逻辑日志文件7。

5)逻辑日志文件的内容

逻辑日志文件中包含下述五种类型的记录:

所有数据库的SQL定义语句。

检查点记录。

有关配置修改的记录。

对于那些创建时使用日志登录的数据库的SQL数据操纵语句。

有关某个数据库日志登录状态变化的记录。

即使没有一个数据库创建时使用了事务日志登录,在处理过程中,Online也会将前面三种类型的记录写入逻辑日志文件。逻辑日志记录可以跨越Online的整个页面,但它们却不能跨越逻辑日志文件。

6)逻辑日志文件的配置

当Online初始化时将会在rootdbs中创建逻辑日志文件。在Online处于静止方式以后,用户可以从rootdbs中删除一个或多个逻辑日志文件,也可以往另一个dbspace中增加一个或多个逻辑日志文件。用户有可能为了提高效率而这样做。

在Online磁盘空间初始化以后,用户就不能再修改逻辑日志文件的大小了。如果一逻辑日志文件被删除,则由该逻辑日志文件占据的空间将被释放掉,并被链入chunk空闲链页。

7)大小与数目方面的限制

Online管理员决定每一个逻辑日志文件的大小,以及分配给整个逻辑日志的磁盘空间的大小。每个逻辑日志文件至少要被分配到200K的磁盘空间。

逻辑日志文件的最小数目为3,最大数目则由一页上可容纳的逻辑日志描述字的数目所决定。对于一个2K大小的页,最大的日志文件数目为60。

8)影响逻辑日志文件填充速度的因素

下列四个因素会影响一个事务的大小与持续时间:

逻辑日志文件记录的大小

事务打开时间的长度

CPU与逻辑日志的活动级别(Actirity Level)

事务回滚的频率(Freqency)

逻辑日志记录的长度随处理操作与当前Online的环境而变化。一般来讲,数据行越长,逻辑日志记录也就越大。

不仅如此,其它一些因素还会影响单一事务的大小与操作时间。例如,一条Alter table语句将会为每一次往新修改了的表中的插入操作生成一条逻辑日志记录。数据行的大小与表的大小都将会影响生成的逻辑日志记录的数目与大小。然而在一些情况下,数据行大小是无关紧要的。例如,逻辑日志中的一条检查点记录将包含对应于所有检查点发生时刻仍处于打开状态的事务的项目。检查点记录的大小仅仅反映了当前的数据库活动的级别与类型,而不涉及到任何特定的行的大小。

事务的持续时间也是一个不能为用户所控制的主要的变化量。一个应用,也许并不需要过多的逻辑日志记录空间,但如果用户允许事务在很长时间内保持打开,这时就可能造成生成长事务错误。在保证不产生长事务错误的前提下,可用的逻辑日志空间越多,就有可能允许越长的事务保持打开状态。

CPU的能力可能影响Online服务器进程完成事务的能力。重复地往逻辑日志文件写,增加了每个服务器进程完成事务所需的CPU时间。逻辑日志操作的增加,可能还隐含着同时增加了对逻辑日志锁与latch的竞争。(也正是这个原因,用户才有可能需要将逻辑日志文件从rootdbs移到另一个不太活跃的dbspace中去)。

回滚的频率也影响着逻辑日志被填充的速率。尽管回滚记录很小,但回滚本身也需要逻辑日志文件空间。而且,回滚也增加对逻辑日志的操作。

二、Informix常用命令

常用命令oninit

将系统从off-line模式变为on-line模式oninit-iy

(初始化数据库,删除所有dbspace和chunk)oninit-s(

脱机-->静态)onmode-ky offlineonmode-s graceful shutdown-->quiescent(联机到静态,让用户处理完成)

onmode-u

immediate shutdown-->quiescent(联机到静态,所有用户立即终止)

onmode-m

quiescent--->onlineonmode-z sid删除某session onmode-l将当前正在使用的逻辑日志下移onmode-c

强制执行检查点操作即onmonitor->force ckpt onstat-查看服务器状态onstat-d查看dbspace和chunk情况onstat-l

查看逻辑日志onstat-F查看写入磁盘的页刷新和类型情况,从共享内存缓冲区向磁盘写入页面有三种方式(fg:前台写 LRU:队列写 chunk:块写)onstat-R

打印LRU队列onstat-p显示系统的基本I/O与性能配置文件onstat-c查看onconfig文件onstat-m查看消息日志onstat-f

查看受DATASKIP影响的dbspaceonstat-x查看事务onstat-k

显示所有活动的锁onstat-g sub_option运行多线索选项

onstat-g ses/sql onstat-r<value>每隔<value>秒后重复选项 onstat-g act

显示系统中所有的活动线索 onstat-g ath-r 2每隔两秒显示系统中所有的活动的线索 onstat-i交互方式>sql>sql sidipcs

查看共享内存情况ipcrm

删除某个共享内存ipcrm-m id ipcrm-s id

Ontape命令:

1)零级(一级或二级)备份$>ontape-s$>ontape-s-L 0$>ontape-s-L 1$>ontape-s-L

2自动备份逻辑日志文件$>ontape-a

3)连续逻辑日志备份(日志文件写满一个,online系统自动备份一个,你可以插盘磁带到磁带机上,让IDS自动备份。

要占用磁带机)$>ontape-c

4)备份恢复(对应零级备份或一级备份或二级备份)$>ontape-r(详细过程见ontape恢复文挡)

5)备份恢复几个DBSPACE(一定要存在逻辑日志备份,否则物理恢复完后,还是不能用)$>ontape-r-D dbs1 dbs2。。。

6)配置HDR时使用的物理恢复$>ontape-p

7)修改数据库日志模式$>ontape-s-B db_name修改为buffer_log即缓冲日志模式$>ontape-s-U db_name

修改为unbuffer_log即非缓冲日志模式$>ontape-s-N db_name

修改为无日志模式数据库不含日志,即不支持事务,对数据库的任何修改都不会记录到逻辑日志中去$>ontape-s-A db_name

修改为ansi logging模式,从个模式无法改到其它模式,因此一般不要用该项。oncheck命令 oncheck-pe

extendoncheck-ceoncheck-cr reserved pagesoncheck-cd TBLspace data rows including bitmaponcheck-ci

table indexes databases对逻辑日志的操作:以informix用户登录,$ onmode-uy(由Online切换到Quiescent状态,所有用户立即中止)

onmode-m(切换到Online)$ onparams-a-d logdbs-s 100000其中logdbs为dbspaces名,-s 100000表示增加了100M空间。

再连续执行4遍上述命令,这样新的逻辑日志空间总共为500M,可以用 onstat-l查看逻辑日志情况,接下来就要删除前面3个旧逻辑日志,

删除前做一个0级备份# ontape-s-L 0执行该命令做0级备份,建议:如果允许可以每天在业务系统结束工作

后做一次0级备份,做完备份后管理好备份磁带,做好标记。$ onparams-d-l logid

logid为逻辑日志id号,可以用onstat-l查看,然后就可根据id号删除3个旧逻辑日志。

将当前正在使用的逻辑日志下移$onmode-l三、DBSPACE及数据库导入导出1.增加一个新的dbspace:(datadbs,15M,偏移为0)

onspaces-c-d datadbs-p/home/informix/datadbs-o 0-s 150002.

在datadbs这一个dbspace中增加一个chunk:(datadbs_chunk1)onspaces-a datadbs-p/home/informix/datadbs_chunk1-o 0-s 150003.将上述chunk删除onspaces-d datadbs-p/home/informix/datadbs_chunk1-o 0 4.删除dbspace(仅当要删除的dbspace空间没有数据时才可删除)onspace-d datadbs导出数据库:用dbexport工具将数据卸成文本,并装载到其它服务器上。(1)卸载文本的步骤如下:用informix用户注册 dbexport cleardb-o WORKDIR-ss当系统提示dbexport completed!数据卸载完毕。其中:-ss确保数据库的建库信息或建表信息被保留如日志模式、初始extent尺寸、lock mode、表所在dbspace等。-o指定存放卸载数据的目录数据存放在目录cleardb.exp目录下,其中包含cleardb.sql和形如*.unl的文件,

提示信息存放在dbexport.out文件中。

(2)装载文本的步骤如下:用informix用户注册确保数据库处于On_Line状态,服务器上没有同名数据库。

dbimport cleardb-i WORKDIR当系统dbimport completed!提示数据装载完毕。其中:-i

指定从何处装载。如何在不破坏库本身信息情况下(如行级锁等)将数据库卸载到磁带设备,并装载在其它服务器上?1)

p;卸载的步骤如下:用DBA用户注册将存放数据的磁带插入磁带机,确认磁带及磁带机完好可用。

dbexport cleardb-t/dev/rmt/0m-b 512k-s 2048000k-ss当系统提示dbexport completed!数据卸载完毕。其中:-ss确保数据库

的建库信息或建表信息被保留如日志模式,初始extent尺寸,lockmode,表所在dbspace-t磁带设备/dev/rmt/0m-s

磁带容量2G-b块大小512KB提示信息存放在dbexport.out文件中2)装载的步骤如下:

用DBA用户注册将存放卸载数据的磁带放在磁带机上,确认磁带机正常,确认数据库系统处于On_Line状态,

服务器上没有同名数据库。

$ dbimport cleardb-t/dev/rmt/0m-b 512k-s 2048000k当系统dbimport completed提示数据装载完毕!提示信息存放在dbimport.out文件中。

重建表格:1) dbschema-d dbname-t tabname-ss tabname.sql/*将表格结构放进tabname.sql*/编辑此文件并在create table

语句末尾增加新的区域长度暂时将生成表格索引的tabname.sql部分标为说明语句,即在索引句前后加上“{}”,

例如:{ create index xl on customer(last_name); create index x2 on customer(cust_nbr);}

最好在后面生成索引,因为这样表格能快速装入,索引能在连续磁盘空间生成,使其更加有效。

2)锁定表格lock table tabname in exclusive mode;

3)用SQL UNLOAD将表格卸载到磁盘或磁带中unload to file_or_tape_path select* from tabnameunload to"/usr/data/unload/customer.unl" select* from customer;

检查表中的行数(用SQL中的Table/Info命令),验证卸载是否成功。比较这个数与装入完成后SQL显示的消息。用此验证file_or_tape_path中的行数:wc-l file_or_tape_path

4)删除表格

5)用dbacess生产表格并运行tabname.sql。这时不要生成索引

6)用SQL的LOAD FROM或用 dbload重新装入表格load from file_or_tape_path insert into tabname;load form"/usr/data/unload/customer.unl" insert into customer;

对于日志数据库,上面的装入语句可能产生长事务或“to many lock”错误。

这时建议用dbload之类的实用程序将数据插入表中。dbload的-n选项强制在插入一定行后进行commit work(建议选1000行)。

检查表中的行数(用SQL中的Table/Info命令),验证装入是否成功。7)如要生产索引,运行第一步中标为说明语句的tabname.sql部分。

8)更新表格统计信息 update statistics on tabname;

语法 oninit [-s] [-i] [-p] [-y]

oninit将系统从off-line模式变为on-line模式

oninit-s将系统从off-line模式变为quiescent模式

oninit-i初始化系统

oninit-p在共享内

存初始化时,不搜索,删除临时表

oninit-y对提示自动回答yes

oninit-v加入这个选项显示oninit处理过程

oninit--键入此命令可以获得使用帮助

oninit命令用来改变系统的运行模式。其中-i选项用于初始化系统的root dbspace。注意,root-dbspace一旦被初始化,则等于整个数据库系统被初始化。

如果用户希望在计算机启动时自动自动启动动态服务器系统,请在系统初启文件(在许多UNIX系统中为/etc/rc)中加入oninit命令(不加任何选项)。

onmode命令

语法: onmode [-k] [-m] [-s] [-u] [-y]

onmode-k执行立即shutdown,将系统变为off-line模式

onmode-m将系统从quiescent模式变为on-line模式

onmode-s执行graceful shutdown

onmode-u执行immediate shutdwon

onmode-y对提示自动回答yes

onmode命令同样用于改变动态服务器的运行模式。除了上述选项外,onmode还有很多与改变系统运行模式无关的选项。

利用onspaces命令创建数据空间

语法: onspaces-c [-b] [-d] [-z] [-m] [-o] [-p] [-s] [-t]

-c创建blobspace或dbspace

-b blobspace blobspace名

-d dbspace dbspace名

-g page size blobpages大小

-m mirror镜像设备设的全路径名和偏移量(KB)

-o offset偏移量(KB)

-p pathname chunk设备的全路径名

-s sizedbspace大小(KB)

-t创建临时dbspace

onspaces命令用于创建数据空间、临时空间和存储blob数据的空间(blobspace)。键入onspaces--可以获得该命令的联机帮助。

利用onstat-D或onstat-d可以看到系统中的关于数据空间的重要信息。包括:chunk的状态、空闲、每一chunk读写的次数。

系统中可能包括的多个系统空间,特别当进行数据分片后,我们建议用户最好能利用命令行来创建数据空间。

可以利用如下命令创建数据空间:

onspaces-c-d datadbs1-o 0-p/dev/rrvol3-s 60000

可以用如下的方式创建临时数据空间:

onspaces-c-d tempdbs1-t-o 0-p/dev/rrvol5-s 80000

在系统中,临时数据空间非常重要,通常情况下,应将多个临时数据空间分布在独立的物理设备上。

利用onspaces命令删除数据空间

增加或删除chunks

语法: onspaces-a-d [-m] [-o] [-p]

-a spacename为dbspace新增chunk

-m pathname镜像设备的全路径名和偏移量(KB)

-o offset主设备的偏移量(KB)

P>

-p pathname chunk设备的全路径名

-s sizechunk大小

-d spacename删除chunk

-o offset chunk设备的偏移量(KB)

onspaces不仅能创建数据空间还能删除数据空间、临时数据空间或存储blob数据的空间。在删除数据空间时,必须首先保证它是无用的,即该数据空间上无数据库或表。

如需删除数据空间,请键入如下命令:onspaces-d dbspace_name/blobspace_name

数据空间最初由一个chunk(first chunk)构成,一旦其空间用尽,用户必须追加chunk为了提高系统性能,用户在为数据空间分配chunk时需要计算以保证它的大小能适应未来的需要,否则在追加chunk的时候,它与先前的chunk在物理上不一定相邻,导致增加读取数据的时间。关于如何计算空间需求将在以后章节中阐述。利用 onspaces命令可以对数据空间增加或者删除chunk,除此之外,利用该命令还可以完成如下任务:启动镜像、中止镜像或改变chunk的状态。

例如可以用如下命令为数据空间增加chunk:

onspaces-a-d datadbs1-0 60002-p/dev/rrvol3-s 60000

再如可以用如下方式从数据空间中删除chunk:

onspaces-d datadbs1-o 60002-p/dev/rrvol3-s 60000

onparams命令

语法:onparams-a-d-p [-d] [-s] [-l]

-a新增逻辑日志

-d dbspace指定日志存放的dbspace

-s size新增逻辑日志的大小(KB)

-d删除逻辑日志

-l logid指定删除一个逻辑日志

-p改变物理日志

-d dbspace新物理日志存放的dbspace名

-s size物理日志大小(KB)

系统在初始化时自动地在root dbspace中创建逻辑日志和物理日志。在DBMS系统中,尤其在OLTP环境下,数据库的操作非常频繁,日志中必须记录大量的信息,所以用户最好能将多个日志文件分布在不同的设备上。有一种非常简单的方法:即按所需大小创建逻辑日志,同时创建一个较小的物理日志,系统初始化完毕后,再将物理日志移至其它设备。关于如何确定所需的物理日志的大小,将在以后的章节详述。利用onstat-l命令可以看出系统中所有新增的逻辑日志被标识为A。这些逻辑日志只有在系统进行归档后才会真正被使用。为了激活这些逻辑日志有一种简单的方法:执行一次"伪"归档。具体步骤如下:将参数TAPEDEV设置为/dev/null然后运行一次ontape-s。也可以执行onbar-F命令。由于伪归档并不真正归档系统信息,所以千万要适时地对系统进行真正的归档操作。

只有在逻辑日志真正无用时才能将其删除。利用onstat-l可以看出所有的空闲日志被标记为F。如果逻辑日志中包含事务回滚或快速恢复所需的信息,该逻辑日志是不能被删除的。利用onstat-l命令可以看出接受当前事务的日志被标记为C。如果逻辑日志包括最后一个检查点记录,它也是不能被删除的,只有当检查点记录被写入下一个日志忠并且上一个日志被备份后,该日志才能被删除。利用onstat-l命令可以看出包含最后一个检查点记录的日志被标记为L。用户可以利用

onmode-c命令强制写检查点记录直至最后一个检查点记录被写入所要求的日志为止。

onstat工具

显示动态服务器共享内存中的信息

涉及少量磁盘I/O操作

将对系统性能的影响极小

提供关于系统有价值得信息

命令行交互式监控系统

在本章中将讲解onstat的各种重要选项,请熟悉它们的使用

onstat命令是一种非常有用的系统实时监控工具。该命令直接从共享内存的数据结构中读取信息,报告当时的系统状况。通常onstat命令不会进行磁盘I/O操作,也不会对系统资源加锁,所以它对系统性能的影响减少到最小。简言之,onstat是informix提供的一种交互式的系统监控工具。

onstat的一些常用选项:

onstat--列出所有选项

onstat-i设置进入交互模式

onstat-显示运行模式和数据库引擎状态

onstat-g sub_option运行多线索选项

onstat-r每隔秒后重复选项

onstat-g act显示系统中所有的活动线索

onstat-g ath-r 2每隔两秒显示系统中所有的活动的线索

系统监控界面

sysmaster数据库在系统初始化时自动创建

数据库中包括指向系统共享内存结构数据字典信息

提供瞬时的系统性能和状态信息

提供SQL界面了解数据字典信息

允许管理员将系统管理工作自动化

用于执行重复性的监控任务

系统监控界面(system Monitoring Interface--SMI)是一种基于SQL的系统工具,

用户通过SMI可以非常方便地获取系统信息。系统在初始化时,自动地在root dbapace创建sysmaster系统数据库。

每一系统包括一个sysmaster数据库,该数据库中的大部分表为虚表,是指向共享内存中数据结构的指针。利用SMI可以自动监控系统,特别是在执行重复任务时。

sysmaster数据库是只读的,即不允许对其进行INSERT UPDATE,或DELETE操作。所有用户都拥有对该数据库的查询权限。

在系统初始化后,用户一定要注意检查sysmaster数据库是否建立成功。创建sysmaster数据库的信息都保存在消息日志文件中(online.log)请注意由于所有的DDL语句都将被记录在日志中,

所以一定要在日志文件中留出足够的空间以保证创建sysmaster所需。

sysmaster数据库模式记录在$INFORMIXDIR/etc/sysmaster.sql文件中。

oncheck命令

检查动态服务器磁盘上的数据结构

定位并修补损坏的索引和数据

有磁盘I/O操作

一些操作在处理时将在表上加锁

oncheck命令用于修复磁盘上损坏的索引和数据页,该命令也可用于检查并打印系统的数据结构。在使用oncheck时一定要当心,因为改命令的某些选项会对表加共享锁,例如:oncheck-pt

>

为防止对系统的损坏,系统会对所有共享内存中的数据进行一次一致性检查。一旦发现数据页出现一致性错误或发现索引错误,系统将把问题和可能的解决方案(利用oncheck)写入消息日志文件,并返回isam错误代码105。

如果发现一致性错误信息,用户应该立即关闭系统并按消息日志文件中的提示运行oncheck。如果oncheck运行失败,则应尝试卸出表再重新装入;如果是索引得问题,则应先删除索引再重建之。如果所有这些步骤都失败了,只有根据原有的系统归档备份来恢复系统。

下面的命令可以提供extend信息:

oncheck-pe

在onstat–l中,flag位表示了逻辑日志的状态,

A表示新加了还不能使用的日志

F表示空闲的可以使用的日志,一般是在0级备份之后才有这样的状态

U表示已经使用的逻辑日志

L表示当前的日志文件包含一个检查点

C表示正在使用当前的日志文件

B表示已经备份的日志文件

dos工具(汇编语言工具)ms17010下载(ms17010补丁官方下载)