oracle提交事務詳細步驟入如下:
1、使用者通過sqlplus啟動使用者程序,使用oracle net services通過3層或n層基於web的客戶機請求傳送給伺服器。
2、伺服器接收到客戶連線請求後,首先判斷該使用者連線的合法性,如果合法,則建立相應的伺服器程序(注:如果為專用伺服器配置,則為該使用者程序建立專用的伺服器程序,只為該使用者程序服務,該使用者連線斷開後釋放;如果為共享伺服器配置,則為該使用者程序指定乙個共享伺服器程序;如果為資料庫駐留連線池,也為該使用者程序指定乙個伺服器程序。)
3、使用者程序傳送請求的sql語句或者pl/sql**塊給伺服器。
4、伺服器程序接收到使用者請求後,判斷該使用者是否有執行該sql**的許可權,具體演算法為:伺服器程序到資料字典快取記憶體內,檢查是否有該使用者的相關許可權資訊,如果找不到,則到磁碟資料字典內檢索(注:檢索資料字典是很消耗資源的)。然後伺服器程序根據找到的使用者許可權資訊,判斷使用者是否有執行該sql**的許可權,如果有許可權,則執行下一步;如果沒有許可權,則拒絕使用者請求。
5、伺服器程序對使用者請求sql**進行分析,分析的具體演算法為:伺服器程序到庫快取記憶體內,檢索是否有該已經分析過的與請求sql**相同的**,如果有,則直接使用庫快取記憶體內的已經分析過的sql**(軟分析);如果沒有,則只能對該sql**進行分析(硬分析,這很消耗資源的);
6、伺服器程序到結果快取記憶體內,檢索是否有該sql**已經執行過的結果,如果有,則直接使用該結果;如果沒有,則執行該sql**;
7、oracle在該使用者會話的pga內,分配私有sql區域,用於該sql**的執行。
8、伺服器程序到資料高速緩衝區內,檢索是否有執行該sql**必需的相關資料,如果沒有,則到磁碟資料檔案內檢索,找到之後,載入到資料高速緩衝區內;
9、oracle為表內必需的資料新增行鎖,防止其他使用者修改該行資料;
10、伺服器程序對資料高速緩衝區內的相關資料進行更改,修改完之後,標識為臟資料,並且寫到重演日誌快取內;
11、使用者程序提交該事務,並且由oracle釋放行鎖;
12、lgwr(日誌寫入器)立即將重演日誌快取內的更改資料寫入聯機重做日誌檔案組內(多路復用寫多個日誌檔案組,防止日誌檔案損壞);
13、dbwn(資料庫寫入器)在被觸發時,批量將資料高速緩衝區內的髒資料寫入資料檔案內。
14、ckpt(檢查點)將相關資訊寫入控制檔案(v$controlfile內儲存有控制檔案相關資訊),並且更新所有資料檔案的頭部資訊;
15、使用者程序斷開連線,則oracle伺服器釋放伺服器程序;
檢視未提交的事物
檢視未提交的事物 select rpad oracle username,10 o name,session id sid,os user name,decode locked mode,0,none 1,null 2,row share 3,row exclusive 4,share 5,shar...
Thinkphp事物提交的幾個測試
情況一 在兩個不同的方法中例項化model,在model1中開始事物,然後在乙個model中提交。情況二 在兩個不同的方法中例項化model,在model1中開始事物,然後在乙個model中回滾。情況三 在兩個不同的方法中例項化model,都開啟事物,然後在乙個model中提交。情況四 在兩個不同的...
spring事物的提交與回滾
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 註解方式宣告事務,該事務宣告的範圍是service中的方法,而一般的事務宣告時不是宣告在 業務邏輯方法上的,...