`

oracle存储过程加锁

 
阅读更多

项目用到了weblogic集群,导致应用调用存储过程时发生了冲突。

把下面存储过程中的话加到你想要加锁的业务前后即可。

 

 

create or replace procedure testp  is
    LN   number;
    jcr_lockhandle   varchar2(128);
  begin
     
      DBMS_LOCK.allocate_unique('Lock', jcr_lockhandle);--针对当前session加锁

   LOOP
      LN := DBMS_LOCK.request ( jcr_lockhandle, TIMEOUT => 0);

      IF LN NOT IN (0, 4)--判断是否被别session锁住
      THEN
         DBMS_OUTPUT.put_line ('Already run...');
         DBMS_LOCK.sleep (2);--已经被人锁住,休眠2秒
      ELSE
         EXIT;--没有锁,退出轮询
      END IF;
   END LOOP;

 

 

dbms_output.put_line('1');  ----你要加锁的业务逻辑哦


LN := DBMS_LOCK.release ( jcr_lockhandle);--释放资源

 

  end ;

分享到:
评论

相关推荐

    Oracle11g从入门到精通2

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...

    Oracle11g从入门到精通

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...

    Oracle 主要配置文件介绍

    INTERVAL=60 5 存储追踪和告警文件的路径 user_dump_dest 指定记录 Oracle 用户进程产生的追踪和告警信息的文件的 存放路径 background_dump_dest 指定记录 Oracle 后台进程产生的追踪和 告警信息的...

    Oracle.11g.从入门到精通 (2/2)

    7.3.4 存储过程检查 7.3.5 使用触发器 7.4 避免更改引起的大量改动 7.4.1 使用视图 7.4.2 使用同义名 7.4.3 使用光标 第8章 数据库用户管理 8.1 授予权限 8.1.1 直接授权 8.1.2 授权角色 8.1.3 使用OEM的“安全管理...

    Oracle.11g.从入门到精通 (1/2)

    7.3.4 存储过程检查 7.3.5 使用触发器 7.4 避免更改引起的大量改动 7.4.1 使用视图 7.4.2 使用同义名 7.4.3 使用光标 第8章 数据库用户管理 8.1 授予权限 8.1.1 直接授权 8.1.2 授权角色 8.1.3 使用OEM的“安全管理...

    oracle 12c 数据库 教程

    (五)手动加锁 64 (方式一)lock 语句 64 八、管理还原数据 65 (一)什么是还原数据? 65 (二)还原数据的作用 66 (三)还原数据的工作原理 66 (四)还原数据与重做数据 67 (五)管理还原数据 67 (六)还原...

    oracle 11g rac 虚拟机搭建集群

    在RAC环境中,多个数据库实例同时访问同一个数据库,每个数据库实例分别在不同的节点上运行,而数据库存放在共享的存储设备上。 通过RAC,不仅可以实现数据库的并发访问,而且可以实现用户访问的负载均衡。用户可以...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    产品安装过程中将会出现以上2个界面 9. 步骤8/8:完成安装  卸载Oracle 1. 在运行services.msc打开服务,停止Oracle的所有服务。 2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\...

    ORACLE锁深入分析

    若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁就是实现数据库并发控制的一个非常重要的技术。 2.ORACLE锁的类型 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X...

    ORACLE重建索引总结

    使用带有coalesce参数时重建期间不需要额外空间,它只是在重建索引时将处于同一个索引分支内的叶块拼合起来,这最大限度的减少了与查询过程中相关的潜在的加锁问题,但是,coalesce选项不能用来将一个索引转移到其他...

    Oracle DBA 参考手册

    Latch Contention(加锁或插销竞争) 55 10.3.6.4. Redo Log Buffer Performance Tuning(重写日志缓冲的调整) 55 10.3.6.5. Query Performance Tuning(查询效率的调整) 55 10.3.6.6. Temporary Tablespace ...

    oracle数据库经典题目

    系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的数据库对象(如表、视图、过程等) 16. Oralce数据库在进行物理备份有联机备份和脱机备份两种方式可供选择。 ...

    精通SQL 结构化查询语言详解

    15.5.2 Oracle中存储过程和函数的管理 第16章 SQL触发器  16.1 触发器的基本概念  16.1.1 触发器简介  16.1.2 触发器执行环境 16.2 SQL Server中的触发器  16.2.1 SQL Server触发器的种类  16.2.2 ...

    ORACLE锁机制深入理解

    若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该...

    精通SQL--结构化查询语言详解

    15.5.2 oracle中存储过程和函数的管理 324 第16章 sql触发器 325 16.1 触发器的基本概念 325 16.1.1 触发器简介 325 16.1.2 触发器执行环境 325 16.2 sql server中的触发器 326 16.2.1 sql server触发器的种类...

    Oracle数据库”记录被另一个用户锁住”解决方法(推荐)

    若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。  加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该...

    InnoDB中的MVCC

    MySQL的大多数事务型存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC)。 不仅是MySQL,包括Oracle、 PostgreSQL等其他数据库系统也都实现了 MVCC,但各自的...

    MySQL死锁的产生原因以及解决方案

    若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并 发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能...

Global site tag (gtag.js) - Google Analytics