oracle之事务隔离级别
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文小节了oracle中事务隔离级别。ANSI SQL标准定义了4中隔离级别:READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE隔离级别
千家信息网最后更新 2026年10月31日oracle之事务隔离级别本文小节了oracle中事务隔离级别。
ANSI SQL标准定义了4中隔离级别:
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
隔离级别允许或不允许的3种现象
Dirty read(脏读):能读到未提交的数据。
Nonrepeatable read(不可重复读):可能会出现丢失更新。
Phantom read(幻像读): 已读的数据不会改变,和以前相比,可能会有更多满足条件的数据。
ANSI隔离级别
隔离级别 脏读 不可重复读 幻像读
READ UNCOMMITTED 允许 允许 允许
READ COMMITTED 不允许 允许 允许
REPEATABLE READ 不允许 不允许 允许
SERIALIZABLE 不允许 不允许 不允许
以下部分测试例子。
1、READ UNCOMMITTED
允许脏读,不可重复读和幻像读。这里想更改隔离级别,直接报错。
SQL> SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
*
ERROR at line 1:
ORA-02179: valid options: ISOLATION LEVEL { SERIALIZABLE | READ COMMITTED }
2、READ COMMITTED
oracle的默认隔离选项。事务只能读取数据库中已经提交的数据。不允许脏读。
session 1:
SQL> conn test/test
Connected.
SQL> SET TRANSACTION
2 ISOLATION LEVEL
3 READ COMMITTED;
Transaction set.
SQL> select * from t;
X
----------
1
session 2:
SQL> conn test/test
Connected.
SQL> SET TRANSACTION
2 ISOLATION LEVEL
3 READ COMMITTED;
Transaction set.
SQL> select * from t;
X
----------
1
session 1:
SQL> update t set x=2;
1 row updated.
SQL> insert into t values (3);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
X
----------
2
3
session 2:
SQL> select * from t;
X
----------
2
3
==>验证了允许不可重复读和幻象读。
3、REPEATABLE READ
能给出一正确的结果,避免丢失更新。即不允许脏读和重复读,允许幻读。
4、SERIALIZABLE
最高程度的隔离性。即不允许脏读,不可重复读和幻读。
session 1;
SQL> select * from t;
X
----------
1
session2:
SQL> select * from t;
X
----------
1
SQL> SET TRANSACTION
2 ISOLATION LEVEL SERIALIZABLE;
Transaction set.
SQL> select * from t;
X
----------
1
session1:
SQL> insert into t values (2);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
X
----------
1
2
session 2:
SQL> select * from t;
X
----------
1
SQL> update t set x=2;
update t set x=2
*
ERROR at line 1:
ORA-08177: can't serialize access for this transaction
==》自事务后,session1又添加了一行为2记录,session2更改报错。
总结:
1.oracle只允许隔离级别更改为SERIALIZABLE和READ COMMITTED,默认为READ COMMITTED。
2.设置为最高级别的隔离选项(SERIALIZABLE)后,可能会在事务内遇到ORA-08177。
end;
ANSI SQL标准定义了4中隔离级别:
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
隔离级别允许或不允许的3种现象
Dirty read(脏读):能读到未提交的数据。
Nonrepeatable read(不可重复读):可能会出现丢失更新。
Phantom read(幻像读): 已读的数据不会改变,和以前相比,可能会有更多满足条件的数据。
ANSI隔离级别
隔离级别 脏读 不可重复读 幻像读
READ UNCOMMITTED 允许 允许 允许
READ COMMITTED 不允许 允许 允许
REPEATABLE READ 不允许 不允许 允许
SERIALIZABLE 不允许 不允许 不允许
以下部分测试例子。
1、READ UNCOMMITTED
允许脏读,不可重复读和幻像读。这里想更改隔离级别,直接报错。
SQL> SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
*
ERROR at line 1:
ORA-02179: valid options: ISOLATION LEVEL { SERIALIZABLE | READ COMMITTED }
2、READ COMMITTED
oracle的默认隔离选项。事务只能读取数据库中已经提交的数据。不允许脏读。
session 1:
SQL> conn test/test
Connected.
SQL> SET TRANSACTION
2 ISOLATION LEVEL
3 READ COMMITTED;
Transaction set.
SQL> select * from t;
X
----------
1
session 2:
SQL> conn test/test
Connected.
SQL> SET TRANSACTION
2 ISOLATION LEVEL
3 READ COMMITTED;
Transaction set.
SQL> select * from t;
X
----------
1
session 1:
SQL> update t set x=2;
1 row updated.
SQL> insert into t values (3);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
X
----------
2
3
session 2:
SQL> select * from t;
X
----------
2
3
==>验证了允许不可重复读和幻象读。
3、REPEATABLE READ
能给出一正确的结果,避免丢失更新。即不允许脏读和重复读,允许幻读。
4、SERIALIZABLE
最高程度的隔离性。即不允许脏读,不可重复读和幻读。
session 1;
SQL> select * from t;
X
----------
1
session2:
SQL> select * from t;
X
----------
1
SQL> SET TRANSACTION
2 ISOLATION LEVEL SERIALIZABLE;
Transaction set.
SQL> select * from t;
X
----------
1
session1:
SQL> insert into t values (2);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
X
----------
1
2
session 2:
SQL> select * from t;
X
----------
1
SQL> update t set x=2;
update t set x=2
*
ERROR at line 1:
ORA-08177: can't serialize access for this transaction
==》自事务后,session1又添加了一行为2记录,session2更改报错。
总结:
1.oracle只允许隔离级别更改为SERIALIZABLE和READ COMMITTED,默认为READ COMMITTED。
2.设置为最高级别的隔离选项(SERIALIZABLE)后,可能会在事务内遇到ORA-08177。
end;
隔离
级别
数据
事务
幻像
最高
更新
一行
例子
小节
幻象
数据库
更多
最高级
条件
标准
现象
程度
结果
部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网黑科技
保险科技 互联网保险
互联网科技垄断
互联网科技金融公司
齐家互联网科技
迪茉互联网科技
深圳艾佳互联网科技
科技伦理 互联网公司
恒生科技互联网指数分析
隆华科技工业互联网
小米互联网科技园设置
汽车互联网创新科技园
搜狐科技互联网
互联网媒体平台算高科技产业
互联网保险科技创业
互联网公司黑科技创始人
中和天地互联网科技有限公司
中天科技中国工业互联网
工业互联网科技创业
陕西九四连强互联网科技有限公司
圆梦互联网科技
科技信息互联网
科技创新互联网企业
互联网 视角下的科技创新
上海卓越科技 互联网
茂名市互联网科技产业园
开一家科技互联网公司需要多少钱
科技类公司包括互联网吗
互联网行业科技股
互联网科技手抄报图片