http://www.itpub.net/thread-613256-1-1.html
高手请进,v$session_longops 中的message 的具体含义
我今天发现短信处理程序比较慢
处理过程如下 :
1 . 查看这个程序一直运行这个语句
select record_sn ,sp_number ,charge_number ,user_number ,corp_id
,service_type ,fee_type ,fee_value ,given_value ,agent_flag ,mo
_relate_flag ,priority ,report_flag ,message_coding ,message_con
tent into :b0,:b1,:b2,:b3,:b4,:b5,:b6,:b7,:b8,:b9,:b10,:b11,:b12
,:b13,:b14 from sm_send where (((ROWNUM=1 and fee_value>'000000
') and record_time<SYSDATE) and flag=:b15)
索引都键上拉,没有什么问题, 执行计划中 cost=3
2. 查看记录数
select sysdate,count(*) from sm_send
2006-8-15 16:06:51 105769
3. 检查这个表的扩展情况
select segment_name,sum(bytes)/(1024*1024) m,count(*)
from dba_extents where segment_name='SM_SEND'
group by segment_name
SM_SEND 240 110
4 . 检查 v$session_longops
select * from v$session_longops where sid=94
94 是这个程序对应的 sid , 发现在 messages 这一列中有这样不少的信息
Table Scan: CRBT.SM_SEND: 28589 out of 61221 Blocks done
Table Scan: CRBT.SM_SEND: 28447 out of 61221 Blocks done
Table Scan: CRBT.SM_SEND: 28588 out of 61221 Blocks done
搞不清楚这个是怎么回事? 请各位大侠看看 这些 messages 信息中什么意思 ??????????
Table Scan: CRBT.SM_SEND: 28589 out of 61221 Blocks done
v$session_longops中记录查询时间大于6秒的查询,message输出这个查询正的进度,
比如表总共有61221个块,已经扫描完成了28589个block...
Table Scan: CRBT.SM_SEND: 28589 out of 61221 Blocks done
表扫描:总块数61221,已处理28589
谢谢,各位大侠,
今天我
1.
sql> create table sm_send_wrj0816 as select * from sm_send
2. truncate 表
truncate table sm_send
3. 在 把 原数据给插入
SQL> insert into sm_send select * from sm_send_wrj0816;
72773 rows created.
SQL> commit;
Commit complete.
4. 分析表和索引
analyze table sm_send compute statistics for all indexes for all indexed columns
这样那个占用30%-50% cpu 的进程马上就消失拉