精华内容
下载资源
问答
  • informix数据库中物理日志和逻辑日志两种非常重要的磁盘构件。 1.物理日志 物理日志(physicallog)由一片连续的磁盘空间。其主要目的是为系统进行快速恢复提供原始数据映像。物理日志以页为单位进行分配和释放,它...

    informix数据库中物理日志和逻辑日志两种非常重要的磁盘构件。
    1.物理日志
    物理日志(physicallog)由一片连续的磁盘空间。其主要目的是为系统进行快速恢复提供原始数据映像。物理日志以页为单位进行分配和释放,它所存储的内容被称为beforep_w_picpaths(顾名思义,数据原来的面貌即修改前数据映像)。当共享内存中的某个页要被修改之前(第一次被修改),系统先将其修改前数据映像(beforep_w_picpaths)放到物理日志中保存起来。这样,在用户的整个操作完全成功以前,他所修改的所有数据页的修改前映像都被保存着,一旦出现问题,系统可以根据物理日志中的beforep_w_picpaths进行快速恢复。需要注意的是,只在数据页第一次被修改以前其before p_w_picpath才会被保存,在beforep_w_picpath被写入以后和其被释放之前的这一段过程中,所有对该页进行的修改都不再写beforep_w_picpath了。当用户写该页这个操作对应的逻辑日志被释放时,其before p_w_picpath也就可以释放了。
    2.逻辑日志
    逻辑日志(logicallogs)是由若干块独立的磁盘空间构成,每一块都是连续的磁盘空间。一个Informix DynamicServer系统的逻辑日志块数至少要有三块,最大数据可以由管理员配置(不能超过32767块)。
    记逻辑日志的目的是将对系统的每个操作、每个修改都保存起来,以便系统出现问题的时候可以根据其内容进行重做(REDO)或事务不能继续进行下去的时候进行回滚(UNDO)。逻辑日志记录的内容主要包括事务的每一步操作机器对系统产生的影响、DDL语句和检查点(checkpoint)记录。
    3.物理日志由系统维护,通常无需维护。
    4.逻辑日志的维护。
    逻辑日志的备份方式
    先说一下备份级别,也同样用informix的概念来理解
    备份级别分为 0, 1, 2
    0:完全备份
    1:自上一次完全备份,进行增量
    2:自上一次增量进行增量
    备份方式有两种:自动、连续
    所谓自动并不是想像中的自动,它运行一次后会结束,这样就要有脚本或人工定时去备份逻辑日志,不然会被填满。
    可以用命令:ontape -a 来切换到自动备份
    而连续才是想像中自动的意思,他不会停止,只要日志满了就会去备份。通常如果不想去费心思管理逻辑日志,可以设置为连续。
    可以用命令:ontape -c 来切换到连续备份
    informix中逻辑日志的工作流程
    informix逻辑日志一般有多个。建立多个日志的原因我想是考虑到效率。当多个进程需要记录日志时,可以同时向多个日志文件中写。
    在informix配置文件中logfiles指定逻辑日志文件的个数(最少为3个,最大为X个)。logsize指定每个逻辑日志文件的大小。(总逻辑日志空间为:logsize*logfiles)这里的配置只在informix实例初始化时才起作用,即oninit -i。当然在使用过程中如果有需求要改变逻辑日志的个数或大小不能通过oninit -i来实现。onparams可以对逻辑日志文件进行动态的添加,更改大小,删除,移动等操作。
    buffer中逻辑日志什么时候写入日志文件
    上面,说到我们会建立多个日志文件用来记录逻辑日志,但并不是每产生一次操作记录就向日志文件中写,那样io太多。而是在记录在buffer中。当达到一定限度时再写入日志文件,那么什么时候buffer会写入文件中呢?

    1. buffer满了 用来记录逻辑日志的buffer的大小由onconfig文件中的logbuff决定,当buffer写满后会写入日志文件。这儿可以看到设置合适的 logbuff大小还是对效果有影响的。如果过小,buffer很快被写满,就要做一次io,写入日志文件。这样会造成过多的IO。如果过大,常时间buffer中的数据不写入日志文件,如果有意外发生,造成较大的不可恢复。同时点用太多内存有可能影响整体性能。
      逻辑日志写满了怎么办?
      当逻辑日志写满后,数据库就会被塞住,而不能进行任何操作。所以不能让逻辑日志写满。那么就要保证逻辑日志文件可以循环使用。
      下面是一种方案:当某逻辑日志文件写满后,将逻辑日志进行备份,然后再把这个日志文件设备为可用。
      informix也是这么做的,系统运行时,可以让日志文件写满后进行连续备份,这样就可以循环使用日志文件了。
      那么备份到哪呢?在onconfig文件中,LTAPEDEV指定备份的磁带,我现在设置成/dev/null其实是不备份的,但让informix以为已经备份,以至系统可以向下正常运行。当然,如果我指定到备份设备,就可以备份了。
      如果把备份设备指定到/dev/null ,那么备份方式将自动为连续备份。
      如果把备份设备指到了具体的磁带机,那么可以用ontape -c来设置备份方式为连续备份
      下面一段是关于日志状态的说明:
      先对下面的一段进行一些说明,number一共到9说明有9个逻辑日志,size为12500说明生个逻辑日志文件大小10M。used当然是已经使用过了多少。
      可以看到大部已经使用完。不用害怕,这是很正常的。可以看到%used为100%的flags为U-B U虽然说明已经满了,但B却说明了已经备份过了,可以进行循环使用。如果当前使用的日志文件满了后,会自动切换到下一个U-B上。
      第8个日志文件flags为U—C-L 说明这个是当前正在使用的日志文件。使用onmode-l可以切换到下一个日志文件,切换后再用onstat-l查看,可以看到第9个日志文件变为U—C状态,说明已经在使用下一个了,而它的%usered则为0。也验证了U-B状态会循环使用的说明。
      还有一点要注意,即使在当前使用的日志后面有没有满的日志,informix也不会跳过当前使用的日志去写入下面的日志文件,只有当前日志满了后才切换到下一个(或用onmode-l强制转到下一个)
      address number flags uniqid begin size used %used
      8352f680 1 U-B---- 11544 1061e7 12500 12500 100.00%
      8352f69c 2 U-B---- 11545 1092bb 12500 12500 100.00%
      8352f6b8 3 U-B---- 11546 10c38f 12500 12500 100.00%
      8352f6d4 4 U-B---- 11547 10f463 12500 12500 100.00%
      8352f6f0 5 U-B---- 11548 112537 12500 12500 100.00%
      8352f70c 6 U-B---- 11549 11560b 12500 12500 100.00%
      8352f728 7 U-B---- 11550 6135e6 12500 12500 100.00%
      8352f744 8 U—C-L 11551 6166ba 12500 10616 84.93%
      8352f760 9 U-B---- 11530 61978e 12500 12500 100.00%
      逻辑日志文件的状态显示包括两个区域:
      number:标识单个逻辑日志文件的logid。
      flags:标明相应逻辑日志文件的状态。flags状态标志有七个位置,但仅第一,三,五,七位置
      有标志值。
      第一个位置上,可能出现A,F,U三个标志中的一个;
      第三个位置上,标志B可能出现也可能也可能不出现;
      第五个位置上,可能为标志C也可能为空;
      第七个位置上,可能是标志L也可能为空;
      位置 标志 含义
      1 A Added,新增加的逻辑日志文件,仅当建立一个(根dbspace的)0级archive
      后才能使用。
      1 F Free,该逻辑日志文件空闲并可以使用。
      1 U Used,该逻辑日志文件正在使用而未释放,OnLine恢复时还需要该文件(回
      滚一个事务或找到上一个检查点记录)
      3 B Backed-UP,该逻辑日志文件已备份。
      5 C Current,该逻辑日志文件是当前正在填充的逻辑日志文件。
      7 L Last,该逻辑日志文件包含有最近一次检查点记录,在新的检查点记录写入
      另一个日志文件之前,该文件及后面的逻辑日志文件不能释放。

    所有状态标志的可能组合
    状态标志 逻辑日志文件的状态
    A------ 上次0级archive以来新增加的逻辑日志文件,暂时不能使用
    F------ 空闲
    U------ 正在使用,还没有备份
    U-B---- 日志已备份,恢复时还需要
    U-B—L 日志已备份,包含上次检查点记录,恢复时还需要此文件
    U—C-- 当前日志文件
    U—C-L 当前日志文件,并包含上次检查点记录

    长事务
    先说一下引起长事务的原因,一个逻辑日志文件中包括一个没有结束的事务时,这个日志文件是不能被备份的。如果一个事务特别长,那么就有可能把所有日志文件都写满。如果所有日志被写满是很麻烦的。informix会控制当日志写入量达到一定程度时,就报告这个事务为长事务,然后进行回滚,以防止日志被写满。
    这儿就有两个高水位线的概念,在onconfig文件中HTXHWM 这是一个百分比,当已经使用日志量达到这个总日志量的这个百分比时,就报告长事务。开始回滚,期间别的操作还可以进行(写入日志),但当达到另一个水准线时LTXEHWMinformix会停止其它进程的操作,用所有精力进行回滚。(当达到这个水平时,如果再接受别的进程写入日志,有可能不能完成回滚就已经填满所有日志。回滚也是要写入大量日志的!)
    上面就是长事务的原因。所以进行比较大的事务操作时,可以暂时切换到无日志状态。如果不能即时关闭日志记录,可以把日志文件大小加大,都有可能解决上面的问题。另外还有虽的方法,我还要去查看
    注意:长日志是指发生在一个日志文件不能备份的情况下,所以增加日志文件个数并不管用,只有适当增加每个日志文件大小

    展开全文
  • informix-逻辑日志

    千次阅读 2006-11-05 14:18:00
    什么是逻辑日志 日志是记录数据库操作的。包括物理日志、逻辑日志。物理日志记录数据库物理变化,即变化的数据信息,而逻辑设备记录逻辑的变化,比如insert, update等动作,但不是记录具体数据,那个由物理日志完成...
    什么是逻辑日志 
    

        日志是记录数据库操作的。包括物理日志、逻辑日志。物理日志记录数据库物理变化,即变化的数据信息,而逻辑设备记录逻辑的变化,比如insert, update等动作,但不是记录具体数据,那个由物理日志完成。

    逻辑日志的类型

    可以用informix的日志类型来理解逻辑日志:无日志, 无buffer日志, 有buffer日志, asii日志
    无日志:不记录日志,此时当然也不支持事务(可以在大事务时,临时切换到无日志状态以防止长事务发生。)
    无buffer日志:也并不是每个操作都直接写到磁盘,而是每个事务完成后马上写。
    buffer日志:一般会在buffer满了后才写到磁盘
    assii日志:和无buffer处理相似
    各日志间的切换命令:

    逻辑日志的备份方式

    先说一下备份级别,也同样用informix的概念来理解
    备份级别分为 0, 1, 2 
    0:完全备份
    1:自上一次完全备份,进行增量
    2:自上一次增量进行增量

    备份方式有两种:自动、连续
    所谓自动并不是想像中的自动,它运行一次后会结束,这样就要有脚本或人工定时去备份逻辑日志,不然会被填满。
    可以用命令:ontape -a 来切换到自动备份
    而连续才是想像中自动的意思,他不会停止,只要日志满了就会去备份。通常如果不想去费心思管理逻辑日志,可以设置为连续。
    可以用命令:ontape -c 来切换到连续备份

    informix中逻辑日志的工作流程

        informix逻辑日志一般有多个。建立多个日志的原因我想是考虑到效率。当多个进程需要记录日志时,可以同时向多个日志文件中写。
        在informix配置文件中logfiles指定逻辑日志文件的个数(最少为3个,最大为X个)。logsize指定每个逻辑日志文件的大小。(总逻辑日志空间为:logsize*logfiles) 这里的配置只在informix实例初始化时才起作用,即oninit -i 。当然在使用过程中如果有需求要改变逻辑日志的个数或大小不能通过oninit -i 来实现。onparams可以对逻辑日志文件进行动态的添加,更改大小,删除,移动等操作。

    buffer中逻辑日志什么时候写入日志文件

    上面,说到我们会建立多个日志文件用来记录逻辑日志,但并不是每产生一次操作记录就向日志文件中写,那样io太多。而是在记录在buffer中。当达到一定限度时再写入日志文件,那么什么时候buffer会写入文件中呢?
    1. buffer满了   用来记录逻辑日志的buffer的大小由onconfig文件中的logbuff决定,当buffer写满后会写入日志文件。这儿可以看到设置合适的    logbuff大小还是对效果有影响的。如果过小,buffer很快被写满,就要做一次io, 写入日志文件。这样会造成过多的IO。如果过大,常时间buffer中的数据不写入日志文件,如果有意外发生,造成较大的不可恢复。同时点用太多内存有可能影响整体性能。

    逻辑日志写满了怎么办?

      当逻辑日志写满后,数据库就会被塞住,而不能进行任何操作。所以不能让逻辑日志写满。那么就要保证逻辑日志文件可以循环使用。
    下面是一种方案:当某逻辑日志文件写满后,将逻辑日志进行备份,然后再把这个日志文件设备为可用。
    informix也是这么做的,系统运行时,可以让日志文件写满后进行连续备份,这样就可以循环使用日志文件了。
    那么备份到哪呢?在onconfig文件中,LTAPEDEV指定备份的磁带,我现在设置成/dev/null 其实是不备份的,但让informix以为已经备份,以至系统可以向下正常运行。当然,如果我指定到备份设备,就可以备份了。
      如果把备份设备指定到/dev/null ,那么备份方式将自动为连续备份。
      如果把备份设备指到了具体的磁带机,那么可以用ontape -c来设置备份方式为连续备份

    下面一段是关于日志状态的说明:
    先对下面的一段进行一些说明,number一共到9说明有9个逻辑日志,size为12500说明生个逻辑日志文件大小10M。 used当然是已经使用过了多少。
    可以看到大部已经使用完。不用害怕,这是很正常的。可以看到%used为100%的flags为U-B  U虽然说明已经满了,但B却说明了已经备份过了,可以进行循环使用。如果当前使用的日志文件满了后,会自动切换到下一个U-B上。
    第8个日志文件flags为U---C-L  说明这个是当前正在使用的日志文件。使用onmode -l可以切换到下一个日志文件,切换后再用onstat -l查看,可以看到第9个日志文件变为U---C状态,说明已经在使用下一个了,而它的%usered则为0。也验证了U-B状态会循环使用的说明。
    还有一点要注意,即使在当前使用的日志后面有没有满的日志,informix也不会跳过当前使用的日志去写入下面的日志文件,只有当前日志满了后才切换到下一个(或用onmode -l强制转到下一个)

    address   number   flags     uniqid    begin        size     used    %used
    8352f680  1       U-B----  11544    1061e7      12500    12500   100.00%
    8352f69c  2       U-B----  11545    1092bb      12500    12500   100.00%
    8352f6b8  3       U-B----  11546    10c38f      12500    12500   100.00%
    8352f6d4  4       U-B----  11547    10f463      12500    12500   100.00%
    8352f6f0  5       U-B----  11548    112537      12500    12500   100.00%
    8352f70c  6       U-B----  11549    11560b      12500    12500   100.00%
    8352f728  7       U-B----  11550    6135e6      12500    12500   100.00%
    8352f744  8       U---C-L  11551    6166ba      12500    10616    84.93%
    8352f760  9       U-B----  11530    61978e      12500    12500   100.00%
    逻辑日志文件的状态显示包括两个区域:
    number:标识单个逻辑日志文件的logid。
    flags:标明相应逻辑日志文件的状态。flags状态标志有七个位置,但仅第一,三,五,七位置
    有标志值。
    第一个位置上,可能出现A,F,U三个标志中的一个;
    第三个位置上,标志B可能出现也可能也可能不出现;
    第五个位置上,可能为标志C也可能为空;
    第七个位置上,可能是标志L也可能为空;

    位置    标志     含义
    1       A       Added,新增加的逻辑日志文件,仅当建立一个(根dbspace的)0级archive
    后才能使用。
    1       F       Free,该逻辑日志文件空闲并可以使用。
    1       U       Used,该逻辑日志文件正在使用而未释放,OnLine恢复时还需要该文件(回
    滚一个事务或找到上一个检查点记录)
    3       B       Backed-UP,该逻辑日志文件已备份。
    5       C       Current,该逻辑日志文件是当前正在填充的逻辑日志文件。
    7       L       Last,该逻辑日志文件包含有最近一次检查点记录,在新的检查点记录写入
    另一个日志文件之前,该文件及后面的逻辑日志文件不能释放。


    所有状态标志的可能组合
    状态标志       逻辑日志文件的状态
    A------       上次0级archive以来新增加的逻辑日志文件,暂时不能使用
    F------       空闲
    U------       正在使用,还没有备份
    U-B----       日志已备份,恢复时还需要
    U-B---L       日志已备份,包含上次检查点记录,恢复时还需要此文件
    U---C--       当前日志文件
    U---C-L       当前日志文件,并包含上次检查点记录

    长事务

    先说一下引起长事务的原因,一个逻辑日志文件中包括一个没有结束的事务时,这个日志文件是不能被备份的。如果一个事务特别长,那么就有可能把所有日志文件都写满。如果所有日志被写满是很麻烦的。informix会控制当日志写入量达到一定程度时,就报告这个事务为长事务,然后进行回滚,以防止日志被写满。

    这儿就有两个高水位线的概念,在onconfig文件中HTXHWM  这是一个百分比,当已经使用日志量达到这个总日志量的这个百分比时,就报告长事务。开始回滚,期间别的操作还可以进行(写入日志),但当达到另一个水准线时LTXEHWM informix会停止其它进程的操作,用所有精力进行回滚。(当达到这个水平时,如果再接受别的进程写入日志,有可能不能完成回滚就已经填满所有日志。回滚也是要写入大量日志的!)

    上面就是长事务的原因。所以进行比较大的事务操作时,可以暂时切换到无日志状态。如果不能即时关闭日志记录,可以把日志文件大小加大,都有可能解决上面的问题。另外还有虽的方法,我还要去查看

    注意:长日志是指发生在一个日志文件不能备份的情况下,所以增加日志文件个数并不管用,只有适当增加每个日志文件大小

      

    展开全文
  • 想起这次误操作导致数据库停机1多小时然后还要被领导骂狗血淋头就很蛋疼,本来是次简单的在服务器上逻辑卷扩容,但是我在写命令的时候从自己的笔记里面复制出来一个收缩的命令。 本来这是扩容 lvextend -L +...

    妈的,这次事情经过很简单但是过程还是比较曲折,想起这次误操作导致数据库停机1个多小时然后还要被领导骂个狗血淋头就很蛋疼,本来是一次简单的在服务器上逻辑卷扩容,但是我在写命令的时候从自己的笔记里面复制出来一个收缩的命令。

    本来这是扩容 lvextend -L +50G /dev/VolGroup/lv_root

    我复制成了lvreduce -L -51G /dev/VolGroup/lv_home

    这两个命令一起我又没仔细看。。而且使用格式也差不多,所以敲下去在刷新之后整个LV就掉了,我当时刚敲下去就感觉不对因为马上就卡了,根据我原来扩容的经验应该几秒就好然后就能在逻辑卷中看见增加的空间。这个逻辑卷上大概有240G左右的数据包括Oracle软件,运行之后直接整个逻辑卷就卸载了,而且死活挂不上去。。当时我还不知道是什么原因,仔细看了下命令才知道。。整个人都要崩溃了,但我突然又想起这个库是做了DG的所以还是能抢救,我赶紧切到备库,切完之后通知业务,但是业务又不想改连接,叫我把原主库恢复出来,只有试试。。我仔细想想我是做的收缩没做其他东西如果把LV扩成原来的大小应该能恢复出来,试了下果然就成功了,赶紧通知各位大哥。。虽然数据库能用了但是现在的问题是有两个主库,并且两个主库都有同时打开的时候也就是说SCN已经不一致了,这个问题百度了一下网上说只能重建备库,不过我还是自己摸索出了一个方式快速把备库搭建起来。

    首先,因为使用的ADG所以基本上不存在数据丢失的情况,所以用下面的命令停止备库的standby日志应用

    SQL> alter database recover managed standby database cancel; 

    完成备库standby日志应用

    SQL> alter database recover managed standby database finish; 

    执行角色的切换并打开数据库,最后在打开的备库中查看角色就是主库了。

    SQL> alter database commit to switchover to primary;

    SQL> alter database open;

    SQL> select db_unique_name,database_role,protection_mode,protection_level,open_mode,switchover_status from v$database; 

     

    这样就完成了当主库已经挂掉不能正常切换主备时,failover手工切换的过程,下面的就讲讲我原来主库成功打开之后,没有备库的情况。

    本来我是直接想用命令在备库中切换,但是我发现会有报错ORA-16416: No viable Physical Standby switchover targets available,按照我的理解两个库存在主备关系,当一个主库想要切换成主库时要有两个条件:

    一是必须有其他备库在参数文件;

    二是备库能正常运行并连接。

    SQL>alter database commit to switchover to primary;

    然后直接用上面的命令切换就行了,但是可能在切换的过程中有会话Hang住需要你在alert日志中观察。

     

     

    展开全文
  • 1.物理日志 物理日志(physical log)由一片连续的磁盘空间。其主要目的是为系统进行快速恢复提供原始数据映像。物理日志以页为单位进行分配和释放,它所存储的内容被称为before images(顾名思义,数据原...

    1.物理日志

        物理日志(physical log)由一片连续的磁盘空间。其主要目的是为系统进行快速恢复提供原始数据映像。
    物理日志以页为单位进行分配和释放,它所存储的内容被称为before images(顾名思义,数据原来的面貌即修改前数据映像)。
    当共享内存中的某个页要被修改之前(第一次被修改),系统先将其修改前数据映像(before images)放到物理日志中保存起来。
    这样,在用户的整个操作完全成功以前,他所修改的所有数据页的修改前映像都被保存着,一旦出现问题,
    系统可以根据物理日志中的before images进行快速恢复。需要注意的是,只在数据页第一次被修改以前其before image才会被保存,
    在before image被写入以后和其被释放之前的这一段过程中,所有对该页进行的修改都不再写before image了。当用户写该页这个操作对应的逻辑日志被释放时,
    其before image也就可以释放了。


    2.逻辑日志
        逻辑日志(logical logs)是由若干块独立的磁盘空间构成,每一块都是连续的磁盘空间。一个Informix Dynamic Server系统的逻辑日志块数至少要有三块,
    最大数据可以由管理员配置(不能超过32767块)。
    记逻辑日志的目的是将对系统的每个操作、每个修改都保存起来,以便系统出现问题的时候可以根据其内容进行重做(REDO)或事务不能继续进行下去的时候进行回滚(UNDO)。
    逻辑日志记录的内容主要包括事务的每一步操作机器对系统产生的影响、DDL语句和检查点(checkpoint)记录。
    3.物理日志由系统维护,通常无需维护。

    4.逻辑日志的维护。

    逻辑日志的备份方式

    先说一下备份级别,也同样用informix的概念来理解
    备份级别分为 0, 1, 2
    0:完全备份
    1:自上一次完全备份,进行增量
    2:自上一次增量进行增量

    备份方式有两种:自动、连续
    所谓自动并不是想像中的自动,它运行一次后会结束,这样就要有脚本或人工定时去备份逻辑日志,不然会被填满。
    可以用命令:ontape -a 来切换到自动备份
    而连续才是想像中自动的意思,他不会停止,只要日志满了就会去备份。通常如果不想去费心思管理逻辑日志,可以设置为连续。
    可以用命令:ontape -c 来切换到连续备份

    informix中逻辑日志的工作流程

        informix逻辑日志一般有多个。建立多个日志的原因我想是考虑到效率。当多个进程需要记录日志时,可以同时向多个日志文件中写。
        在informix配置文件中logfiles指定逻辑日志文件的个数(最少为3个,最大为X个)。logsize指定每个逻辑日志文件的大小。
    (总逻辑日志空间为:logsize*logfiles) 这里的配置只在informix实例初始化时才起作用,即oninit -i 。
    当然在使用过程中如果有需求要改变逻辑日志的个数或大小不能通过oninit -i 来实现。onparams可以对逻辑日志文件进行动态的添加,更改大小,删除,移动等操作。

    buffer中逻辑日志什么时候写入日志文件

    上面,说到我们会建立多个日志文件用来记录逻辑日志,但并不是每产生一次操作记录就向日志文件中写,那样io太多。而是在记录在buffer中。当达到一定限度时再写入日志文件,
    那么什么时候buffer会写入文件中呢?
    1. buffer满了   用来记录逻辑日志的buffer的大小由onconfig文件中的logbuff决定,当buffer写满后会写入日志文件。这儿可以看到设置合适的   
    logbuff大小还是对效果有影响的。如果过小,buffer很快被写满,就要做一次io, 写入日志文件。这样会造成过多的IO。
    如果过大,常时间buffer中的数据不写入日志文件,如果有意外发生,造成较大的不可恢复。同时点用太多内存有可能影响整体性能。

    逻辑日志写满了怎么办?

      当逻辑日志写满后,数据库就会被塞住,而不能进行任何操作。所以不能让逻辑日志写满。那么就要保证逻辑日志文件可以循环使用。
    下面是一种方案:当某逻辑日志文件写满后,将逻辑日志进行备份,然后再把这个日志文件设备为可用。
    informix也是这么做的,系统运行时,可以让日志文件写满后进行连续备份,这样就可以循环使用日志文件了。
    那么备份到哪呢?在onconfig文件中,LTAPEDEV指定备份的磁带,我现在设置成/dev/null 其实是不备份的,但让informix以为已经备份,
    以至系统可以向下正常运行。当然,如果我指定到备份设备,就可以备份了。
      如果把备份设备指定到/dev/null ,那么备份方式将自动为连续备份。
      如果把备份设备指到了具体的磁带机,那么可以用ontape -c来设置备份方式为连续备份

    下面一段是关于日志状态的说明:
    先对下面的一段进行一些说明,number一共到9说明有9个逻辑日志,size为12500说明生个逻辑日志文件大小10M。 used当然是已经使用过了多少。
    可以看到大部已经使用完。不用害怕,这是很正常的。可以看到%used为100%的flags为U-B  U虽然说明已经满了,但B却说明了已经备份过了,可以进行循环使用。
    如果当前使用的日志文件满了后,会自动切换到下一个U-B上。
    第8个日志文件flags为U---C-L  说明这个是当前正在使用的日志文件。使用onmode -l可以切换到下一个日志文件,切换后再用onstat -l查看,
    可以看到第9个日志文件变为U---C状态,说明已经在使用下一个了,而它的%usered则为0。也验证了U-B状态会循环使用的说明。
    还有一点要注意,即使在当前使用的日志后面有没有满的日志,informix也不会跳过当前使用的日志去写入下面的日志文件,
    只有当前日志满了后才切换到下一个(或用onmode -l强制转到下一个)

    address   number   flags     uniqid    begin        size     used    %used
    8352f680  1       U-B----  11544    1061e7      12500    12500   100.00%
    8352f69c  2       U-B----  11545    1092bb      12500    12500   100.00%
    8352f6b8  3       U-B----  11546    10c38f      12500    12500   100.00%
    8352f6d4  4       U-B----  11547    10f463      12500    12500   100.00%
    8352f6f0  5       U-B----  11548    112537      12500    12500   100.00%
    8352f70c  6       U-B----  11549    11560b      12500    12500   100.00%
    8352f728  7       U-B----  11550    6135e6      12500    12500   100.00%
    8352f744  8       U---C-L  11551    6166ba      12500    10616    84.93%
    8352f760  9       U-B----  11530    61978e      12500    12500   100.00%
    逻辑日志文件的状态显示包括两个区域:
    number:标识单个逻辑日志文件的logid。
    flags:标明相应逻辑日志文件的状态。flags状态标志有七个位置,但仅第一,三,五,七位置
    有标志值。
    第一个位置上,可能出现A,F,U三个标志中的一个;
    第三个位置上,标志B可能出现也可能也可能不出现;
    第五个位置上,可能为标志C也可能为空;
    第七个位置上,可能是标志L也可能为空;

    位置    标志     含义
    1       A       Added,新增加的逻辑日志文件,仅当建立一个(根dbspace的)0级archive
    后才能使用。
    1       F       Free,该逻辑日志文件空闲并可以使用。
    1       U       Used,该逻辑日志文件正在使用而未释放,OnLine恢复时还需要该文件(回
    滚一个事务或找到上一个检查点记录)
    3       B       Backed-UP,该逻辑日志文件已备份。
    5       C       Current,该逻辑日志文件是当前正在填充的逻辑日志文件。
    7       L       Last,该逻辑日志文件包含有最近一次检查点记录,在新的检查点记录写入
    另一个日志文件之前,该文件及后面的逻辑日志文件不能释放。


    所有状态标志的可能组合
    状态标志       逻辑日志文件的状态
    A------       上次0级archive以来新增加的逻辑日志文件,暂时不能使用
    F------       空闲
    U------       正在使用,还没有备份
    U-B----       日志已备份,恢复时还需要
    U-B---L       日志已备份,包含上次检查点记录,恢复时还需要此文件
    U---C--       当前日志文件
    U---C-L       当前日志文件,并包含上次检查点记录


    长事务

    先说一下引起长事务的原因,一个逻辑日志文件中包括一个没有结束的事务时,这个日志文件是不能被备份的。如果一个事务特别长,那么就有可能把所有日志文件都写满。
    如果所有日志被写满是很麻烦的。informix会控制当日志写入量达到一定程度时,就报告这个事务为长事务,然后进行回滚,以防止日志被写满。

    这儿就有两个高水位线的概念,在onconfig文件中HTXHWM  这是一个百分比,当已经使用日志量达到这个总日志量的这个百分比时,就报告长事务。开始回滚,
    期间别的操作还可以进行(写入日志),但当达到另一个水准线时LTXEHWM informix会停止其它进程的操作,用所有精力进行回滚。(当达到这个水平时,
    如果再接受别的进程写入日志,有可能不能完成回滚就已经填满所有日志。回滚也是要写入大量日志的!)

    上面就是长事务的原因。所以进行比较大的事务操作时,可以暂时切换到无日志状态。如果不能即时关闭日志记录,可以把日志文件大小加大,
    都有可能解决上面的问题。另外还有虽的方法,我还要去查看

    注意:长日志是指发生在一个日志文件不能备份的情况下,所以增加日志文件个数并不管用,只有适当增加每个日志文件大小

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11134849/viewspace-732579/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/11134849/viewspace-732579/

    展开全文
  • (1)switchover: 主库:alter database prepare to switchover to logical standby; 备库:alter database prepare to switchover ... --此时,备库应该将日志应用完毕alter database start logical standby apply:
  • 日志查找常用命令-超实用

    千次阅读 2020-09-19 15:51:51
    1 Linux日志查找常用命令 1.1 cat、zcat cat -n app.log | grep "error":查询日志中含有某个关键字error的信息,显示行号。 cat -n app.log | grep "error" --color:查询日志中含有某个关键字error的信息...
  • 很多人都说SAP的用户界面很糟糕,没有用户体验。这一点我非常认同。... 在开发用户界面和程序的时候,记住以下几要点,就可以开发出一个用户喜欢的SAP程序。以下就是我设计的SAP标准接口监控程序的开发过程。
  • 日志统计大数据分析

    万次阅读 2016-12-22 16:44:46
    2007年浙大研究生毕业后加入百度,从2008年开始从事数据方向,从零构建了百度的用户日志大数据处理平台。2015年4月从百度离职,创建神策数据,帮助客户实现数据驱动。这篇文章讲述我在百度从零构建大数据平台方面的...
  • 培训案例: 一个项目经理的工作日志

    千次阅读 2004-07-31 09:26:00
    一个项目经理的工作日志: 这天,我们的部门研发经理把我叫了过去,告诉我我们小组要接手一个新的项目,这项目已经经过客户和公司两方高层的确认了,最后要求完成的时间是2月,也就是在6月5日之前必须完成,...
  • 在?您的rsyslog日志管理手册了,请查收

    千次阅读 多人点赞 2020-12-05 17:32:06
    rsyslog日志管理和logrotate日志存储 ...系统日志是记录服务器系统运行和软件运行状况的记录程序,如果系统和软件在运行中出错,我们就可以在日志中获取问题发生时的记录,并以此寻求解决问题的方法。 ...
  • Zookeeper中运行日志 zookeeper.out 文件的输出路径默认为启动脚本的当前路径,导致Zookeeper集群启动失败时总是不记得输出日志在哪儿,不便于查找错误原因,因此很有必要设置固定路径来保存运行日志 在本次实验之前...
  • 项目中要对Oracle的redo.log进行解析,实现数据同步,由于项目逻辑原因,需要开启归档日志和补充日志。 归档日志 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下...
  • 解决:Android开发 看不崩溃的日志

    千次阅读 2019-09-13 18:37:38
    应用当前界面崩溃停留在上页面,看不崩溃日志<br> Android的logcat控制台,看不应用崩溃的日志?<br> 如何拦截未捕获的异常,并打印出来,帮助我们快速定位代码问题呢?<br> 最近同事跟...
  • 6.5 hadoop2.5.2的HA集群原理讲解以及详细配置(手动切换) 一文中讲述了如何搭建一个通过手工方式实现namenode HA机制,本文描述如同通过Zookeeper来实现自动的HA. 基本原理以及部分参数的讲解可参考手动切换...
  • 归档日志

    2005-08-09 13:45:00
    但是我要先和你说一下,日志备份是把数据库的日常运行状态记录下来的种方式,所以要求数据库和存放的空间一定要大,而且要作好物理备份,你应该制定一下备份方案,有物理和逻辑备份两同时进行,网上有相关介绍,...
  • 这段时间有一个postgres逻辑复制的产品上线,在运行过程中遇到了一些问题,在解决问题的过程中查看了postgres逻辑复制相关的源码,对于其中的一些机制进行了整理。 逻辑同步的过程包含以下几部分:1.逻辑同步...
  • python wifi 自动切换

    千次阅读 2018-04-04 01:59:33
    需求 现某司直播,网络不稳定,导致直播异常,...现在写一个脚本自动检测网络,当网络异常时,自动切换到可用的wifi。 实现 操作系统:windows 10 连接命令:netsh wlan connect name=”%s” 查看当前wifi:...
  • 逻辑备用数据库介绍

    2013-01-29 13:15:33
    逻辑备用数据库使用主数据库的拷贝创建出来,但是创建出来以后,该备用数据库的物理结构就与主数据库不同了。逻辑备用数据库通过应用SQL语句进行更新。这样就允许用户在任何时候都可以在备用数据库上运行查询和报表...
  • db2 日志管理

    千次阅读 2014-04-20 19:01:26
    DB2日志是以文件的形式存放在文件系统中,分为两种模式:循环日志和归档日志。当创建新数据库时,日志的缺省模式是循环日志。在这种模式,只能实现数据库的脱机备份和恢复。如果要实现联机备份和恢复,必须设为...
  • 简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背... Sunny软件公司欲开发一个系统运行日志
  • Android 系统日志写入文件

    千次阅读 2018-07-04 20:04:25
    5.写一个service将系统日志文件 关于链接 1.技术博客汇总 2.开源项目汇总 3.生活博客汇总 4.喜马拉雅音频汇总 5.程序员聊天笔记汇总 5.其他汇总 1.业务需求 要求将app的系统...
  • Centos 创建逻辑卷并部署weblogic 、jdk重新安装 1.查询服务器java环境现状 rpm -qa|grep java 2.删除原版jdk (查出来除t开头的外全部删除) rpm -e --nodeps xxxxxx 举例: #rpm -e --nodeps java-1.8.0-...
  • 最近这段时间在设计和实现日志系统,在整个日志系统系统中Zookeeper的作用非常重要——它用于协调各个分布式组件...这里主要涉及Zookeeper在日志系统中的使用,但其实它在我们的消息总线和搜索模块中也同样非常重要。
  • Postgresql中xlog生成和清理逻辑

    千次阅读 2019-05-11 14:04:48
    PGSQL的XLOG生成和清理逻辑分析,XLOG暴涨的处理直接看第三部分。 1 WAL归档 # 在自动的WAL检查点之间的日志文件段的最大数量 checkpoint_segments = # 在自动WAL检查点之间的最长时间 checkpoint_timeout = # ...
  • 在我们的现实生活中,「日志记录」其实是件非常重要的事情,比如银行的转账记录,汽车的行车记录仪记录行驶过程中的一切,如果出现了什么问题,我们可以通过「日志记录」来搞清楚到底发生了什么事情。 除了在生活...
  • DG3.1——逻辑备库说明

    千次阅读 2012-08-21 22:10:23
    逻辑Standby的准备工作   1 确认操作的对象和语句是否能被逻辑Standby支持 ...由于逻辑Standby是通过SQL...SQL应用则是分析重做日志文件中的REDO信息,并将其转换为SQL语句,在逻辑Standby端执行,因此,需要
  • 运维必备——ELK日志分析系统

    千次阅读 热门讨论 2021-03-30 08:45:10
    目录、ELK日志分析系统概述(1 、ELK日志分析系统概述 (1 日志分析是运维工程师解决系统故障、发现问题的主要手段
  • 它使您的业务逻辑可以绑定易于模拟和测试的无依赖界面,同时提供在运行切换日志提供程序的灵活性。 在NuGet上下载 当前,NuGet上有6种不同的.NET日志记录提供程序: 安装包 安装包 安装包 安装包 安装包 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,934
精华内容 32,773
关键字:

切换到下一个逻辑日志命令