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

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;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值