一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Oracle 回滾段undo

 行者花雕 2022-03-03

Undo的作用

  • 數(shù)據(jù)的回滾
  • 一致性讀
  • 表的閃回(事務(wù),查詢的閃回..)
  • 失敗會話的恢復(fù)

回滾rollback操作

SQL> archive log list;
ORA-01031: 權(quán)限不足
SQL> conn /as sysdba
已連接。
SQL> archive log list;
數(shù)據(jù)庫日志模式            存檔模式
自動存檔             啟用
存檔終點            USE_DB_RECOVERY_FILE_DEST
最早的聯(lián)機(jī)日志序列     45
下一個存檔日志序列   47
當(dāng)前日志序列           47
SQL> create table t1(id int);

表已創(chuàng)建。

SQL> select * from t1;

未選定行

SQL> insert into t1 values('1');

已創(chuàng)建 1 行。

SQL> insert into t1 values('2');

已創(chuàng)建 1 行。

SQL> rollback;

回退已完成。

SQL> select * from t1;

未選定行

SQL> desc t1;
 名稱                                      是否為空? 類型
 ----------------------------------------- -------- ----------------------------

 ID                                                 NUMBER(38)

SQL> select * from t1;

未選定行

SQL> insert into t1 values(1);

已創(chuàng)建 1 行。

SQL> insert into t1 values(2);

已創(chuàng)建 1 行。

SQL> select * from t1;

        ID
----------
         1
         2

SQL> rollback;

回退已完成。

SQL> select * from t1;

未選定行

SQL> archive log list;
數(shù)據(jù)庫日志模式            存檔模式
自動存檔             啟用
存檔終點            USE_DB_RECOVERY_FILE_DEST
最早的聯(lián)機(jī)日志序列     45
下一個存檔日志序列   47
當(dāng)前日志序列           47
SQL> shutdown immediate;
數(shù)據(jù)庫已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount;
ORACLE 例程已經(jīng)啟動。

Total System Global Area 3307048960 bytes
Fixed Size                  2180264 bytes
Variable Size            1828719448 bytes
Database Buffers         1459617792 bytes
Redo Buffers               16531456 bytes
數(shù)據(jù)庫裝載完畢。
SQL> alter database noarchivelog;
alter database noarchivelog
*
第 1 行出現(xiàn)錯誤:
ORA-38774: 無法禁用介質(zhì)恢復(fù) - 閃回數(shù)據(jù)庫已啟用


SQL> alter database flashback off;

數(shù)據(jù)庫已更改。

SQL>
SQL> alter database noarchivelog;

數(shù)據(jù)庫已更改。

SQL> alter database open;

數(shù)據(jù)庫已更改。

SQL> archive log list;
數(shù)據(jù)庫日志模式             非存檔模式
自動存檔             禁用
存檔終點            USE_DB_RECOVERY_FILE_DEST
最早的聯(lián)機(jī)日志序列     45
當(dāng)前日志序列           47
SQL> select * from t1;

未選定行

SQL> insert into t1 values(1);

已創(chuàng)建 1 行。

SQL> insert into t1 values(2);

已創(chuàng)建 1 行。

SQL> select * from t1;

        ID
----------
         1
         2

SQL> rollback;

回退已完成。

SQL> select * from t1;

未選定行

SQL> insert into t1 values(1);

已創(chuàng)建 1 行。

SQL> insert into t1 values(2);

已創(chuàng)建 1 行。

SQL> commit;

提交完成。

SQL> rollback;

回退已完成。

SQL> select * from t1;

        ID
----------
         1
         2

可見rollback操作和當(dāng)前數(shù)據(jù)庫 歸檔模式并沒有關(guān)系,只和commit操作有關(guān),一旦commit就無法回滾。

如果沒有指定 rollback 到哪一個保存點savepoint上,就意味著全部Rollback,而不是只是rollback一條操作。

關(guān)于savepoint的操作見下面的命令:

SQL> drop table t1;

表已刪除。

SQL> select * from t1;
select * from t1
              *
第 1 行出現(xiàn)錯誤:
ORA-00942: 表或視圖不存在


SQL> create table t1(id int);

表已創(chuàng)建。

SQL> insert into t1 values(1);

已創(chuàng)建 1 行。

SQL> savepoint s1;

保存點已創(chuàng)建。

SQL> insert into t1 values(2);

已創(chuàng)建 1 行。

SQL> insert into t1 values(3);

已創(chuàng)建 1 行。

SQL> rollback to s1;

回退已完成。

SQL> select * from t1;

        ID
----------
         1

雖然可以rollback到保存點,但是一旦commit,所有的保存點就都沒用了。

undo的邏輯結(jié)構(gòu)

回滾段的空間是可以循環(huán)利用的,就像是分塊的圓盤,這個圓盤可以增加塊,也可以回收塊。

undo的空間使用機(jī)制-增長

如圖中所示,塊4填滿后需要繼續(xù)向前填充,雖然塊2是inactive的,但是中間隔著一個active的塊1,所以不能向前覆蓋。這個時候空間就必須要增長了,則會加入新的塊5,然后就可以繼續(xù)向塊5中寫入undo信息。

undo的空間使用機(jī)制-回收

當(dāng)塊4塊5塊6連續(xù)并且都是inactive的時候,此時空間回收機(jī)制,可以將這幾個塊合并成單獨的塊,塊6。

一致性讀

回滾段解決了寫操作不會阻塞讀操作的問題。

一致性讀并非總要去讀回滾段。

實現(xiàn)的一致性讀產(chǎn)生的代價——ORA-01555

ORA-01555: "snapshot too old: rollback segment number string with name "string" too small"

