并发管理

Posted 夜月色下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发管理相关的知识,希望对你有一定的参考价值。

读写冲突通过读一致性解决:

sys准备工作:

SQL> create user user01 identified by password;

SQL> grant dba to user01;

以下都用user01:

SQL> conn user01/password

Connected.

SQL> create table t1(x int);

SQL> insert into t1 values (1);

SQL> commit;

session1:

SQL> update t1 set x=11 where x=1;

SQL> select * from t1;

session 2:

SQL> select * from t1;

session 1:

SQL> commit;

session 2:

SQL> select * from t1;

测试serializable:

session1:

SQL> alter session set isolation_level=serializable;改为可串行化隔离级别

重复上面的步骤

 

写与写的冲突通过锁机制解决:

session 1:

SQL> update t1 set x=11 where x=1;

浏览器中查看锁信息

session 2:

SQL> update t1 set x=111 where x=1; 被阻塞

浏览器中查看锁信息

session 1:

SQL> rollback;

浏览器中查看锁信息

 

死锁:

session1:

SQL> select * from t1;

 

         X

----------

         1

         2

SQL> update t1 set x=11 where x=1;

session2:

SQL> update t1 set x=22 where x=2;

session1:

SQL> update t1 set x=222 where x=2; 阻塞

session2:

SQL> update t1 set x=111 where x=1; 死锁

ERROR at line 1:

ORA-00060: deadlock detected while waiting for resource

$ vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log

 

锁和外键

 

推荐外键做索引,避免全表扫描被锁定,提高并发

 

 

查询加锁 select … for update

以上是关于并发管理的主要内容,如果未能解决你的问题,请参考以下文章

Oracle EBS 清除并发请求和(或)管理器数据 请求

EBS并发管理器启动失败,系统暂挂,在重置计数器之前修复管理程序

并发管理的并发请求表 fnd_concurrent_requests,这个表有三个时间列

并发会话管理总是重定向到 failureurl - Java Config

并发编程的本质是全局上下文和调度执行的管理

我是不是需要管理有关数据库访问的并发性?