歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux操作系統服務器上進行安全配置

Linux操作系統服務器上進行安全配置

日期:2017/2/25 10:37:01   编辑:Linux教程

Linux操作系統服務器上進行安全配置

什麼是REDO

REDO記錄transaction logs,分為online和archived。以恢復為目的。

比如,機器停電,那麼在重起之後需要online redo logs去恢復系統到失敗點。

比如,磁盤壞了,需要用archived redo logs和online redo logs區恢復數據。

比如,truncate一個表或其他的操作,想恢復到之前的狀態,同樣也需要。

什麼是UNDO

REDO 是為了重新實現你的操作,而UNDO相反,是為了撤銷你做的操作,比如你得一個TRANSACTION執行失敗了或你自己後悔了,則需要用 ROLLBACK命令回退到操作之前。回滾是在邏輯層面實現而不是物理層面,因為在一個多用戶系統中,數據結構,blocks等都在時時變化,比如我們 INSERT一個數據,表的空間不夠,擴展了一個新的EXTENT,我們的數據保存在這新的EXTENT裡,其它用戶隨後也在這EXTENT裡插入了數據,而此時我想ROLLBACK,那麼顯然物理上講這EXTENT撤銷是不可能的,因為這麼做會影響其他用戶的操作。所以,ROLLBACK是邏輯上回滾,比如對INSERT來說,那麼ROLLBACK就是DELETE了。

COMMIT 以前,常想當然地認為,一個大的TRANSACTION(比如大批量地INSERT數據)的COMMIT會花費時間比短的TRANSACTION長。而事實上是沒有什麼區別的,

因為ORACLE在COMMIT之前已經把該寫的東西寫到DISK中了,

我們COMMIT只是

1,產生一個SCN給我們TRANSACTION,SCN簡單理解就是給TRANSACTION排隊,以便恢復和保持一致性。

2,REDO寫REDO到DISK中(LGWR,這就是log file sync),記錄SCN在ONLINE REDO LOG,當這一步發生時,我們可以說事實上已經提交了,這個TRANSACTION已經結束(在V$TRANSACTION裡消失了)

3,SESSION所擁有的LOCK(V$LOCK)被釋放。

4,Block Cleanout(這個問題是產生ORA-01555: snapshot too old的根本原因) ROLLBACK ROLLBACK和COMMIT正好相反,ROLLBACK的時間和TRANSACTION的大小有直接關系。因為ROLLBACK必須物理上恢復數據。 COMMIT之所以快,是因為ORACLE在COMMIT之前已經作了很多工作(產生UNDO,修改BLOCK,REDO,LATCH分配), ROLLBACK慢也是基於相同的原因。

Copyright © Linux教程網 All Rights Reserved