Oracle服务器系统负载过高的处理

1.检查系统 top命令显示系统 load averages: 99.90, 117.54, 125.71  

  观察cpu使用率不高。 iowait 高!

 

2.检查进程数量

  ps -ef|grep oracle|wc -l   显示进程数量大概在150左右

3.检查数据库

   查询v$session_wait获取各进程等待事件

 

SQL> select sid,event,p1,p1text from v$session_wait;

       SID EVENT                                  P1 P1TEXT
       ----- --------------------------------------------------   

       124 latch free                     1.6144E+10 address
         1 pmon timer                            300 duration
         2 rdbms ipc message                     300 timeout
         3 rdbms ipc message                     300 timeout
        11 rdbms ipc message                   30000 timeout
         6 rdbms ipc message                  180000 timeout
         4 rdbms ipc message                     300 timeout
       134 rdbms ipc message                    6000 timeout
       147 rdbms ipc message                    6000 timeout
       275 rdbms ipc message                   17995 timeout
       274 rdbms ipc message                    6000 timeout

SQL> select event,count(*)  from v$session_event group by event order by count(*) desc ;
SQL*Net message from client                                             156
SQL*Net message to client                                                156
db file sequential read                                                  250
latch free                                                               49
1log file sync                                                            30
db file scattered read                                                   25
buffer busy waits                                                        23
log file switch completion                                               17
SQL*Net more data to client                                              16

     发现数据库系统有  大量 sequential read 事件。

    select sid,event from v$session_wait where event in ('file sequential read ')

     得到等待事件的 id

     然后通过id  获得sql 语句。

     SELECT sql_text FROM v$sqltext a WHERE a.hash_value = (SELECT sql_hash_value
                           FROM v$session b WHERE b.SID = '&sid') ORDER BY piece ASC

 

    

    使用该应用用户连接,检查该语句的执行计划:

       SQL> set autotrace trace explain
      

     检查表的索引:

     SQL> select index_name,column_name from user_ind_columns  where table_name ='HS_INFO';

    检查该表,存在以下索引:

SQL> select index_name,index_type from user_indexes where table_name='HS_INFO';

    

   检查索引键值:

SQL> select index_name,column_name from user_ind_columns  where table_name ='HS_INFO';

决定创建新的索引以消除全表扫描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值