Oracle管理数据的并发
Posted 书上有路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle管理数据的并发相关的知识,希望对你有一定的参考价值。
通过Lock 管理一致性 和并发性
oracle Lock 在表上 是行级锁
Oracle SELECT 无锁
oracle DML DDL DCL 有锁
行锁 TX 事务锁
表锁 TM
锁级别 0 1 2 3 4 5 6
update employees set salary=10000 where employee_id=196;
当前hr用户 sid=36 持有如下锁 表employees TM 级别3
AAAR5VAAFAAAADPABg行 employee_id=196所在的行 TX 6
提供数据保护
在事务期间 保护表
保护行
事务完成 (commit rollback) 锁释放
SQL> select sid from v$session where username=HR;
SQL> select type ,lmode from v$lock where sid=36;
select sid,type,lmode,request,block from v$lock where sid in (36,46) and type in(TM,TX)
performance-additional monitor links--instance lock
命令 lock table employees IN 级别 Mode
2 - row-S (SS) row share
3 - row-X (SX) row exclusive
4 - share (S) share
5 - S/Row-X (SSX) row share exclusive
6 - exclusive (X) exclusive
kill session 对于无法主动结束的事务 可以考虑结束此会话,但注意没提交的事务将会回退。
1.先查找阻断其它会话的会话ID(sid)和序列号(serial#)
select sid,serial# from v$session
where sid in (select blocking_session from v$session);
2.使用alter system 中断会话
alter system kill session 46,3545 immediate;
dead lock 死锁
发生死锁 一般不需要用户主动解决,由oracle server 解决 ,发现deadlock的session会抛出一个例外 并且主动回退一个语句 将死锁就转变为普通的DML锁
Oracle数据库在对数据块进行更改时 旧数据会被保留下来
用途:rollback flashback
select employee_id ,salary from employees;
当需要访问旧数据 而旧数据又被清除
snapshot too old
保存到类型为 UNDO表空间
select tablespace_name,contents from dba_tablespaces;
create undo tablespace undotbs2 datafile +FRA size 100M;
ORACLE每一个实例仅可以使用一个UNDO表空间
undo_management=AUTO -----undo自动管理功能
undo_retention=900 --单位 为秒 (事务提交之后旧数据在UNDO表空间保留多长时间)
undo_tablespace=UNDOTBS1 ---指定UNDO表空间
select employee_id ,salary from employees as of timestamp(to_timestamp(2016-11-07 08:20:00,yyyy-mm-dd hh24:mi:ss)); (--查询一个过去的时间的数据 闪回查询)
(DML之后 旧数据已经保留在UNDO中 )
直到commit 事务结束时 开始计时 undo_retention=900
!!!! 当UNDO空间没有压力时 到时不会清除
!!!! 当UNDO空间有压力大时 未到时就会清除
!!!!确保保留时间 在UNDO表空间中设置开关guarantee
alter tablespace undotbs1 retention guarantee;
alter tablespace undotbs1 retention noguarantee;
保留确保保留时间 (在commit之后旧数据保留 undo_retention时间)
UNDO空间 指导 ---事先计算一个合适的大小
参考 事务的繁忙程度(例如 采样一周时间) 保留时间
Advisor Center--Automatic UNDO management
以上是关于Oracle管理数据的并发的主要内容,如果未能解决你的问题,请参考以下文章