今天上午碰到一个报错:

ORA-02049:timeout:distributed transaction waiting for lock

但是并未对业务造成实际影响,过了一段时间后好了。因为那段时间,用户连续做了100笔的核销业务。

【经查】

ORA-02049错误说明如下:

ORA-02049:timeout:distributed transaction waiting for lock

cause:exceeded INIT.ORA distributed_lock_timeout seconds waiting for lock.

action:treat as a deadlock.

【解决】

1、先查是否又死锁出现:

SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,

l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time

FROM v$locked_object l, all_objects o, v$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid

ORDER BY sid, s.serial#;

有的话可以根据业务实际情况考虑杀掉,恢复正常业务

alter system kill session 'sid,serial#';

2、再查一个参数distributed_lock_timeout,可以考虑是否需要调优

最好不要去调这个参数,除非业务被影响到,并且通过应用程序无法避免这个问题

2.17 ORACLE distributed_lock_timeout

2.17.1 参数出处ORACLE初始参数文件:init.ora -> distributed_lock_timeout。

2.17.2 时间单位

秒。

2.17.3 取值范围

大于0。

2.17.4 默认取值

60 。

2.17.5 用途解释

分布式事务锁等待超时(distributed transaction waiting for lock),指第二个事务处理需要的数据库资源,正被第一个分布式事务占用而锁定,那么,第二个事务将等待第一个分布式事务释放此资源,等待distributed_lock_timeout时间后,如果第一分布式事务仍然没有释放此资源,第二个事务触发此超时。

2.17.6 超时后果

如果资源被第一个事务正常使用锁定,ORACLE回滚第二个事务,并返回错误:"ORA-02049: time-out: distributed transaction waiting for lock "。

如果第一个事务处理完成,资源释放后,再尝试第二个事务,就会成功。如果第二个事务不能等待资源自动释放,那么可以采用处理数据库死锁(deadlock)的措施,人工介入,清除第一个事务,但一般不建议采用这种方式,因为第一个事务一般会正常结束的。

如果资源被第一个事务因为处于不确定分布事务状态(in-doubt distributed transaction)而锁定,ORACLE回滚第二个事务,并返回错误:"ORA-01591: lock held by in-doubt distributed transaction identifier "。

这种错误遇到的可能性较小,一般只有在分布事务的关键提交阶段出现网络、系统故障,才可能出现此故障,而且,当网络、系统故障恢复后,ORACLE一般可以自己解决此问题,不需要人工介入。如果一定要人工介入,可以查阅ORACLE专门的手册。

2.17.7 设置考虑

出现这样的超时,是因为特定数据库资源的使用碰撞,要分析应用系统的业务特点,确定碰撞可能发生的条件,在此条件下,资源可能被先来者锁定多长时间(T1),后来者又能够等多长时间(T2),再来设置此参数(T)的大小。如果在大多数情况下,T1 < T2, 那么就设置T1 < T < T2;反之,大多数情况下,T1 > T2,那么,就设置T < T2。

因此,不分析业务特点,一味的增大和减小是不恰当的。

【这篇文章前面的部分也可以看一下的】

