您的位置:首页 > 数据库 > Oracle

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

2018-01-22 17:23 148 查看
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