用戶需要3分鐘),但是user1卻在這3分鐘內(nèi)提交了。那會(huì)有什么影響?這時(shí)候如何保證讀寫的一致性?此時(shí)DBMS要保證有足夠的撤銷表空間來存儲(chǔ)修改前的值,以保證user2讀取的數(shù)據(jù)與修改前一致,然后下次再讀取更新后的數(shù)據(jù)。
Ora-01555快照太舊,因?yàn)槌蜂N空間不夠大,一些撤銷數(shù)據(jù)被覆蓋,所以用戶可以修改前無法獲取數(shù)據(jù)。
撤消數(shù)據(jù)分為三種類型:
主動(dòng)撤銷:未提交事務(wù)的撤銷數(shù)據(jù)永遠(yuǎn)不會(huì)被覆蓋,用于回滾回滾事務(wù)。
過期撤消:撤消已提交事務(wù)的數(shù)據(jù),該數(shù)據(jù)可以被覆蓋。
未到期撤銷:交易已經(jīng)提交,但是在交易提交之前,有一些查詢正在進(jìn)行,它想讀取提交之前的數(shù)據(jù),也就是未到期的數(shù)據(jù)。如果這部分撤消數(shù)據(jù)被覆蓋,將出現(xiàn)ora-01555錯(cuò)誤。
一種解決方案是指定還原表空間參數(shù)
不能刪除System/sysaux/undo表空間;
您應(yīng)該確定哪些表格是有用的,例如table_namelikeW%等。
篩選出包含數(shù)據(jù)的表空間,例如selecttablespace_namefromDBA_tables,其中table_namelikew%groupbytablespace_nameorderby1。
記下不在步驟1和3中的表空間名稱;
識(shí)別無用的數(shù)據(jù)文件,比如selectfile_name,tablespace_namefromDBA_data_fileswheretablespace_namein()。
首先使數(shù)據(jù)文件脫機(jī),然后刪除它。你我們結(jié)束了。