微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 为什么添加数据文件会导致Oracle出现死锁?

我注意到甲骨文中的一些事情从未发生过.虽然我多年来经常做这种事情.在这种情况下,它是一个Oracle11实例(Oracle数据库11g企业版11.2.0.1.0版 – 准确地在 Linux上运行64位).

我正在导入转储文件,同时我使用如下语句增加表空间:

alter tablespace example add datafile '/path/to/oradata/instance/exampleXX.dbf' size 31000m;

运行上述语句时,我有时会遇到以下错误

ERROR at line 1:
ORA-00060: deadlock detected while waiting for resource

我可以重新启动alter tablespace语句,它通常会在第二次尝试时完成.

我在问为什么会这样,因为这对我来说很不寻常.它是否表示存在错误或阻碍文件系统故障?我知道运行导入并同时向表空间添加数据文件可能需要服务器很多,但是这是服务器有4个cpu,64 GB和几TB的SAS raid10.

顺便说一下,这不是一个生产系统.

相关跟踪文件输出

Deadlock graph:                                                                                                                                                   
                       ---------Blocker(s)--------  ---------Waiter(s)---------                                                                                   
Resource Name          process session holds waits  process session holds waits                                                                                   
TT-00000006-00000010        36      11          SX       38     142           S                                                                                   
TT-00000006-00000010        38     142     S             36      11          SX                                                                                   

session 11: DID 0001-0024-0000005D      session 142: DID 0001-0026-00000068                                                                                       
session 142: DID 0001-0026-00000068     session 11: DID 0001-0024-0000005D                                                                                        

Rows waited on:                                                                                                                                                   
  Session 11: no row                                                                                                                                              
  Session 142: no row                           

----- information for the OTHER waiting sessions -----                                                                                                            
Session 142:                                                                                                                                                      
  sid: 142 ser: 30639 audsid: 0 user: 5/SYstem flags: 0x8000051                                                                                                   
  pid: 38 O/S info: user: example_user,term: UNKNowN,ospid: 14589                                                                                                   
    image: example@example (DW00)                                                                                                                                     
  current sql:                                                                                                                                                    
  CREATE TABLE EXAMPLE ...

----- Error Stack Dump -----                                                                                                                                      
ORA-00060: deadlock detected while waiting for resource                                                                                                           
----- Current sql Statement for this session (sql_id=6bvzdgdn8vqqt8) -----                                                                                         
alter tablespace ...

堆栈跟踪和内存转储可以提供更多信息,但我不是解决这些问题的专家.我所追求的是一个想法,它可能是什么,谁能够做出这样的事情才能做出明智的猜测.如果是错误,则表明文件系统可能存在问题,或者raid控制器无法处理负载.为什么两个语句都在等待资源,为什么这个资源不可用.

解决方法

查看争用中的实际资源可能会有所帮助,但我猜测这两个操作都试图触及表空间元数据,因此彼此锁定.对此的一个很好的测试是重新安排你的任务,所以alter tablespace命令没有这么大的跳出(创建数据文件):
imp dumpfile control=blahblah.ctl
create datafile ....
alter tablespace add datafile...

但是,在运行11g并使用您描述的资源的计算机上,我建议您查看使用ASM而不是手动管理文件. ASM让DBA的生活变得如此简单(好吧,无论如何).

原文地址:https://www.jb51.cc/linux/397950.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