sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 故障案例 >

【学习笔记】Oracle启用与禁用事务的并行恢复的详细案例

时间:2016-10-18 09:52   来源:Oracle研究中心   作者:网络   点击:

天萃荷净 ORACLE 启用与禁用事务的并行恢复,ORACLE 从8i开始,引进了fast start parallel rollback机制来进行事务恢复,SMON使用并行的方式来进行事务的恢复,可以通过参数FAST_START_PARALLEL_ROLLBACK来控制是否启用和并行的进程个数。

1.可以取下面的三个值

FALSE – 禁用并行恢复事务,使用旧的串行的方式。
LOW – 限制最大的并行度是2 * CPU_COUNT
HIGH -限制最大的并行度是4 * CPU_COUNT

但是并行恢复常常出现问题,如SMON进程使用CPU占用100%,还有就是恢复相当的慢,pq进程之前互相干扰,所以有些时间我们不得不禁用并行恢复机制。
在串行恢复机制下,我们常常增加_CLEANUP_ROLLBACK_ENTRIES值如400,每一次回滚400个entries,加速恢复的速度。
可能通过v$fast_start_server视图来查看并行的进程的状态,如果出现了idle进程,那么我们需要禁用并行恢复机制。

oracleplus.net>@tran_parallel_rollback.sql
Session altered.
       USN STATE                   PID OS_PID        USED_TIME(S)      Total       Done       ToDo Estimated time to c
---------- ---------------- ---------- ------------ ------------- ---------- ---------- ---------- -------------------
         5 RECOVERING               15 20968                  121     486100      73564     412536 2013-05-04 19:29:16
STATE       UNDOBLOCKSDONE        PID OS_PID       XID
----------- -------------- ---------- ------------ ----------------
RECOVERING           73567         15 20968        050023005B010000
RECOVERING               0         21 20970        050023005B010000
RECOVERING               0         23 20972        050023005B010000
RECOVERING               0         25 20974        050023005B010000

2.暂停SMON进行事务恢复


oracleplus.net>oradebug setospid 20396
Oracle pid: 8, Unix process pid: 20396, image: oracle@rhel4 (SMON)
oracleplus.net>oradebug event 10513 trace name context forever ,level 2;
Statement processed.
暂停并行恢复后,过几分钟后,我们从v$fast_start_server与v$fast_start_transactions中都找不到回退的进程的信息,但是我们这里可以通过x$ktuxe来查看相关的信息

select ADDR, KTUXEUSN, KTUXESLT, KTUXESQN, KTUXESIZ
  from x$ktuxe
where KTUXECFL = 'DEAD'
ADDR               KTUXEUSN   KTUXESLT   KTUXESQN   KTUXESIZ
---------------- ---------- ---------- ---------- ----------
0000002A973B79B8          8          4        355     500116
过10分钟左右,v$process也查不到并行恢复进程相当的信息,所以这里我们根本不需要去手动kill掉并行恢复相当进程,因为ORACLE会自己的kill掉相关的并行recover进程
如果不想等待,我们可以手动kill掉相当的进程

3.下面是改回串行


oracleplus.net>alter system set fast_start_parallel_rollback=false;
System altered.
oracleplus.net>oradebug setospid 20396
Oracle pid: 8, Unix process pid: 20396, image: oracle@rhel4 (SMON)
oracleplus.net>oradebug event 10513 trace name context off;
Statement processed.
oracleplus.net>oradebug eventdump process
Statement processed.
oracleplus.net>@tran_parallel_rollback.sql
Session altered.
       USN STATE                   PID OS_PID        USED_TIME(S)      Total       Done       ToDo Estimated time to c
---------- ---------------- ---------- ------------ ------------- ---------- ---------- ---------- -------------------
         5 RECOVERING                                         232     339650     176665     162985 2013-05-04 19:42:02
         8 RECOVERED                                          652     500116     500116          0 2013-05-04 19:38:28       
如果smon没有唤醒,可以通过下面的命令来唤醒
oracleplus.net>select pid,spid from v$process where spid=20396;
       PID SPID
---------- ------------
         8 20396
oracleplus.net>oradebug wakeup 8;
Statement processed.

4.下面是计算恢复还需要多长的时间


oracleplus.net>@tran_dead.sql
KTUXECFL                   COUNT(*)
------------------------ ----------
DEAD                              2
NONE                            576
ADDR               KTUXEUSN   KTUXESLT   KTUXESQN   KTUXESIZ
---------------- ---------- ---------- ---------- ----------
0000002A97494488          5         35        347     101071
0000002A974939E0          8          4        355          0
DO YOU COMPUTE RECOVERY TIME :DO ENTER ,NOT CTRL+C:
Enter Search Usn (i.e. 3) : 5
Enter Search Slt (i.e. 4) : 35
PL/SQL procedure successfully completed.
time cost Hours:.02
PL/SQL procedure successfully completed.
本文固定链接: http://www.htz.pw/2013/05/08/oracle-%e5%90%af%e7%94%a8%e4%b8%8e%e7%a6%81%e7%94%a8%e4%ba%8b%e5%8a%a1%e7%9a%84%e5%b9%b6%e8%a1%8c%e6%81%a2%e5%a4%8d.html | 认真就输

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【学习笔记】Oracle启用与禁用事务的并行恢复的详细案例

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/993.html

Oracle研究中心

关键词:

SMON使用并行的方式来进行事务的恢复

参数FAST_START_PARALLEL_ROLLBACK详解

fast start parallel rollback机制来进行事务恢复