關於ORACLE大型事務回滾的幾個點
在大型資料庫中,一個大型操作的失敗代價是比較高的,嚴重時甚至會引起資料庫掛起。尤其在KILL大型事務之前檢查事務究竟有多大可能是必要的,同時我們也需要知道回滾已經進行了多少程度。
V$transaction,v$session關聯得到事務大小。
Select t.used_ublk from v$transaction t
v$session s
Where t.ses_addr=s.saddr and s.sid=&sid
在事務失敗或者kill session之後,持續的監控該語句結果來估計回滾進度。如果觀察到used_ublk幾乎不動或者回滾非常慢,可以確定以下是否由於並行恢復引起(並行恢復有時會引起資料庫恢復掛起)。在並行恢復情況下,Smon將會抓住TX lock,同時應該存在某些PS lock
PX程式佔用大量的CPU資源。V$fast_start_servers和v$fast_start_transaction兩張檢視表示是否執行了並行恢復。如果發現並行恢復很慢,可以嘗試把並行恢復關掉看看是否可以加快rollback。alter system set fast_start_parallel_rollback = false
該語句關掉並行rollback
改用序列化。
同樣如果是序列化ROLLBACK,同時CPU資源尚可的話,可以採用並行恢復的方式來加快回滾。如果整體系統已經基本顯示掛住,可以shutdown資料庫起用並行rollback。並行恢復可以在v$session_wait中看到很多PX程式等待,Smon程式作為協調程式同時在等待PX程式完成。
資料庫關閉或者kill shadow process之後,在v$transaction中將不能發現事務資訊。這時候在v$fast_start_transaction中有事務資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23732248/viewspace-2987180/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於事務回滾註解@Transactional
- T-SQL——關於事務回滾的方式SQL
- 關於Mysql事務,你必須知道的幾個知識點!MySql
- sqlserver遇到回滾事務的操作策略SQLServer
- Oracle vs PostgreSQL,研發注意事項(3)- 事務回滾之UPDATE操作解析OracleSQL
- 關於MongoDB的幾點注意事項UMMongoDB
- MySQL實現事務的提交和回滾MySql
- 不能回滾的Redis事務還能用嗎Redis
- Spring事務需要注意的幾個點Spring
- oracle回滾溯源Oracle
- Spring事務不能回滾的深層次原因Spring
- MySql事務無法回滾的原因有哪些MySql
- spring事務增強,事務回滾如何判斷?希望在前端上有個提示Spring前端
- Spring Data JPA中事務回滾意外RollbackExceptionSpringException
- Oracle查詢回滾大事務所需時間Oracle
- Oracle 資料回滾Oracle
- 客戶端登陸logout操作,事務回滾客戶端Go
- openGauss 子事務併發回滾流程最佳化
- 關於使用plsql操作oracle的一點小技巧和幾個常用的查詢語句SQLOracle
- 關於LCA的幾點想法
- 需要提醒你關於 golang 中 map 使用的幾點注意事項Golang
- 關於資料庫查詢業務的幾點思考資料庫
- 關於MES業務系統解耦的幾點思考解耦
- 命令(XA ROLLBACK) 讓儲存叢集回滾GT 的事務分支
- 關於使用plsql操作oracle的一點小技巧和幾個常用的查詢語句BUSQLOracle
- 最近關於工作的幾點思考
- 關於 Flex 的那點事兒Flex
- SAP MM 對於MRKO事務程式碼的幾點優化建議優化
- JS 總結之關於 this 應該知道的幾個點JS
- 利用oracle的日誌挖掘實現回滾Oracle
- 關於 MySQL 的巢狀事務MySql巢狀
- 關於分散式事務的理解分散式
- webpack 拆包:關於 splitChunks 的幾個重點屬性解析Web
- 關於CORS 應該注意的幾點CORS
- 為什麼catch了異常,但事務還是回滾了?
- 日常Bug排查-應用Commit報錯事務並沒有回滾MIT
- js關於物件那點事JS物件
- 【UNDO】Oracle系統回滾段說明Oracle