se.arch.php,arch暴涨,数据库差点挂。请教
如何查找瘋狂增長arch的進程
· 作者 小荷||【轉載時請務必以超鏈接形式標明文章原始出處和作者信息】
· 永久鏈接: http://www.oracleblog.cn/working ... h-increase-crazily/ ·
--------------------------------------------------------------------------------
如果我們要找到是什么進程引起了arch瘋狂增長,我們可以用這樣的方法來查找:
我們假設我們要生成一個大表,用ctas的方法來做,由于是ddl語句,我們在v$sqlarea里面找不到對應的語句,但是我們發現這個session產生大量的arch,那么我們怎么去找這個session呢?
[php]
SQL>
SQL> select distinct sid from v$mystat;
SID
----------
11
SQL> create table x1 tablespace ts_big as select rownum as x1_num,t.* from dba_source t
2??/
表已創建。
SQL> create table x2 tablespace ts_big as select rownum as x1_num,t.* from dba_source t
2??/
表已創建。
SQL>
SQL> create table x3??tablespace ts_big as select x1.* from x1,x2;
[/php]
我們這邊可以看到我當前的sid是11,我們用ctas創建一個大表x3。此時arch開始飛快的增長……
由于一般這樣的故障,都是由于一個session引發了大量的歸檔日志,在這里我們用v$sestat來看在單位時間內哪個session生成的redo量最多,哪個session切換redo次數最多。
[php]
SQL> create table t1 as select sid,value,NAME,sysdate as chkdt from??v$sesstat a,v$statname b where a.STATISTIC#=b.STATISTIC# and b.CLASS=2;
####### 過一段時間后,我們再次截取關于每個session關于redo的信息(v$statname.class=2表示針對redo)####
SQL> create table t2 as select sid,value,NAME,sysdate as chkdt from??v$sesstat a,v$statname b where a.STATISTIC#=b.STATISTIC# and b.CLASS=2;
###### 我們查看是哪個sid在單位時間內生成的redo最多 ###########
SQL> select t1.SID,t1.NAME,sum((t2.VALUE-t1.VALUE)/(t2.CHKDT-t1.CHKDT)) from t1,t2 where t1.sid=t2.sid and t1.name=t2.name and t1.name in ('redo size','redo entries') group by t1.sid,t1.name order by 2,3;
SID NAME? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? SUM((T2.VALUE-T1.VALUE)/(T2.CHKDT-T1.CHKDT))
---------- ---------------------------------------------------------------- --------------------------------------------
1 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
3 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
4 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
7 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
10 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
16 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
9 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
6 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
5 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
2 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 34560
12 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 72000
8 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?383040
11 redo entries? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 12876480
1 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
3 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
4 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
6 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
7 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
10 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
9 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
16 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
5 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???0
2 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???4308480
12 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 38718720
8 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 82702080
11 redo size? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?9.6422E+10
已選擇26行。
SQL>
[/php]
我們看到sid為11的session產生了大量的redo,因此使得arch瘋狂的增長。在此,我們可以kill掉這個罪魁禍首了。
由于我們的語句是ddl語句,因此我們如果去找對應的sql,我們會發現其實里面是在操作數據字典:
[php]
SQL> select sql_text from v$sqlarea a,v$session b where a.address=b.sql_address and b.sid=11;
SQL_TEXT
--------------------------------------------------------------------------------
insert into col$(obj#,name,intcol#,segcol#,type#,length,precision#,scale,null$,o
ffset,fixedstorage,segcollength,deflength,default$,col#,property,charsetid,chars
etform,spare1,spare2,spare3)values(:1,:2,:3,:4,:5,:6,decode(:7,0,null,:7),decode
(:5,2,decode(:8,-127/*MAXSB1MINAL*/,null,:8),178,:8,179,:8,180,:8,181,:8,182,:8,
183,:8,231,:8,null),:9,0,:10,:11,decode(:12,0,null,:12),:13,:14,:15,:16,:17,:18,
:19,:20)
SQL>
SQL>
[/php]
我們雖然不能找到sql,但是我們已經能發現這個session,kill之:)
如果問題已經發生了,我們只能用logmnr來分析arch了,但是在這里ctas的ddl在arch中也是類似對數據字典的操作:
[php]
SQL> select SQL_REDO,OPERATION,seg_name,SEG_OWNER from logmnr1;
SQL_REDO
--------------------------------------------------------------------------------
OPERATION
--------------------------------
SEG_NAME
--------------------------------------------------------------------------------
SEG_OWNER
--------------------------------
insert into "UNKNOWN"."OBJ# 30361"("COL 1","COL 2","COL 3","COL 4","COL 5","COL
6") values (HEXTORAW('c3056005'),HEXTORAW('524d414e'),HEXTORAW('44424d535f524356
4d414e'),HEXTORAW('5041434b41474520424f4459'),HEXTORAW('c21925'),HEXTORAW('20202
0202020414e4420286e65656473746279206973204e554c4c204f520a'));
DIRECT INSERT
insert into "UNKNOWN"."OBJ# 30361"("COL 1","COL 2","COL 3","COL 4","COL 5","COL
6") values (HEXTORAW('c3056006'),HEXTORAW('524d414e'),HEXTORAW('44424d535f524356
4d414e'),HEXTORAW('5041434b41474520424f4459'),HEXTORAW('c21926'),HEXTORAW('20202
020202020202020206e766c2869735f7374616e6462792c20274e2729203d206465636f6465286e6
56564737462792c2054525545232c202759272c20274e2729290a'));
DIRECT INSERT
insert into "UNKNOWN"."OBJ# 30361"("COL 1","COL 2","COL 3","COL 4","COL 5","COL
6") values (HEXTORAW('c3056007'),HEXTORAW('524d414e'),HEXTORAW('44424d535f524356
4d414e'),HEXTORAW('5041434b41474520424f4459'),HEXTORAW('c21927'),HEXTORAW('20202
0204f5244455220425920746872656164232c206c6f775f73636e2c20616c5f7374616d702064657
3633b0a'));
DIRECT INSERT
insert into "UNKNOWN"."OBJ# 30361"("COL 1","COL 2","COL 3","COL 4","COL 5","COL
6") values (HEXTORAW('c3056008'),HEXTORAW('524d414e'),HEXTORAW('44424d535f524356
4d414e'),HEXTORAW('5041434b41474520424f4459'),HEXTORAW('c21928'),HEXTORAW('2d2d2
05468697320637572736f722069732075736564206279206b726d6b646d7228292e20206b726d6b6
46d72282920757365730a'));
DIRECT INSERT
……SQL> select object_name from dba_objects where object_id='30361';
OBJECT_NAME? ?? ?? ?? ?? ?? ???OBJECT_TYPE
------------------------------ ------------------
X3? ?? ?? ?? ?? ?? ?? ?? ?? ???TABLE
.
[/php]
[本帖最后由 jimmyhe1981 于 2008-1-21 23:28 編輯]
總結
以上是生活随笔為你收集整理的se.arch.php,arch暴涨,数据库差点挂。请教的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于pythonGUI的图形绘图及图元编
- 下一篇: 动态规划算法php,php算法学习之动态