oracle locked time,ORACLE distributed_lock_timeout参数相关推荐

  1. oracle locked time,Oracle里面的用户smsdb无法登录 LOCKED(TIMED)

    创建的一个用户smsdb ,查看状态LOCKED(TIMED) 解锁后,conn smsdb/password 仍然报错,然后又被锁 :最后发现是错误登陆次数达到oracle限制的10次:导致后续无法 ...

  2. oracle locked timed,Oracle里面的用户smsdb无法登录 LOCKED(TIMED)

    创建的一个用户smsdb ,查看状态LOCKED(TIMED) 解锁后,conn smsdb/password 仍然报错,然后又被锁 :最后发现是错误登陆次数达到oracle限制的10次:导致后续无法 ...

  3. t4c oracle,locked (a oracle.jdbc.driver.T4CConnection

    发现写Oracle的线程挂住了,场景是从mysql读数据,然后写到Oracle. 1 定位线程 因为在同一台机器上运行了多个java进程,要找到对应的pid,就是连接mysql的的那个进程. [adm ...

  4. oracle solaris 内核 源码,Oracle和SUN Solaris内核参数

    Oracle和SUN Solaris内核参数 2010-4-11文字大小:大中小 本文描画了Sun Solaris上运转Oracle数据库所须要配置的一些内核参数. 一些预备知识shared memo ...

  5. oracle imp 1403,Oracle中用exp/imp命令参数详解【转】

    Oracle中用exp/imp命令参数详解 [用 exp 数 据 导 出]: 1  将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 expsyste ...

  6. oracle技术之查询初始化参数的方法(六)

    查询初始化参数的方法很多,比如SHOW PARAMETER,或查询V$PARAMETER等,这里简单总结一下. 这一篇描述CREATE PFILE的方法检查初始化参数. 前面介绍了很多种方法,这些方法 ...

  7. 修改oracle数据库内存参数,物理内存扩容,oracle 11g R1数据库相关参数修改

    背景:对主备机的物理内存扩容一倍,内存扩容后,需要修改数据库相关的内存参数,包括数据库层面和操作系统层面.预计对备机扩容一倍内存操作完毕后,修改相关.. 背景: 对主备机的物理内存扩容一倍,内存扩容后 ...

  8. oracle adjusting parallel,Oracle 并行相关的初始化参数

    Oracle数据库并行操作,特别是在RAC环境,一定程度上能够提升数据库的性能,所以对相关的初始化参数的了解是必要的,这篇文章将根据实际的案例讨论Oracle数据库的部分并行参数. Oracle数据库 ...

  9. oracle pfile 注释,Oracle pfile/spfile参数文件详解

    基本规则 a.在SPFile文件中,所有参数都是可选的,也就是说只需要在初始化参数文件中列出那些需要修改的参数,其它保持默认值即可. b.SPFile文件中只能包含参数赋值语句和注释语句.注释语句以& ...

最新文章

  1. 应用上架被拒2.1问题
  2. 如何判断一个数组是否按顺序排好了
  3. Delphi中文件名函数-路径、名称、子目录、驱动器、扩展名
  4. ffmpeg图片压缩为视频
  5. 愤怒的小鸟(爆搜,剪枝)
  6. Android 操作SQLite基本用法
  7. 群集lvs—DR的配置及应用
  8. 分离数据库(Detach database).
  9. Booting Android: bootloaders, fastboot and boot images
  10. Gym - 100952H--H. Special Palindrome--dp整数划分(模板)
  11. 运行时错误7内存溢出_分别从运行时和GC的角度看JAVA8内存管理
  12. SpringCloud项目:实现推送消息到RabbitMQ消息中间件
  13. 中国银行网点全集数据
  14. 电阻触摸屏 linux 校准软件,android 电阻单点触摸屏校准
  15. BYTE WORD DWORD
  16. Java实现用汉明距离进行图片相似度检测的
  17. MYSQL数据库系统第4次实验 单表查询
  18. 面向对象设计之单一职责原则(Simple-Responsibility Principle)
  19. 基于小样本量的水下图像识别
  20. word怎么批注修改文章

热门文章

  1. GARFIELD@02-19-2005
  2. qt-项目部署(某些情况下编译器中运行异常的话可以使用命令windeployqt 程序名在安装的qt dos命令下补全部分依赖库在运行项目或发布)
  3. C#中控件如何设置透明色
  4. winform-日记
  5. 寄存器(CPU的工作原理)
  6. SwiftUI3优秀文章List 去掉左右间距问题
  7. java 缓存ech_ehcache获取缓存空指针
  8. flask mysql项目模板渲染_Flask框架模板渲染操作简单示例
  9. html选择文件夹插件,js/jq仿window文件夹框选操作插件
  10. 反序列化工具_JBOSS反序列化漏洞