接到业务人员的报告,说是报表数据库最近很慢,于是登陆上去检查。结果确意外的发现有一个异常的活动事务:GSs金州视窗!了解黔西南,从金州视窗开始!
START_TIME SID SERIAL# SEGMENT_ID SEGMENT_NAME PROCESS SPID SES_ADDR LOCKWAIT USED_UBLKGSs金州视窗!了解黔西南,从金州视窗开始!
-------------------- ------ ------- ---------- ------------ ------------ ------------ ---------------- ---------------- ----------GSs金州视窗!了解黔西南,从金州视窗开始!
12/30/05 01:48:33 71 20835 19 _SYSSMU19$ 23055 15664 C0000001A45BC4A0 1GSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
START_TIME SID SERIAL# SES_ADDR XIDUSN OWNERGSs金州视窗!了解黔西南,从金州视窗开始!
-------------------- ------ ------- ---------------- ---------- ------------------------------GSs金州视窗!了解黔西南,从金州视窗开始!
OBJECT_NAMEGSs金州视窗!了解黔西南,从金州视窗开始!
--------------------------------------------------------------------------------------------------------------------------------GSs金州视窗!了解黔西南,从金州视窗开始!
OS_USER_NAME ORACLE_USERNAMEGSs金州视窗!了解黔西南,从金州视窗开始!
------------------------------ ------------------------------GSs金州视窗!了解黔西南,从金州视窗开始!
12/30/05 01:48:33 71 20839 C0000001A45BC4A0 19 REPORTGSs金州视窗!了解黔西南,从金州视窗开始!
WAP_AUTHPRICE_USER_SP_RDGSs金州视窗!了解黔西南,从金州视窗开始!
report16 REPORTGSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
SID SERIAL# SPID USERNAME TERMINAL PROGRAMGSs金州视窗!了解黔西南,从金州视窗开始!
------ ------- ------------ ---------- -------------------- ----------------------------------------GSs金州视窗!了解黔西南,从金州视窗开始!
71 20913 15664 oracle UNKNOWN oracle@rdb01 (TNS V1-V3)GSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
经过反复的检查,我们发现这个回滚段的事务始终是active的,并且其并没有任何正在做回滚段动作:GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> /GSs金州视窗!了解黔西南,从金州视窗开始!
SID XIDUSN USED_UBLKGSs金州视窗!了解黔西南,从金州视窗开始!
------ ---------- ----------GSs金州视窗!了解黔西南,从金州视窗开始!
71 19 1GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> /GSs金州视窗!了解黔西南,从金州视窗开始!
SID XIDUSN USED_UBLKGSs金州视窗!了解黔西南,从金州视窗开始!
------ ---------- ----------GSs金州视窗!了解黔西南,从金州视窗开始!
71 19 1GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> /GSs金州视窗!了解黔西南,从金州视窗开始!
SID XIDUSN USED_UBLKGSs金州视窗!了解黔西南,从金州视窗开始!
------ ---------- ----------GSs金州视窗!了解黔西南,从金州视窗开始!
71 19 1GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> GSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
更加奇怪的是,这个spid 15664在操作系统上根本就不存在!此时,已经开始怀疑,有人曾将在这个事务繁忙时,将其从操作系统上直接kill了,因此这个spid在操作系统上已经不存在了,但是由于当时有活动事务存在于回滚段,因此,这个事务的sid始终存在于数据库中:GSs金州视窗!了解黔西南,从金州视窗开始!
oracle@rdb01:/tmp/lunar/rda/output > ps -ef | grep 15664GSs金州视窗!了解黔西南,从金州视窗开始!
oracle 21452 21450 0 12:48:10 pts/tg 0:00 grep 15664GSs金州视窗!了解黔西南,从金州视窗开始!
oracle@rdb01:/tmp/lunar/rda/output > GSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
这时检查等待事件:GSs金州视窗!了解黔西南,从金州视窗开始!
SID EVENT P1 P2GSs金州视窗!了解黔西南,从金州视窗开始!
---------- ---------------------------------------------------------------- ---------- ----------GSs金州视窗!了解黔西南,从金州视窗开始!
1 pmon timer 1000 0GSs金州视窗!了解黔西南,从金州视窗开始!
71 control file sequential read 0 9GSs金州视窗!了解黔西南,从金州视窗开始!
70 db file sequential read 410 67836GSs金州视窗!了解黔西南,从金州视窗开始!
126 db file sequential read 284 82227GSs金州视窗!了解黔西南,从金州视窗开始!
153 db file sequential read 429 211496GSs金州视窗!了解黔西南,从金州视窗开始!
96 direct path read 98 47845GSs金州视窗!了解黔西南,从金州视窗开始!
170 direct path read 163 5477GSs金州视窗!了解黔西南,从金州视窗开始!
161 direct path read 1006 41733GSs金州视窗!了解黔西南,从金州视窗开始!
61 direct path write 1006 275069GSs金州视窗!了解黔西南,从金州视窗开始!
5 smon timer 300 0GSs金州视窗!了解黔西南,从金州视窗开始!
97 PX Deq Credit: need buffer 268566527 2GSs金州视窗!了解黔西南,从金州视窗开始!
86 PX Deq Credit: send blkd 268566527 1GSs金州视窗!了解黔西南,从金州视窗开始!
26 PX Deq: Execute Reply 200 2GSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
没有什么收获。GSs金州视窗!了解黔西南,从金州视窗开始!
现在来看看他正在操作哪些对象:GSs金州视窗!了解黔西南,从金州视窗开始!
Enter value for sid: 71GSs金州视窗!了解黔西南,从金州视窗开始!
old 3: (select SQL_HASH_VALUE from v$session where sid =''''&sid'''')GSs金州视窗!了解黔西南,从金州视窗开始!
new 3: (select SQL_HASH_VALUE from v$session where sid =''''71'''')GSs金州视窗!了解黔西南,从金州视窗开始!
SQL_TEXTGSs金州视窗!了解黔西南,从金州视窗开始!
----------------------------------------------------------------GSs金州视窗!了解黔西南,从金州视窗开始!
INSERT INTO WAP_AUTHPRICE_USER_SP_RD (LOCATIONID,ICPID,SUBSCATGSs金州视窗!了解黔西南,从金州视窗开始!
,ICPATTR,ICPCODE,COUNTS,PERIOD,STAT_TIME) VALUES (:LOCATIONID,:IGSs金州视窗!了解黔西南,从金州视窗开始!
CPID,:SUBSCAT,:ICPATTR,:ICPCODE,:COUNTS,:PERIOD,TO_DATE(:STAT_TIGSs金州视窗!了解黔西南,从金州视窗开始!
ME,''''yyyy-mm-dd hh24:mi:ss''''))GSs金州视窗!了解黔西南,从金州视窗开始!
于是想到,首先kill这个sid,试试看:GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> alter system kill session ''''71,20979'''';GSs金州视窗!了解黔西南,从金州视窗开始!
alter system kill session ''''71,20979''''GSs金州视窗!了解黔西南,从金州视窗开始!
*GSs金州视窗!了解黔西南,从金州视窗开始!
ERROR at line 1:GSs金州视窗!了解黔西南,从金州视窗开始!
ORA-00030: User session ID does not exist.GSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> select sid,serial# from v$session where sid=71;GSs金州视窗!了解黔西南,从金州视窗开始!
SID SERIAL#GSs金州视窗!了解黔西南,从金州视窗开始!
------ -------GSs金州视窗!了解黔西南,从金州视窗开始!
71 20986GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> /GSs金州视窗!了解黔西南,从金州视窗开始!
SID SERIAL#GSs金州视窗!了解黔西南,从金州视窗开始!
------ -------GSs金州视窗!了解黔西南,从金州视窗开始!
71 20986GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> /GSs金州视窗!了解黔西南,从金州视窗开始!
SID SERIAL#GSs金州视窗!了解黔西南,从金州视窗开始!
------ -------GSs金州视窗!了解黔西南,从金州视窗开始!
71 20986GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> alter system kill session ''''71,20986'''';GSs金州视窗!了解黔西南,从金州视窗开始!
alter system kill session ''''71,20986''''GSs金州视窗!了解黔西南,从金州视窗开始!
*GSs金州视窗!了解黔西南,从金州视窗开始!
ERROR at line 1:GSs金州视窗!了解黔西南,从金州视窗开始!
ORA-00030: User session ID does not exist.GSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> select sid,serial# from v$session where sid=71;GSs金州视窗!了解黔西南,从金州视窗开始!
SID SERIAL#GSs金州视窗!了解黔西南,从金州视窗开始!
------ -------GSs金州视窗!了解黔西南,从金州视窗开始!
71 20988GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> alter system kill session ''''71,20988'''';GSs金州视窗!了解黔西南,从金州视窗开始!
alter system kill session ''''71,20988''''GSs金州视窗!了解黔西南,从金州视窗开始!
*GSs金州视窗!了解黔西南,从金州视窗开始!
ERROR at line 1:GSs金州视窗!了解黔西南,从金州视窗开始!
ORA-00030: User session ID does not exist.GSs金州视窗!了解黔西南,从金州视窗开始!
GSs金州视窗!了解黔西南,从金州视窗开始!
SQL> GSs金州视窗!了解黔西南,从金州视窗开始!
可见,这个sid根本就不是一个正常的会话,不能被kill。GSs金州视窗!了解黔西南,从金州视窗开始!