著名的ORA-1555:snapshot too old
我們進行大查詢時,可能會出現ORA-1555:snapshot too old
錯誤,Oracle提示的錯誤原因是回滾段太小(
rollback segment number string with name "string" too
small
),而實際上無論怎麼設定回滾段,都有可能出現這個問題。
一個
事務
執行時 ,Oracle會檢查所有的行,確認這些資料從
事務
啟動的那個時間點開始沒有發生變化。如果要訪問的資料發生的變化,那麼Oracle會到回滾段中去查詢那個時間點的資料。若使資料發生變化的事務沒有被提交,則資料會一直在回滾段中存在,此時不會產生ORA-1555錯誤;若事務被提交,那麼回滾段就有可能被其他事務覆蓋,碰到這種情況,Oracle
無法透過UNDO中的記錄
完成讀取一致性查詢
,因此報ORA-1555。即
執行大查詢時,訪問的資料已發生變化,但未提交--->去undo中的回滾段查詢那個時間點的資料--->查詢尚未結束前,變化資料被提交,此時回滾段允許被覆蓋--->查詢仍為結束,回滾段被其他事務覆蓋--->Oracle無法完成一致性讀,產生ORA-1555錯誤。
無論系統有多大的回滾段,提交過的事
務相關的
回滾段都有可能被覆蓋。當然,回滾段越大,被覆蓋的機會越小,但機率小不等於不發生。針對這個問題,我們只能儘量去避免。
1. 在業務允許的範圍內,調整大事務的執行時間,使之能夠在其他事務較少時執行,或者把大事務分解成多個小事務。
2. 確保所有回滾段線上。回滾段越多,回滾資訊被覆蓋的機率越小。
3. 確保所有回滾段的擴充套件屬性大小相同。較小的、容易發生迴轉的回滾段更易導致ORA-1555。
4. 設定
UNDO_RETENTION引數
UNDO_RETENTION
引數是UNDO資訊在UNDO表空間的保留時間,單位是秒。理論是來說,在保留時間內,回滾段是不會被覆蓋的,但如果UNDO表空間容量不夠大,
UNDO_RETENTION
範圍內的UNDO資料也有可能被覆蓋(若開啟了“保證
”模式,當UNDO表空間不足以支撐
UNDO_RETENTION的需要,Oracle
會
報UNDO表空間不足
)
。
總的來說,
UNDO_RETENTION引數可以解決大部分ORA-1555問題,前提是
有足夠的UNDO表空間與之匹配。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29674916/viewspace-2786709/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 觸發器 REFERENCING OLD AS OLD觸發器
- windows.old可以刪除嗎?windows.old檔案的刪除方法Windows
- snapshot原始碼原始碼
- Maven 快照(SNAPSHOT)Maven
- win10如何刪除windows.old_win10刪除windows.old的方法Win10Windows
- PG 中返回update 前的值 :old
- [Vue Unit tesitng] SnapshotVue
- 1.3.2.1.2.2 Snapshot Copy PDBs
- snapshot應用場景
- 9個著名的管理法則
- 著名的斐波那契數列
- win10 如何刪除windows old win10怎麼刪除windows.oldWin10Windows
- data too long for column
- Convert a Physical Standby Database into a Snapshot Standby DatabaseDatabase
- 【故障】workstation-001-snapshot失敗
- win10如何刪除更新 old_win10系統更新後怎麼刪除windows.oldWin10Windows
- [20230425]注意snapshot standby與activate standby的區別.txt
- 選單欄美化的好幫手Boring Old Menu Bar for MacMac
- 關於Argument list too long的問題
- zookeeper 清理snapshot及事務日誌
- [20231103]sqlplus column new_value old_value.txtSQL
- [20230303]sqlplus column new_value old_value.txtSQL
- MySQL ERROR 1040: Too many connectionsMySqlError
- 解決 Too many symbol filesSymbol
- jspDemo-1.0-SNAPSHOT.war not found for the web module.JSWeb
- 在Vue專案中使用snapshot測試Vue
- Oracle 11.2.0.4 physical dataguard和snapshot dataguard切換Oracle
- [20180423]表空間閃回與snapshot standby
- PostgreSQL-14版本snapshot的幾點最佳化SQL
- [轉帖]資料庫的快照隔離級別(Snapshot Isolation)資料庫
- Boring Old Menu Bar for Mac(選單欄美化工具)Mac
- mysql specified key was too long與Index column size too large. The maximum column size is 767 bytes.MySqlIndex
- 幾種著名的戰略思想設計工具介紹 - Chris
- Python 計算生態中那些著名的庫-文字處理Python
- win10 ghost系統windows.old可以刪除嗎_win10系統windows.old檔案怎麼刪除Win10Windows
- Too many files with unapproved license異常APP
- Error running ‘Application’Command line is too longErrorAPP
- 為SQL Server快照snapshot DB建立login訪問SQLServer