« Oracle HowTo:判断一个死事务的恢复进度 | Blog首页 | Oracle Database 11g中国Launch大会预告 »
如何加快SMON的恢复进度?
作者:eygle | 【转载请注出处】|【云和恩墨 领先的zData数据库一体机 | zCloud PaaS云管平台 | SQM SQL审核平台 | ZDBM 数据库备份一体机】
链接:https://www.eygle.com/archives/2007/09/howto_speed_up_smon_recovery.html
昨天提到的事务恢复问题,有人问是否真要回滚几天那么久?链接:https://www.eygle.com/archives/2007/09/howto_speed_up_smon_recovery.html
答案是肯定的,可能比估计的还要久,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文章:
>> 2004-09-12文章:
By eygle on 2007-09-12 11:05 | Comments (12) | Internal | 1612 |
我记得能否通过修改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这参数应该是串行恢复的时候才起做用的吧