印象中oracle是支援4種標準的隔離級別的,但是今天在測試中,發現oracle只支援讀提交和序列化2個隔離級別,汗!!
sql> alter session set isolation_level =read uncommitted;
alter session set isolation_level =read uncommitted
* 第 1 行出現錯誤:
ora-02183: 有效選項: isolation_level
預設情況下oracle是非自動提交的。
sql> show autocommit;
autocommit off
可以設定autocommit on開啟自動提交。
在非預設提交下,一些情況下可以導致隱式提交。
session a;
sql> insert into test values(22);
已建立 1 行。
sql> grant select on test to public;
授權成功。
sessionb
sql> select * from test;
22
12
在b會話中看到了a中插入的值,另外a在insert後,exit會話後,也是隱式提交的。但是如果a是insert後,直接關閉了cmd視窗,那麼這個記錄是沒有提交的。
一些隱式提交的條件,這些隱式提交的命令要與dml操作在乙個session中執行。
隱式提交:用sql命令間接完成的提交為隱式提交。這些命令是:alter,audit,comment,connect,create,disconnect,drop,exit,grant,noaudit,quit,revoke,rename。
Oracle中的事務隔離級別
在oracle中,讀取操作不會阻礙更新操作,更新操作也不會阻礙讀取操作,這樣在oracle中的各種隔離級別下,讀取操作都不會等待更新事務結束,更新操作也不會因為另乙個事務中的讀取操作而發生等待,這也是oracle事務處理的乙個優勢所在。oracle支援read committed和serializa...
Oracle 事務隔離級別
先看一張concepts中關於事務隔離級別的一張 從上圖可以看到 通常事務的隔離級別定義為以下4種 基於3種在併發事務中需要避免的現象來劃分的 1.read uncommitted 從字面意義可以看出,讀取那些未提交的資料。事務1在事務進行過程中,會讀到事務2修改了但是沒有提交的資料,所以產生了 髒...
Oracle事務隔離級別
髒讀 dirty read 當乙個事務讀取另乙個事務尚未提交的修改時,產生髒讀。不可重複讀 nonrepeatable read 同一查詢在同一事務中多次進行,在此期間,由於其他事務提交了對資料的修改或刪除,每次返回不同的結果。幻讀 phantom read 同一查詢在同一事務中多次進行,由於其他提...