Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

0

好友

14

主题
1#
发表于 2013-5-16 12:22:12 | 查看: 4450| 回复: 5
OS REDHAT 5.8
DB 10.2.0.4

今天早上数据库频繁出现dead lock
alert:
  1. Thu May 16 10:08:00 2013
  2. LNS: Standby redo logfile selected for thread 1 sequence 119138 for destination LOG_ARCHIVE_DEST_3
  3. Thu May 16 10:11:31 2013
  4. ORA-00060: Deadlock detected. More info in file /u01/orabase/admin/jtcbw/udump/jtcbw1_ora_14251.trc.
  5. Thu May 16 10:16:39 2013
  6. Thread 2 advanced to log sequence 104100 (archiver wakeup)
  7. Thu May 16 10:16:39 2013
  8. ARC0: Standby redo logfile selected for thread 2 sequence 104099 for destination LOG_ARCHIVE_DEST_3
  9. Thu May 16 10:18:01 2013
  10. Thread 1 advanced to log sequence 119139 (LGWR switch)
  11.   Current log# 9 seq# 119139 mem# 0: /ocfs_data1/jtcbw/redo09a.log
  12.   Current log# 9 seq# 119139 mem# 1: /ocfs_data2/jtcbw/redo09b.log
  13.   Current log# 9 seq# 119139 mem# 2: /ocfs_data3/jtcbw/redo09c.log
  14. Thu May 16 10:18:02 2013
  15. LNS: Standby redo logfile selected for thread 1 sequence 119139 for destination LOG_ARCHIVE_DEST_3
  16. Thu May 16 10:21:13 2013
  17. ORA-00060: Deadlock detected. More info in file /u01/orabase/admin/jtcbw/udump/jtcbw1_ora_14174.trc.
  18. Thu May 16 10:21:47 2013
  19. ORA-00060: Deadlock detected. More info in file /u01/orabase/admin/jtcbw/udump/jtcbw1_ora_14150.trc.
  20. Thu May 16 10:22:59 2013
