欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle事务和锁,及闪回表举例

程序员文章站 2024-01-14 09:02:34
...

1. 事务和锁

--事务的ACID特性
--原子性:事务的各个组成部分不可分割,要么一起成功执行,要么一起不执行。
--一致性:事务的执行只能让数据库从一个正常状态转移到另一个正常状态。
  --何 200  伍 200 陈 200 状态1
  --何 100  伍 200 陈 300 状态2
  --何 200  伍 100 陈 300 状态3
  --何 100  伍 100 陈 400 状态4
--隔离性:事务1无法看到事务2未提交的结果
--持久性:事务一旦提交,无法回滚。

--DML数据操纵语言 insert update delete
--DDL数据定义语言 create alter drop等
--DCL数据操作语言 commit,rollback grant remove等

--事务有一个或者多个DML,加一个DDL或者一个DCL组成
--DML不会自动提交,所以事务没有结束
--DDL和DCL会自动提交,所以事务结束

--提交前,数据库数据没有真正发生变化
--当前事务可以看到变化后的效果,其它事务看不到
--提交后,数据库数据真正发生变化,其它事务看到新的状态

--锁
--查询不加锁
--DML加行级独占锁,表级共享锁。
--DDL操作加表独占锁。
--独占锁:加锁后不允许别的事务再加锁
--共享锁:加锁后,允许其它事务加共享锁,不允许加独占锁。
--加表级共享锁,表示该表为正在修改数据,不能对该表做DDL操作。
--有多少个事务正在修改数据,就会有多少个表共享锁。
--保证了所有数据被提交后,才能修改表的结构。

--查询加锁:改变查询不加锁的情况,在查询时手动加上锁,保证后面修改数据时查询结果没有变。
select * from stu2 for update;
--加表级共享锁
lock table stu2 in share mode;
--加表级独占锁
lock table stu2 in exclusive mode;

--死锁
--事务1占有资源1,请求资源2;同时事务2占有资源2,请求资源1



2. 闪回表

drop table stu2;
--闪回表
--在哪里
select * from user_recyclebin;
--还原
flashback table stu2 to before drop;
--清空回收站
purge recyclebin;
--直接完全删除表
drop table stu2 purge;



相关标签: oracle