zoukankan      html  css  js  c++  java
  • 提高rollback的速度

    提高rollback的速度

    现象:

    1、客户端使用sqlplus、rapid sql等工具响应较慢

    2、主机cpu使用率较高,主要是IO等待很高

    3、操作系统层面操作响应慢

    过程:

    1、查看alter日志,发现有大量如下信息:

    Thread 1 cannot allocate new log, sequence xxxx

    Checkpoint not complete

    select group#,members,status from v$log;

    发现只有3个group,每个group1个member(默认配置),而且一个状态是current,另外两个是active,很显然redo group不够。

    2、查看后台进程,发现ora_p000...ora_p015共16个进程在运行,该主机2颗cpu,共8个核心,连接到数据库中查看FAST_START_PARALLEL_ROLLBACK参数值为LOW,即默认值。

    这个值表明并行运行的回滚进程有2*number of cpu,刚好是16个进程,与使用ps –ef | grep ora_p看到的一致。

    原因:

    同事通过db_link向这个数据库插入数据(1千多万行),执行了一个多小时,看到未执行完毕,就停止并rollback了,因此产生大量的回滚!为什么回滚这么慢呢?由Checkpoint not complete可知redo log group太少,LGWR在切换到新的group时,需要等待DBWR把数据写入到datafile。

    解决:

    1、增加redo log group

    alter database add logfile group 4 ('/usr/oracle/oradata/sid/redo04.log') size 209715200;

    依次增加到10个group。根据需要适当添加,只要status出现inactive即可。

    2、加快回滚速度

    提高并行回滚进程的数量,设置为HIGH时回滚进程=4*cpu数。

    ALTER SYSTEM SET FAST_START_PARALLEL_ROLLBACK=HIGH

    回滚操作由于要写入redo文件,其本身就是很消耗系统资源的。当在Oracle中回滚长期运行的事务时,需要查看V$SESSION_LONGOPS并评估还需要多少时间。

    另:跨库插入大量数据时,最好找dba或系统管理员使用expdp/impdp或其他效率更高的方法来操作!

  • 相关阅读:
    几道关于this的经典练习题的理解与分析
    对this的理解与总结
    内存机制及内存泄漏相关总结
    css3-伪元素与伪类
    css3-目标伪类选择器:target的应用
    react学习资料
    angular2学习视频
    vue学习资料
    gulp 入门---使用gulp压缩图片
    gulp 入门---使用gulp压缩css
  • 原文地址:https://www.cnblogs.com/wbzhao/p/2429072.html
Copyright © 2011-2022 走看看