oracle中的事務隔離級別

2021-07-31 20:23:44 字數 884 閱讀 8102

印象中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 同一查詢在同一事務中多次進行,由於其他提...