Cause: rollback records needed by a reader for consistent read are overwritten by other writers;

Action: if in Automatic Undo Management mode, increase undo_retention setting.otherwise,use larger rollback segments.

快照太久,回滾段太小,回滾記錄被覆蓋

具體可以參見:ORA-01555 原因與解決

自動管理Undo-AUM

Automatic Undo Management

查看undo配置信息:

SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

Undo配置參數(shù)含義

-DNDO_MANAGEMENT undo的管理模式,分自動和手動

-UNDO_TABLESPACE 當(dāng)前正在被使用的undo表

-UNDO_RETENTION 規(guī)定多長時間內(nèi),數(shù)據(jù)不能被覆蓋。

-----------------------------------------

AUTO 表示undo 為自動管理模式。

900 表示在900秒內(nèi),undo上的數(shù)據(jù)不能被覆蓋。

UNDOTBS1 是當(dāng)前正在使用的undo表空間。

注意:undo_retention是一個動態(tài)調(diào)整的參數(shù),同時,Oracle無法保證在這個保留時間內(nèi)的undo數(shù)據(jù)不被覆蓋,當(dāng)undo空間不足時,Oracle將覆蓋即使未過保留期的數(shù)據(jù)以釋放空間。

強(qiáng)制保留undo_retention時間內(nèi)的數(shù)據(jù)

  • 設(shè)置undo tablespace guarantee屬性
  • 設(shè)置該屬性之后也可以取消
SQL> alter tablespace undotbs1 retention guarantee;

表空間已更改。

SQL> alter tablespace undotbs1 retention noguarantee;

表空間已更改。

Undo調(diào)優(yōu)

Undo的設(shè)置取決于我們實際的生產(chǎn)系統(tǒng)。如何設(shè)置undo更合理地為我們工作呢?

Undo表空間的大小

  我們在創(chuàng)建一個undo表空間的使用,就指定了它的大小,這個大小一旦創(chuàng)建是不可變更的。設(shè)置過大,是一種浪費,設(shè)置過小,例如刪除100萬條記錄,這些刪除的記錄都要臨時存放到undo表空間中,如果undo的大小不能存儲100萬條記錄,那么就會出問題。

Undo數(shù)據(jù)的存放時間

  也就是undo_retention 參數(shù)所對應(yīng)的時間,undo上有數(shù)據(jù)存放時間與undo大小的密切關(guān)系。存放時間越長,需要的表空間越大。就像理發(fā)師的數(shù)量與理發(fā)師的效率的關(guān)系一樣。理發(fā)師效率很高,一秒鐘解決一個客戶,那么就不需要太多的理發(fā)師傅。

Undo表空間的歷史信息

如何合理設(shè)置undo表空間的大小和存放時間呢?那么就需要參考?xì)v史記錄

關(guān)于如何設(shè)置undo表空間的大小可以參見:

【技術(shù)分享】如何確定或調(diào)整undo表空間的大小

關(guān)于如何設(shè)置undo表空間的存放時間可以參見:

undo_retention:確定最優(yōu)的撤銷保留時間

參考資料:oracle undo 解析


記得幫我點贊哦!

精心整理了計算機(jī)各個方向的從入門、進(jìn)階、實戰(zhàn)的視頻課程和電子書,按照目錄合理分類,總能找到你需要的學(xué)習(xí)資料,還在等什么?快去關(guān)注下載吧?。?!

resource-introduce

念念不忘,必有回響,小伙伴們幫我點個贊吧,非常感謝。

我是職場亮哥,YY高級軟件工程師、四年工作經(jīng)驗,拒絕咸魚爭當(dāng)龍頭的斜杠程序員。

聽我說,進(jìn)步多,程序人生一把梭

如果有幸能幫到你,請幫我點個【贊】,給個關(guān)注,如果能順帶評論給個鼓勵,將不勝感激。

職場亮哥文章列表:更多文章

wechat-platform-guide-attention

本人所有文章、回答都與版權(quán)保護(hù)平臺有合作,著作權(quán)歸職場亮哥所有,未經(jīng)授權(quán),轉(zhuǎn)載必究!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲熟女熟妇乱色一区| 日韩国产亚洲一区二区三区| 成人精品亚洲欧美日韩| 精品国自产拍天天青青草原| 国产免费成人激情视频| 美女黄片大全在线观看| 色婷婷视频免费在线观看| 欧美日韩在线观看自拍| 亚洲国产综合久久天堂| 国产精品午夜一区二区三区| 一区二区三区精品人妻| 成人三级视频在线观看不卡| 欧美黑人在线精品极品| 69久久精品亚洲一区二区| 日韩av欧美中文字幕| 中文字幕在线五月婷婷| 国产爆操白丝美女在线观看| 加勒比系列一区二区在线观看| 久热这里只有精品九九| 日本中文在线不卡视频| 很黄很污在线免费观看| 欧美日韩国产午夜福利| 都市激情小说在线一区二区三区| 欧美日韩国产精品黄片| 欧美日韩在线第一页日韩| 加勒比人妻精品一区二区| 日韩精品一级一区二区| 亚洲中文字幕三区四区| 日韩色婷婷综合在线观看| 国内尹人香蕉综合在线| 五月婷婷六月丁香狠狠| 国产精品成人一区二区三区夜夜夜| 高清一区二区三区不卡免费| 国产高清三级视频在线观看| 大香蕉伊人精品在线观看| 欧美日韩乱码一区二区三区| 五月婷婷缴情七月丁香| 久久亚洲国产视频三级黄 | 中文字幕亚洲精品人妻| 亚洲视频一级二级三级| 视频一区二区三区自拍偷|