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  的进程马上就消失拉