欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

insert一条话语产生两个锁

更新时间: 2014-01-05 02:10:38 责任编辑: Author_N1

 

INSERT一条语句产生两个锁
CREATE TABLE divisions (
  division_id CHAR(3) CONSTRAINT divisions_pk PRIMARY KEY,
  name VARCHAR2(15) NOT NULL
);
CREATE TABLE jobs (
  job_id CHAR(3) CONSTRAINT jobs_pk PRIMARY KEY,
  name VARCHAR2(20) NOT NULL
);
CREATE TABLE employees2 (
  employee_id INTEGER CONSTRAINT employees2_pk PRIMARY KEY,
  division_id CHAR(3)
    CONSTRAINT employees2_fk_divisions
    REFERENCES divisions(division_id),
  job_id CHAR(3) REFERENCES jobs(job_id),
  first_name VARCHAR2(10) NOT NULL,
  last_name VARCHAR2(10) NOT NULL,
  salary NUMBER(6, 0)
);

我在sqlplus中执行一些INSERT INTO操作,但网络连接中断了,没有commit或rollback。

之后再次sqlplus执行相同的INSERT INTO语句时就hang了,查看锁表的语句:
INSERT INTO divisions (   division_id, name ) VALUES (   'SAL', 'Sales' )
这个就是所有这些INSERT INTO的第一条语句。

使用
SELECT A.USERNAME,
         A.MACHINE,
         A.PROGRAM,
         A.SID,
         A.SERIAL#,
         A.STATUS,
         C.PIECE,
         C.SQL_TEXT
    FROM V$SESSION A,
         V$SQLTEXT C
   WHERE     A.SID IN (SELECT DISTINCT T2.SID
                         FROM V$LOCKED_OBJECT T1,
                              V$SESSION T2
                        WHERE T1.SESSION_ID = T2.SID)
         AND A.SQL_ADDRESS = C.ADDRESS(+)
ORDER BY C.PIECE;
查看:该条INSERT有两个piece:
SID     SERIAL# STATUS  PIECE   SQL_TEXT
200 77 ACTIVE 0 INSERT INTO divisions (   division_id, name ) VALUES (   'SAL', 
200 77 ACTIVE 1 'Sales' )

再用:
SELECT object_id, session_id, locked_mode FROM v$locked_object;
  SELECT t2.username,
         t2.sid,
         t2.serial#,
         t2.logon_time
    FROM v$locked_object t1, v$session t2
   WHERE t1.session_id = t2.sid
ORDER BY t2.logon_time;
查看:
OBJECT_ID SESSION_ID LOCKED_MODE
10271   200      2
10267   200       3

为什么这种情况:
1、INSERT语句会会hang有锁?
2、为什么一条INSERT语句有两个PIECE?
3、为什么一条INSERT语句有两个锁?

谢谢!
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:10:38
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6559/
本文WWW.DOC100.NET DOC100.NET版权所有。