關於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
- ORACLE 死事務的回滾Oracle
- 關於Spring事務回滾的問題Spring
- T-SQL——關於事務回滾的方式SQL
- oracle檢視回滾的事務Oracle
- 關於Mysql事務,你必須知道的幾個知識點!MySql
- JDBC 事務(二)回滾到儲存點JDBC
- SQL Server 事務及回滾事務SQLServer
- java 事務提交/回滾Java
- zt_Oracle事務rollback回滾時間估算Oracle
- 關於oracle例項恢復的前滾和回滾的理解Oracle
- sqlserver遇到回滾事務的操作策略SQLServer
- Spring事務回滾情況Spring
- 不能回滾的Redis事務還能用嗎Redis
- MySQL實現事務的提交和回滾MySql
- DBUNITS的單元測試事務回滾
- WebForm中C#事務回滾的例子WebORMC#
- 關於MongoDB的幾點注意事項UMMongoDB
- MySql事務無法回滾的原因有哪些MySql
- long長事務回滾的模擬與定位
- Oracle vs PostgreSQL,研發注意事項(3)- 事務回滾之UPDATE操作解析OracleSQL
- 關於Oracle baseline的幾點Oracle
- Spring事務需要注意的幾個點Spring
- spring事務增強,事務回滾如何判斷?希望在前端上有個提示Spring前端
- 關於前滾(roll forward)和回滾(roll back)Forward
- Spring事務不能回滾的深層次原因Spring
- 在SQL SERVER中實現事務的部分回滾SQLServer
- Spring Transaction詳解 – 手動回滾事務Spring
- Spring Data JPA中事務回滾意外RollbackExceptionSpringException
- 關於redo的幾個小知識點
- oracle前滾和回滾Oracle
- ORACLE 前滾和回滾Oracle
- postgresql與oracle關於事務定義的描述SQLOracle
- 關於非同步任務設計的幾點思考非同步
- 使用FLASHBACK_TRANSACTION_QUERY查詢回滾事務SQLSQL
- oracle回滾溯源Oracle
- ORACLE回滾段Oracle
- Oracle查詢回滾大事務所需時間Oracle