未设置自动归档有没有可能造成事务死锁?一个ERP程序进行保存时的一个事务比较长,牵涉到多个表,如果人一多就经常造成死锁,程序进入等待状态。alert.log里记录Thread 1 cannot allocate new log, sequence 50745,原来是没有设置自动归档。会不会是这个原因。

解决方案 »

  1.   

    oracle中这不叫死锁。你把告警日志中记录有错误信息的那一段完整贴出来看看。
      

  2.   

    好像是REDO LOG空间不够了吧
      

  3.   

    手工归档也会导致挂机的。
    SQL> archive log list;
    看看你的归档模式
    手动归档时,如果联机日志满了,需要手工归档至归档文件中,这个时候也会导致挂住,不过不是死锁。这里根据你的描述,可能不是这个问题导致。这里和人多人少没有关系,而且知道你手工归了档才能继续走,
    所以应该是其他的原因导致的。锁的时候,检查一下session表和v$lock。
      

  4.   

    可能是程序问题,检查时发现有一个表查询很慢,连在PL/SQL里也如此,而且占用CPU越来越大,最后达到90%多,把那个session干掉就慢慢恢复正常。在这段时间内,归档日志几乎1秒钟一个文件,占用空间急剧增长,能删掉这些文件吗。
      

  5.   

    搞定,就是程序问题,进入死循环不断同一个值的更新。
    -------------------------
    还想问高手几个问题:
    1.为什么在spfile中的log buffer和show parameter log_buffer看到的不一致?
    2.归档日志还是增长太快,一天4~5G,增大online redo log大小有用吗?多大合适?EM推荐175M一个,这是指总大小还是指每一组的大小,还是指每个文件的大小?
    3.备份后是不是可以把归档日志删掉了,怎么从Oracle记录里删?
      

  6.   

    1.为什么在spfile中的log buffer和show parameter log_buffer看到的不一致? 
    你看的是spfile还是pfile, show parameter就是查询的启动文件里的参数,不知道你这里的不一致差距多少。2.归档日志还是增长太快,一天4~5G,增大online redo log大小有用吗?多大合适?EM推荐175M一个,这是指总大小还是指每一组的大小,还是指每个文件的大小?
    归档日志增长和你的应用有关, 一天4-5g, 平均也就是一个小时也就是167M的日志,不算很大的,配置要参照你的峰值,这里EM推荐是175M,每一组是有多个一样的文件组成的。所以每一组大小也就是每个文件大小。 
    3.备份后是不是可以把归档日志删掉了,怎么从Oracle记录里删?
    了解归档的意义,恢复的时候,需要连续不间断的归档,如果归档删除,只能是只能利用备份和备份后的归档恢复备份以后的数据库叻。而不能恢复备份前的数据库叻。
      

  7.   

    1.我的spfile是根据pfile生成的,设成了1M,show parameter看到的有6M多。
    2.我共有4组,每组两个文件,共8个文件,是8个文件都要175M吗
    3.不太明白,我有备份和备份以后的归档不就可以恢复到最近的数据了吗?恢复备份前的数据是什么意思?