The important thing in life is to have a great aim , and the determination

          常用鏈接

          統計

          IT技術鏈接

          保險相關

          友情鏈接

          基金知識

          生活相關

          最新評論

          如何查看及解決最耗cpu的sql語句

          1.      如何查看及解決最耗CPUSQL語句1.1.  top監控服務器負載

          [root@node1 ~]# top

          top - 22:51:02 up 56 min,  1 user,  load average: 0.00, 0.00, 0.00

          Tasks:  96 total,   1 running,  95 sleeping,   0 stopped,   0 zombie

          Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

          Mem:   1035096k total,   351488k used,   683608k free,    24140k buffers

          Swap:  2096472k total,        0k used,  2096472k free,   270360k cached

            PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND               

              1 root      15   0  2084  660  560 S  0.0  0.1   0:00.22 init                    

              2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0   

                   如果發現user中的CPU過高,比如oracle中最高的進程pid1138782,占CPU27%,則執行下一步。

          1.2.  查詢數據庫會話的sidserial#

          進入數據庫,根據oracle進程的pid查出對應數據庫會話的sid、serial#

          select s.sid,s.serial#

          from v$session s,v$process p

          where s.paddr=p.addr and p.spid='1138782';

                   查詢出來的結果sidserial#分別為482、56767

          1.3.  查詢SQL語句

          根據數據庫會話的sid查出具體的SQL語句:

          desc v$sqltext

          名稱                                      是否為空? 類型

          ----------------------------------------- -------- --------------

          ADDRESS                                            RAW(4)

          HASH_VALUE                                         NUMBER

          COMMAND_TYPE                                      NUMBER

          PIECE                                               NUMBER

          SQL_TEXT                                           VARCHAR2(64)

          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;

          輸入 sid 的值:

          1.4.  處理SQL語句

          如果SQL語句影響了數據庫的運行,可以killSQL語句的會話:

          ①在數據庫中殺死SQL語句的會話:

          alter system kill session '482,56767';

                   如果不能在數據庫中殺死SQL語句,可在LINUX系統中強制殺死Oracle進程

                   ②在linux系統中強制殺死oracle進程

          #kill -9 1138782

          1.5.  SQL語句優化

          最后可以根據步驟(3)查詢出來的SQL語句進行優化,以避免再次出現上述消耗CPU的情況。

          posted on 2014-05-11 19:44 鴻雁 閱讀(226) 評論(0)  編輯  收藏 所屬分類: 數據庫

          主站蜘蛛池模板: 东城区| 开封县| 资溪县| 博湖县| 巴林左旗| 台东县| 新邵县| 甘德县| 阳谷县| 新化县| 琼海市| 越西县| 临高县| 油尖旺区| 郓城县| 灵宝市| 株洲县| 民县| 如东县| 南陵县| 新晃| 青河县| 年辖:市辖区| 建平县| 易门县| 大新县| 循化| 瑞昌市| 琼中| 获嘉县| 河西区| 江门市| 泾川县| 赤壁市| 奈曼旗| 巩义市| 株洲市| 惠州市| 瑞丽市| 仲巴县| 贵南县|