解析oracle锁定选择和锁查询的方法
解析oracle锁定选择和锁查询的方法一、oracle选择锁定方法
复制代码代码如下所示:
创建表测试(一个数字,B个数);
插入测试值(1,2);
插入测试值(3,4);
插入测试值(8,9);
承诺;
第1课模拟选择一号
选择测试,其中a = 1 *用于更新跳过锁定;
B
雇佣
十二
会话2选择a=1
从测试中跳过一个更新跳过锁定= 1;
未选中的线
第3课全表选择
选择跳过跳过的测试;
B
雇佣
三十四
八十九
SQL >
两。查询用户,操作表并导致锁机
复制代码代码如下所示:
选择s.username,
解码(l.type,'tm }}锁,
发送,'row锁,
lock_level空),
O.owner,o.object_name,o.object_type,
S.sid,s.serial #,s.terminal,机,计划s.osuser
从V $ SESSION,V $锁L,all_objects O
在l.sid = s.sid
和l.id1 = o.object_id(+)
和s.username不空
三,检查锁定的表和锁定表的会话ID。
选择a.session_id,B * V locked_object美元,all_objects B
在a.object_id = b.object_id
四,找出相应的SQL语句
复制代码代码如下所示:
选择vs.sql_text,vsess.sid,vsess。串行#,vsess.machine,vsess.osuser
vsess.terminal,vsess.program,vs.cpu_time,vs.disk_reads
从V$SQL VS V $ SESSION vsess
在vs.address = vsess.sql_address
和vsess。SID =(发现上面的会话ID)
五,
1。检查哪个进程被锁定
看了看V db_object_cache美元:
用户和锁!= 0为SELECT * FROM V db_object_cache美元,业主=过程;
2。检查哪个SID,SID可以知道哪个会话。是
查找v访问视图:
SELECT * FROM v$访问业主=教学的用户名称=检查名称的过程;
三.检查了希德和串行#
查找v $会话视图:
选择SID,串行#,含量从V $ SESSION在SID =检查出席
查找v $进程视图:
选择的过程,从五SPID美元地址=检查的含量;
4。过程中杀害
(1)。首先杀死Oracle进程:
改变系统杀死会话发现希德,发现串行#;
(2)。进一步杀死操作系统进程:
杀死9只发现SPID
或
orakill刚刚发现刚刚看了SID SPID
六。查找最昂贵的SQL
复制代码代码如下所示:
CPU
选择b.sql_text,
a.buffer_gets,
a.executions,
a.buffer_gets /解码(a.executions,0, 1,a.executions),
c.username
从V sqlarea一美元,
V sqltext_with_newlines美元B,
dba_users C
在a.parsing_user_id = c.user_id
和a.address = b.address
通过a.buffer_gets倒序,b.piece
复制代码代码如下所示:
- IO
选择b.sql_text,
a.disk_reads,
a.executions,
a.disk_reads /解码(a.executions,0, 1,a.executions),
c.username
从V sqlarea一美元,
V sqltext_with_newlines美元B,
dba_users C
在a.parsing_user_id = c.user_id
和a.address = b.address
通过a.disk_reads倒序,b.piece
复制代码代码如下所示:
选择s.sid,看重CPU使用
从V sesstat美元,美元statname N V
在s.statistic # =国统计#和n.name = 'cpu该会话使用的
和品位>0
2倒序;