oracle锁相关
来源:互联网 发布:零基础网络美术培训班 编辑:程序博客网 时间:2024/06/14 16:48
--锁查询
select *
from v$lock
where sid in
(
select sid
from v$lock
where id1 in (select object_id
from dba_objects
where object_name = upper('&object_name')))
ORDER BY SID, TYPE;
select *
from v$active_session_history
where session_id = &sid
order by sample_time desc;
--DDL LOCK
select distinct 'alter system kill session' || '''' || s.sid || ',' ||
s.serial# || '''' || ';',
dl.name object_name,
dl.type object_type,
s.username,
s.osuser,
s.machine,
s.program,
s.action,
s.logon_time,
s.blocking_session_status,
s.blocking_session,
s.event,
s.wait_class,
l.TYPE lock_type,
l.LMODE lock_mode,
q.sql_text
from v$session s
left join v$sql q on s.sql_hash_value = q.hash_value,
dba_ddl_locks dl left join v$lock l on dl.session_id=l.sid
where s.sid=dl.session_id
and dl.name = upper('&object_name');
--DML LOCK
select distinct 'alter system kill session' || '''' || s.sid || ',' ||
s.serial# || '''' || ';',
dl.name object_name,
dl.mode_held,
dl.blocking_others,
s.username,
s.osuser,
s.machine,
s.program,
s.action,
s.logon_time,
s.blocking_session_status,
s.blocking_session,
s.event,
s.wait_class,
l.TYPE lock_type,
l.LMODE lock_mode,
q.sql_text
from v$session s
left join v$sql q on s.sql_hash_value = q.hash_value,
dba_dml_locks dl left join v$lock l on dl.session_id=l.sid
where s.sid=dl.session_id
and dl.name = upper('&object_name');
知识点:
v$lock中的常用列有以下列:
sid:持有锁的会话SID,通常与v$session关联。
type:锁的类型,其中TM表示表锁或DML锁,TX表示行锁或事务锁,UL表示用户锁。
我们主要关注TX和TM两种型的锁,其它均为系统锁,会很快自动释放,不用关注。
当 Oracle执行 DML 语句时,系统自动在所要操作的表上申请 TM 类型的锁。
当 TM锁获得后,系统再自动申请 TX 类型的锁,并将实际锁定的数据行的锁标志位进行置位。
TM 锁包括了SS 、 SX、 S 、X 等多种模式,在数据库中用 0 -6 来表示。不同的 SQL 操作产生不同类型的 TM锁。
lmode:会话保持的锁的模式。
0=None;
1=Null ;
2=Row-S (SS,行级共享锁,其他对象只能查询这些数据行),sql操作有select for update、lock for update、lock row share;
3=Row-X (SX,行级排它锁,在提交前不允许做DML操作),sql操作有insert、update、delete、lock row share;
4=Share(共享锁),sql操作有create index、lock share;
5=S/Row-X (SSX,共享行级排它锁),sql操作有lock share row exclusive;
6=Exclusive(排它锁),alter table、drop table、drop index、truncate table、look exclusive等DDL
ID1,ID2: ID1,ID2的取值含义根据type的取值而有所不同,对于TM 锁ID1表示被锁定表的object_id 可以和dba_objects视图关联取得具体表信息,ID2 值为0;
对于TX 锁ID1以十进制数值表示该事务所占用的回滚段号和事务槽slot number号,
其组形式: 0xRRRRSSSS,RRRR=RBS/UNDO NUMBER,SSSS=SLOT NUMBER,ID2 以十进制数值表示环绕wrap的次数,即事务槽被重用的次数。
实际上这两个字段构成了事务在回滚段中的位置。
- Oracle锁、事务相关
- oracle锁相关问题
- oracle锁相关
- Oracle锁的相关脚本
- Oracle相关
- Oracle 相关
- oracle 相关
- oracle相关
- oracle 相关
- oracle 相关
- oracle 相关
- Oracle相关
- ORACLE 相关
- oracle 相关
- oracle相关
- oracle 相关
- oracle 相关
- oracle相关
- 消息队列实现通信
- 清除行列
- 【JavaScript】 Object.defineProperty
- 如何在/etc/apt/sources.list添加新内容
- windows学习历程-IPC之共享内存
- oracle锁相关
- 整数排序II-lintcode
- 算法 最优合并问题
- JDK和JRE的区别
- Spring DI(依赖注入)
- empty()函数应用中遇到的问题
- Java访问目录与文件的相关方法
- 渗透学校某系统
- mysql配置远程连接