eygle.com   eygle.com
eygle.com  
 

« Oracle HowTo:判断一个死事务的恢复进度 | Blog首页 | Oracle Database 11g中国Launch大会预告 »

如何加快SMON的恢复进度?

作者:eygle |【转载时请以超链接形式标明文章和作者信息及本声明
链接:
昨天提到的事务恢复问题,有人问是否真要回滚几天那么久?

答案是肯定的,可能比估计的还要久,SMON的恢复持续但是缓慢。
目前的恢复进度进行到如下状态:

SQL> select KTUXEUSN,KTUXESLT,KTUXESQN,KTUXECFL,KTUXESIZ,sysdate
  2  from x$ktuxe where KTUXEUSN=10 and KTUXESLT=39;

  KTUXEUSN  KTUXESLT  KTUXESQN KTUXECFL          KTUXESIZ SYSDATE
---------- ---------- ---------- --------------- ---------- -------------------
        10        39    2567412 DEAD                559291 2007-09-12 10:06:45

SQL> select KTUXEUSN,KTUXESLT,KTUXESQN,KTUXECFL,KTUXESIZ,sysdate
  2  from x$ktuxe where KTUXEUSN=10 and KTUXESLT=39;

  KTUXEUSN  KTUXESLT  KTUXESQN KTUXECFL          KTUXESIZ SYSDATE
---------- ---------- ---------- --------------- ---------- -------------------
        10        39    2567412 DEAD                559260 2007-09-12 10:06:53

SQL> select KTUXEUSN,KTUXESLT,KTUXESQN,KTUXECFL,KTUXESIZ,sysdate
  2  from x$ktuxe where KTUXEUSN=10 and KTUXESLT=39;

  KTUXEUSN  KTUXESLT  KTUXESQN KTUXECFL          KTUXESIZ SYSDATE
---------- ---------- ---------- --------------- ---------- -------------------
        10        39    2567412 DEAD                559089 2007-09-12 10:07:24

按照估算,还要进行大约1天多的恢复。

那么是否有办法加速SMON的恢复进度呢?
答案应该是否定的,我们是没有办法更改SMON的恢复进程的。

如果谁有好的建议,欢迎帮忙提出!

-The End-

历史上的今天...
      >> 2005-09-12文章:
             EMC Disk Fault Again and Again
      >> 2004-09-12文章:
------
这篇 【如何加快SMON的恢复进度?】来自 www.eygle.com | CSDN技术网摘| del.icio.us|365Key

By eygle on 2007-09-12 11:05 | Comments (12) | Posted to Internal | Edit |Pageviews:

相关文章 随机文章
  • Oracle10gR2中的Mutex竞争的案例
  • CURSOR_SPACE_FOR_TIME 参数废弃
  • 关于Mutex的笔记
  • DBA警世录:bootstrap$的禁忌
  • Varchar2(4000)能存多少数据?
  • 《循序渐进Oracle》之后写什么?
    新书最后章节框架性定稿
    《循序渐进Oracle》在China-Pub
    Oracle10g的UNDO_RETENTION自动化管理增强
    难得一笑
    搜索本站:

    留言 (12)

    我记得能否通过修改FAST_START_PARALLEL_ROLLBACK来加快速度?比方说设置为HIGH
    还有不知道是否跟这个参数RECOVERY_PARALLELISM有关系?多加几个进程应该会加快恢复速度吧
    当然都是在多CPU的情况下才有用吧

    Posted by: bluemoon0083 at September 12, 2007 1:59 PM

    就是因为并行恢复有问题才改为串行恢复的,并行恢复更加慢!

    Posted by: eygle at September 12, 2007 2:13 PM

    试试手工唤醒SMON:

    select p.pid from v$bgprocess b, v$process p where b.name = 'SMON' and p.addr = b.paddr;

    oradebug wakeup smon的PID

    Posted by: adam at September 12, 2007 3:38 PM

    谢谢adam,SMON没有"睡着"啊,恢复一直在进行。

    从并行恢复向串行恢复时已经唤醒过SMON了。

    Posted by: eygle at September 12, 2007 4:02 PM

    eygle能解释一下为什么串行恢复而不用并行恢复吗?
    嘿嘿,其实如果是我,我也会用FAST_START_PARALLEL_ROLLBACK=high加快恢复,如果是rac环境,也关闭其他的几个节点。

    Posted by: 小荷 at September 12, 2007 9:02 PM

    你测试过、或者说经历过FAST_START_PARALLEL_ROLLBACK恢复么?

    我遇到过几次,都是并行恢复有问题。

    Posted by: eygle at September 14, 2007 5:31 PM

    之前遇到过使用FAST_START_PARALLEL_ROLLBACK的情况,当时是表无法做truncate,将FAST_START_PARALLEL_ROLLBACK设置为high后,关闭2个节点剩下一个节点,大约1个半小时恢复了正常,期间没遇到什么报错。
    eygle说的有问题,有什么报错信息吗?

    Posted by: 小荷 at September 17, 2007 10:26 AM

    你要监控一下并行恢复每秒能够恢复多少个块,这样才知道并行恢复的速度。

    Posted by: eygle at September 17, 2007 11:06 AM


    对smon恢复,在回滚时涉及到大量的索引块时,此时并行恢复往往会比串行恢复慢。

    其实是用并行恢复,还是用串行恢复,只需要在并行恢复时,查看v$session_wait看看有没有资源冲突即可,有的话,就改成串行,往往速度很快很多。

    Posted by: logzgh at September 17, 2007 2:18 PM

    set _cleanup_rollback_entries = 400 or even higher

    Posted by: kamus at December 30, 2007 11:03 PM

    _cleanup_rollback_entries 是一个选择,不过这是个静态参数,需要重启数据库,很多时候并不适用。

    Posted by: eygle at December 30, 2007 11:36 PM

    _clean_rollback_entries这参数应该是串行恢复的时候才起做用的吧

    Posted by: 棉花糖ONE at June 6, 2008 11:25 PM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004 eygle.com, All rights reserved.