翻译自mos文章当并行事务恢复进程在执行时,禁用并行事务恢复的方法

Posted mfmdaoyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译自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.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 [email protected] (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

以上是关于翻译自mos文章当并行事务恢复进程在执行时,禁用并行事务恢复的方法的主要内容,如果未能解决你的问题,请参考以下文章

[翻译自mos文章]不完全恢复之后,open resetlogs之前,怎么快速的检查数据库是否处于一致性的状态?

翻译自mos文章job 不能自己主动执行--这是另外一个mos文章,本文章有13个解决方法

翻译自mos文章当/var/tmp文件夹被remove掉之后,GI crash,并启动失败,原因是ohasd can not create named pipe

翻译自mos文章在UNIX中,怎么确定一个特定的可执行程序link的是哪些Shared Libraries ?

翻译自mos文章当点击完 finishbutton后,dbca 或者dbua hang住

翻译自mos文章oraclepassword管理策略