oracle数据库hanganalyze(四)

2014-11-24 15:25:14 · 作者: · 浏览: 2
na,v$sqlareab
2 wherea.sql_address=b.addressanda.sid=329;
MACHINE STATUS PROGRAM SQL_TEXT
--------- ------- --------- -------------------------------------------------------------------
hl_rdb01 ACTIVE sqlplus@hl_rdb01(TNSV1-V3) ALTER TABLEA_PDA_SP_STATS PLITPARTITION P_MAXAT(20090609) INTO(PARTITION P_20090608 TABLESPACETS_DATA_A ,PARTITION P_MAX TABLESPACETS_DATA_A)
SQL>select event from v$session_wait wheresid=329;
EVENT
--------------------------------------------
row cache lock
发现也是在执行split语句,但是问了同事,他已经把之前运行失败的脚本完全kill掉了。估计在数据库中进程挂死了,没有完全的释放。
kill掉329号进程后,发现还是挂住,所以我们继续做hanganlyze:
==============
HANG ANALYSIS:
==============
Cycle 1 ::
<0/295/57125/0x4d6b8978/19237/rowcachelock>
Cycle 2 ::
<0/254/19761/0x4d687438/23307/librarycachelock>
--<0/239/57618/0x4d6b74f8/13476/rowcachelock>
我们继续把其他的进程杀掉。终于295的split执行成功。
SQL>ALTER TABLEA_PDA_SP_STAT SPLIT PARTITIONP_MAXAT(20090609)
INTO(PARTITIONP_20090608 TABLESPACETS_DATA_A ,PARTITION P_MAX TABLESPACETS_DATA_A)
Table altered.
Elapsed:00:31:03.21
继续执行split下一个分区,也很快完成。
SQL>ALTER TABLEA_PDA_SP_STATS PLITPARTITION P_MAXAT(20090610)
2 INTO(PARTITIONP_20090609 TABLESPACETS_DATA_A
3 ,PARTITIONP_MAX TABLESPACETS_DATA_A);
Table altered.
Elapsed:00:00:00.02
至此,问题解决.
[238]/0/239/57618/0x4d7b18a0/13476/IN_HANG/395/402/[294][238][328][253]/none
[253]/0/254/19761/0x4d7bb710/23307/IN_HANG/397/400/[328][238][294]/294
[294]/0/295/57125/0x4d7d6820/19237/IN_HANG/396/401/[294][238][253]/238
[328]/0/329/43816/0x4d7ecf40/23487/IN_HANG/398/399/[253]/253
329堵塞住了254
254堵塞住了295
295堵塞住了239
杀掉的应该是329,254,295
在很多情况下如果数据库HANG住则无法登陆sqlplus,这时如果想要对系统进行hanganalyze可以加参数登录sqlplus
具体语法如下:
[oracle@SHDBService01 ~]$ sqlplus -prelim /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Aug 21 15:42:23 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> conn /as sysdba
Prelim connection established
SQL>
prelim参数只对10g以后的版本有效。
10g以前的版本不能登录SQLPLUS时可以使用dbx或则gdb。