死锁通常发生在主表和子表更新主外键上。更新主表的主键,那么子表的外键会被锁住

如果删除主表的行,那么子表会被锁住。

SQL> create table p(x int primary key);

Table created.

SQL> create table c( x references p);

Table created.

SQL> insert into p values(1);

1 row created.

SQL> insert into p values (2);

1 row created.

SQL> commit;

Commit complete.

在一个seesion下执行

SQL> insert into c values(2);

1 row created.

换一个session执行

SQL> delete from p where x = 1;

会发现hang住了。

SQL> column columns format a30word_wrapped

SQL> column columns format a15word_wrapped

SQL> column constraint_name format a15word_wrapped

SQL>

SQL> select table_name, constraint_name,

2     cname1 ||nvl2(cname2,','||cname2,null) ||

3     nvl2(cname3,','||cname3,null) || nvl2(cname4,','||cname4,null) ||

4     nvl2(cname5,','||cname5,null) || nvl2(cname6,','||cname6,null) ||

5     nvl2(cname7,','|| cname7,null)|| nvl2(cname8,','||cname8,null)

6     columns

7  from ( select   b.table_name,

8             b.constraint_name,

9            max(decode(position,1,column_name,null)) cname1,

10            max(decode(position,2,column_name,null)) cname2,

11            max(decode(position,3,column_name,null)) cname3,

12            max(decode(position,4,column_name,null)) cname4,

13            max(decode(position,5,column_name,null)) cname5,

14            max(decode(position,6,column_name,null)) cname6,

15            max(decode(position,7,column_name,null)) cname7,

16            max(decode(position,8,column_name,null)) cname8,

17            count(*) col_cnt

18    from ( select substr(table_name,1,30) table_name,

19                     substr(constraint_name,1,30)constraint_name,

20                     substr(column_name,1,30)column_name,

21                     position

22            from user_cons_columns ) a,

23            user_constraints b

24            where a.constraint_name = b.constraint_name

25            and b.constraint_type ='R'

26            group by b.table_name,b.constraint_name

27            ) cons

28 where  col_cnt > ALL

29            (select count(*)

30            from user_ind_columns i

31            where i.table_name = cons.table_name

32            and i.column_name in (cname1,cname2,cname3,cname4,

33                                    cname5,cname6,cname7,cname8)

34            and i.column_position <= cons.col_cnt

35            group by i.index_name

36            )

37  /

TABLE_NAME                     CONSTRAINT_NAME COLUMNS

--------------------------------------------- ---------------

C                              SYS_C007722     X

发现C上没有索引,这个问题可以通过创建索引来解决

SQL> create index idx_c on c(x);

Index created.

SQL> insert into c values(2);

1 row created

换个session2执行

SQL> delete from p where x = 1;

1 row deleted.

可以 看到不再hang住了。

oracle怎么deadlock,Oracle Deadlock相关推荐

  1. oracle死锁模拟,Oracle死锁的模拟和处理

    一,什么是死锁 A deadlock is a situation in which two or more users are waiting for data locked by each oth ...

  2. Deadlock 和 Deadlock Prevention

    一.Thread Deadlock A deadlock is when two or more threads are blocked waiting to obtain locks that so ...

  3. Oracle Study之--Oracle等待事件(3)

    Oracle Study之--Oracle等待事件(3) Db file parallel read 这是一个很容易引起误导的等待事件,实际上这个等待事件和并行操作(比如并行查询,并行DML)没有关系 ...

  4. oracle技术之Oracle 跟踪事件(一)

    一.Oracle跟踪文件 Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空间创建.回滚段创建.某些alter命令.日志切换.错误消息 ...

  5. 使用Oracle instantClient代替Oracle Client安装

    使用Oracle instantClient代替Oracle Client安装 目录 使用Oracle instantClient代替Oracle Client安装 #Oracle instantCl ...

  6. cmd删除oracle监听,oracle数据库监听删除

    oracle 10G for linux常用命令 oracle 10G for linux常用命令 首先以Oracle用户登录 1. $/oracle/oracle/app/product/101/b ...

  7. lua 访问oracle,lua链接oracle解决方法与步骤

    测试环境centos7 1) 使用luajit ,这个比较简单,下载luajit源码,编译即可 省略 以下是具体操作步骤: 参考文章:http://www.programgo.com/article/ ...

  8. oracle顺序读等待,Oracle Study之--Oracle等待事件(4)

    Oracle Study之--Oracle等待事件(4) Db file scattered read这个等待事件在实际生产库中经常可以看到,这是一个用户操作引起的等待事件,当用户发出每次I/O需要读 ...

  9. Oracle: 三、Oracle的隐藏事务与视图的创建

    内容简介 1,Oracle的隐藏事务.2,视图(View)的创建. 技术与环境 操作系统: windows 语言类别: SQL之PL/SQL thankyou: sunshine, 谢谢你的默默付出 ...

  10. oracle insert汉字出错,Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名...

    本文主要向大家介绍了Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库,用 ...

最新文章

  1. Tomcat 之 tomcat安装和组件介绍
  2. oraclexe支持商用吗_商用车线控制动系统项目 技术研发
  3. 兄弟||弟兄,以前看过一个“母亲”,现在是“弟兄”,感人!
  4. Codeforces Round #520 (Div. 2)
  5. Android应用中使用AsyncHttpClient来异步网络数据
  6. 前端三十一:标签的属性
  7. Git 技术篇 - Github在项目分支里下载某个文件方法,Github项目里的单个js文件下载实例演示
  8. [原]TCP/UDP使用细节备忘
  9. [js] ReferenceError和TypeError有什么区别?
  10. 吴钩:打开宋代的“隐藏玩法”
  11. vue获取编辑器纯文字_前端富文本编辑器 vue-html5-editor
  12. Spring Boot(3)---Spring Boot启动器Starter详解
  13. Django form模块使用心得
  14. Android平台下渗透测试工具大集合
  15. HDOJ(航电)题目分类大全
  16. 524MB的微信输入法:没广告 你会用吗
  17. GoLang panic 用法
  18. MATLAB绘制图中图
  19. IgA | 对抗病原菌,帮助共生菌定植的“重要开关”
  20. Nginx系列教材 (五)- 和Tomcat进行负载均衡

热门文章

  1. 浅析LUM及相关实验
  2. 案例解析 | 广东自由流收费稽核方案,AI稽核新模式
  3. Java 寻找指定文件夹里特定字符串
  4. C# 学习日记-调用Bartender的库进行标签自动打印
  5. web漏洞-淡然qqyw图标点亮系统源码审计-sql注入篇
  6. navicat持续试用
  7. Session会在关闭浏览器的时候自动清空吗?
  8. Intent.createChooser方法在HTC OneX上意外会引发onConfigurationChanged方法
  9. java calendar日期计算_JAVA中用CALENDAR类计算周和周的起始日期(转)
  10. 修改TrustedInstaller权限文件