复制代码
查看这些trace,都是一样的sql语句只是session 不一样
  1. ORACLE_HOME = /u01/orabase/db
  2. System name:    Linux
  3. Node name:      tycbw
  4. Release:        2.6.18-194.el5
  5. Version:        #1 SMP Tue Mar 16 21:52:39 EDT 2010
  6. Machine:        x86_64
  7. Instance name: jtcbw1
  8. Redo thread mounted by this instance: 1
  9. Oracle process number: 354
  10. Unix process pid: 14174, image: oracle@tycbw

  11. *** 2013-05-16 10:21:12.938
  12. *** ACTION NAME:() 2013-05-16 10:21:12.931
  13. *** MODULE NAME:(JDBC Thin Client) 2013-05-16 10:21:12.931
  14. *** SERVICE NAME:(jtcbw) 2013-05-16 10:21:12.931
  15. *** SESSION ID:(2017.26545) 2013-05-16 10:21:12.931
  16. DEADLOCK DETECTED ( ORA-00060 )
  17. [Transaction Deadlock]
  18. The following deadlock is not an ORACLE error. It is a
  19. deadlock due to user error in the design of an application
  20. or from issuing incorrect ad-hoc SQL. The following
  21. information may aid in determining the deadlock:
  22. Deadlock graph:
  23.                        ---------Blocker(s)--------  ---------Waiter(s)---------
  24. Resource Name          process session holds waits  process session holds waits
  25. TX-00040005-000c1998       354    2017     X            315    1345           X
  26. TX-00080013-000f9e99       315    1345     X            354    2017           X
  27. session 2017: DID 0001-0162-000780D5    session 1345: DID 0001-013B-00048E7E
  28. session 1345: DID 0001-013B-00048E7E    session 2017: DID 0001-0162-000780D5
  29. Rows waited on:
  30. Session 1345: obj - rowid = 0000D763 - AAAmAPAA6AAAUJDAAA
  31.   (dictionary objn - 55139, file - 58, block - 82499, slot - 0)
  32. Session 2017: obj - rowid = 0000D74D - AAA1MHAC1AAAOnDAAA
  33.   (dictionary objn - 55117, file - 181, block - 59843, slot - 0)
  34. Information on the OTHER waiting sessions:
  35. Session 1345:
  36.   pid=315 serial=19136 audsid=158824586 user: 59/JTCBW
  37.   O/S info: user: zhangzhiqiang, term: unknown, ospid: , machine: tycbw2
  38.             program: JDBC Thin Client
  39.   application name: JDBC Thin Client, hash value=2546894660
  40.   Current SQL Statement:
  41.    DELETE FROM  T_ENTERPRISE_ADDRESS WHERE ENTERPRISE_ID = :1
  42. End of information on OTHER waiting sessions.
  43. Current SQL statement for this session:
  44.                 UPDATE T_ENTERPRISE             SET OPER_TYPE   = 'e'                                                   ,                               FULL_NAME       = :1                                                    ,                               SHORT_NAME      = :2                                    
  45.                 ,                               ALIAS_NAME      = :3                                                    ,                               OLD_NAME        = :4                                                    ,                               ENGLISH_FULL_NAME       = :5                             
  46.                        ,                               ENGLISH_SHORT_NAME      = :6                                                    ,               
  47.                 ABBREVIATED_ENGLISH_NAME        = :7                                                    ,                               FULL_SPELL_CODE = :8                                                    ,                               SHORT_SPELL_CODE        = :9                                            
  48.         ,                               ALIAS_SPELL_CODE        = :10                                                   ,                               OLD_SPELL_CODE  = :11                                                                                                                                          
  49.                                 ,                               GEOGRAPHY_FEATURE = null                                                               
  50.         ,                               AREA_ID = :12                                                   ,                               AREA_CODE = :13   
  51.                                              ,                               NAME1   = :14                                                   ,                               NAME2   = :15                                                                                                                           
  52.         ,UPDATE_DATE    = sysdate                       ,                               UPDATE_USER_ID  = :16                                          
  53.                                                                                                         ,                               IS_SECRET       = :17                                                                                                                           ,                               REMARK  = :18                                                   ,                               REMARK2 = :19                                          
  54.         ,                               IS_BEST = :20                                                   ,                               IS_YELLOW       = :21                                                   ,                               DATA_SOURCE_CHANNEL     = :22                                          
  55.         WHERE ENTERPRISE_ID = :23      
复制代码
T_ENTERPRISE 和T_ENTERPRISE_ADDRESS 没有外键,也没有triger,不知道为什么dead lock会发生在这2个不同的表上。

群里有人说是itl 争用造成,查看这一时间段的wait,只有TX - row lock contention,并没有ITL相关的contention。



上传相关trace和 ASH

trace.rar

120.67 KB, 下载次数: 1135

2#
发表于 2013-5-16 23:45:37
死锁 是在两个表上的啊。

回复 只看该作者 道具 举报

3#
发表于 2013-5-17 08:48:38
psufnxk2000 发表于 2013-5-16 23:45
死锁 是在两个表上的啊。


为什么是在2个表上呢?一般不都是同一个表做DML才会产生死锁吗

回复 只看该作者 道具 举报

4#
发表于 2013-5-17 21:55:10
session 1 : update test1 set id=2 where id=1;

session  2 : update test2 set id=2 where id=1;

session 1 : update test2 set id=2 where id=1;    --阻塞

session 2 : update test1 set id=2 where id=1 ;   

这时就死锁了, 里面用到两张表, test1 ,test2;

回复 只看该作者 道具 举报

5#
发表于 2013-5-18 14:40:21
本帖最后由 fluttersnow 于 2013-5-18 14:43 编辑
psufnxk2000 发表于 2013-5-17 21:55
session 1 : update test1 set id=2 where id=1;

session  2 : update test2 set id=2 where id=1;

你这个演示还是test2这一个表的lock 啊。
你指的是在一个transcation中,做了2个表的update?

回复 只看该作者 道具 举报

6#
发表于 2013-5-18 16:03:20
dead lock 为什么不能发生在 2张表上?

我认为 10张 100张都可以

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 13:55 , Processed in 0.082164 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569