您好,欢迎访问一九零五行业门户网

【翻译自mos文章】当并行事务恢复进程在运行时,禁用并行事务恢

当并行事务恢复进程在运行时,禁用并行事务恢复的方法 how to disable parallel transaction recovery when parallel txn recovery is active (doc id 238507.1) 适用于: oracle database - enterprise edition - version 8.1.5.0 to 11.2.0.4 [release 8.1
当并行事务恢复进程在运行时,禁用并行事务恢复的方法
how to disable parallel transaction recovery when parallel txn recovery is active (doc id 238507.1)
适用于:
oracle database - enterprise edition - version 8.1.5.0 to 11.2.0.4 [release 8.1.5 to 11.2]
oracle database - personal edition - version 8.1.5.0 to 11.2.0.4 [release 8.1.5 to 11.2]
information in this document applies to any platform.
症状:
parallel transaction recovery 花费了很长时间
你可以使用v$transaction视图的used_ublk列来估计rollback需要多长时间,但并没有公式来计算该时间。
如果你在rollback 已经启动之后,再shutdown database,rollback会在停止的地方再启动。
你可以看一下v$fast_start_transactions视图中的两列的对比: undoblocksdone 和 undoblockstotal
变动:
一个大事务 被kill掉 或者被rolled back
原因:
并行事务恢复( parallel transaction recovery ) 不如串行回滚快的例子很多,原因是pq slaves进程会相互干扰(interfer)
这取决于需要rollback的类型,一般发生在roll back 并行 index update上。
解决方案:
在线地把并行恢复改为串行。若是cluster环境,需要在所有的实例上同时修改
1. 找到smon的 oracle pid (注意不是os pid)
sql> select pid, program from v$process where program like '%smon%';
pid program
---------- ------------------------------------------------
6 oracle@stsun7 (smon)
2. disable smon transaction cleanup
sql> oradebug setorapid 'smon's oracle pid';
sql> oradebug event 10513 trace name context forever, level 2
3.从os层面kill掉那些正在执行并行事务恢复的pq slave进程。可以通过v$fast_start_servers 来找到这些pq slave进程
select spid from v$process where pid in (select pid from v$fast_start_servers);
然后从os层面kill 掉上面select语句的查询结果: kill -9 spid
4. 关闭fast_start_parallel_rollback
alter system set fast_start_parallel_rollback=false;
5.重新启动 事务恢复(transaction recovery )
sql> oradebug setorapid 'smon's oracle pid';
sql> oradebug event 10513 trace name context off
其它类似信息

推荐信息