【翻譯自mos文章】當並行事務恢複進程在運行時,禁用並行事務恢複的方法,mos事務

來源:互聯網
上載者:User

【翻譯自mos文章】當並行事務恢複進程在運行時,禁用並行事務恢複的方法,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 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


aspnet 運行錯誤:OleDbConnection 不支援並行事務

你在事務中用了兩個connection,就會這樣,
解決方案:用一個了,
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: