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查出對應數據庫會話的sidserial#

          select s.sid,s.serial#

          from v$session s,v$process p

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

                   查詢出來的結果sidserial#分別為48256767

          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)  編輯  收藏 所屬分類: 數據庫

          主站蜘蛛池模板: 葫芦岛市| 吉林市| 湛江市| 通海县| 玉门市| 霞浦县| 苍溪县| 静宁县| 伊春市| 信宜市| 凤凰县| 郸城县| 沈丘县| 凤阳县| 巢湖市| 乌拉特前旗| 长子县| 高雄县| 阳朔县| 石狮市| 涿州市| 绥阳县| 德化县| 色达县| 虎林市| 罗江县| 东乌珠穆沁旗| 永和县| 叙永县| 武安市| 大足县| 卢龙县| 姜堰市| 揭西县| 子长县| 孙吴县| 辽阳市| 扶余县| 神池县| 东辽县| 馆陶县|