我注意到甲骨文中的一些事情从未发生过.虽然我多年来经常做这种事情.在这种情况下,它是一个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控制器无法处理负载.为什么两个语句都在等待资源,为什么这个资源不可用.