eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

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

如何加快SMON的恢复进度?
modb.pro

昨天提到的事务恢复问题,有人问是否真要回滚几天那么久?

答案是肯定的,可能比估计的还要久,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-

历史上的今天...
    >> 2015-09-12文章:
    >> 2009-09-12文章:
    >> 2005-09-12文章:
           EMC Disk Fault Again and Again
    >> 2004-09-12文章:

By eygle on 2007-09-12 11:05 | Comments (12) | Internal | 1612 |

12 Comments

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

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

试试手工唤醒SMON:

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

oradebug wakeup smon的PID

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

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

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

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

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

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

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


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

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

set _cleanup_rollback_entries = 400 or even higher

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

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


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com