• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            tbwshc

            tbw

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              95 Posts :: 8 Stories :: 3 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(4)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            背景:先前在生產(chǎn)庫(kù)上配置了oracle監(jiān)控,每5分鐘嘗試連接一次數(shù)據(jù)庫(kù),若連接失敗則通過(guò)nagios+fetion自動(dòng)報(bào)警,此配置參考文章:http://ylw6006.blog.51cto.com/470441/787496

            早晨收到報(bào)警信息后,登陸數(shù)據(jù)庫(kù)執(zhí)行ps -ef查看oracle的后臺(tái)進(jìn)程都在,使用conn /as sysdba的方式登陸數(shù)據(jù)庫(kù),提示連接到空閑的實(shí)例,使用easy connect 方式連接則報(bào)oracle實(shí)例無(wú)法分配內(nèi)存,從報(bào)錯(cuò)提示上看,就像oracle數(shù)據(jù)庫(kù)實(shí)例未打開(kāi)的狀態(tài)!分析alert日志不斷出現(xiàn)如下錯(cuò)誤信息:
            Process J002 died, see its trace file
            kkjcre1p: unable to spawn jobq slave process
            Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_cjq0_18577.trc:

            trace文件摘要信息如下:
            *** 2012-07-26 10:20:31.068
            Process J002 is dead (pid=13857 req_ver=1136 cur_ver=1136 state=KSOSP_SPAWNED).

            *** 2012-07-26 10:20:32.069
            Process J002 is dead (pid=13876 req_ver=1594 cur_ver=1594 state=KSOSP_SPAWNED).

            google查詢一番后,發(fā)現(xiàn)大部分描述和oracle的進(jìn)程數(shù)設(shè)置有關(guān),又或者是內(nèi)存不足引起!于是在oracle 10g環(huán)境下測(cè)試,線上數(shù)據(jù)庫(kù)環(huán)境為11.2.0.3

            一:設(shè)置processes初始化參數(shù)值為20,重啟數(shù)據(jù)庫(kù)后,已經(jīng)占用19個(gè)進(jìn)程

            1. SQL> select count(*) from v$process;  
            2.  
            3.   COUNT(*)  
            4. ----------  
            5.         19  
            6.  
            7. SQL> show parameter process;  
            8.  
            9. NAME                                 TYPE        VALUE  
            10. ------------------------------------ ----------- ------------------------------  
            11. aq_tm_processes                      integer     0  
            12. db_writer_processes                  integer     1  
            13. gcs_server_processes                 integer     0  
            14. job_queue_processes                  integer     10  
            15. log_archive_max_processes            integer     2  
            16. processes                            integer     20 

            新的會(huì)話連接,則報(bào)連接到空閑的實(shí)例,alert日志則出現(xiàn)相應(yīng)的報(bào)錯(cuò)

            1. [root@db1 ~]# su - oracle  
            2. [oracle@db1 ~]$ sqlplus /nolog  
            3. SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jul 4 13:50:22 2012  
            4. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
            5.  
            6. SQL> conn /as sysdba  
            7. Connected to an idle instance.  
            8.  
            9. [oracle@db1 dbs]$ tail -f /u01/app/oracle/admin/db1/bdump/alert_db1.log   
            10. Wed Jul  4 13:52:23 2012  
            11. ksvcreate: Process(q000) creation failed  
            12. Wed Jul  4 13:52:35 2012  
            13. Process q001 died, see its trace file  
            14. Wed Jul  4 13:52:35 2012  
            15. ksvcreate: Process(q001) creation failed  
            16. Wed Jul  4 13:52:37 2012  
            17. Process m000 died, see its trace file  
            18. Wed Jul  4 13:52:37 2012  
            19. ksvcreate: Process(m000) creation failed 

            二:于是想到監(jiān)控oracle的進(jìn)程和會(huì)話數(shù)來(lái)進(jìn)一步確定問(wèn)題
            1:首先要對(duì)用戶進(jìn)行顯示授權(quán),否則后面創(chuàng)建存儲(chǔ)過(guò)程編譯將會(huì)報(bào)錯(cuò)

            1. SQL> grant select on V_$SESSION tbo hr;  
            2. Grant succeeded.  
            3.  
            4. SQL> grant select on V_$PROCESS to hr;  
            5. Grant succeeded. 

            2:建表,用來(lái)存儲(chǔ)結(jié)果

            1. SQL> create table session_monitor(time timestamp,session_count number,process_count number);  
            2. Table created. 

            3:創(chuàng)建存儲(chǔ)過(guò)程,將數(shù)據(jù)插入表

            1. SQL> create or replace procedure proc_session  
            2.   2  is  
            3.   3  v_session number(8);  
            4.   4  v_process number(8);  
            5.   5  begin  
            6.   6   select count(*) into v_session from v$session;  
            7.   7   select count(*) into v_process from v$process;  
            8.   8   insert into session_monitor values (sysdate,v_session,v_process);  
            9.   9   commit;  
            10.  10  end proc_session;  
            11. Procedure created. 

            4:創(chuàng)建任務(wù)

            1. SQL> var job number;  
            2. SQL> begin  
            3.   2    sys.dbms_job.submit(job => :job,  
            4.   3                        what => 'proc_session();',  
            5.   4                        next_date => sysdate,  
            6.   5                        interval => 'sysdate+2/1440');  
            7.   6* end;  
            8. PL/SQL procedure successfully completed. 

            5:測(cè)試效果

            1. SQL> exec proc_session;  
            2. PL/SQL procedure successfully completed.  
            3.  
            4. SQL> alter session set nls_date_format='YYYY-MM-DD-HH24:MI:SS';  
            5. Session altered.  
            6.  
            7. SQL>  select * from session_monitor;  
            8.  
            9. TIME                                     SESSION_COUNT PROCESS_COUNT  
            10. ---------------------------------------- ------------- -------------  
            11. 26-JUL-12 03.02.12.000000 PM                       140           155  
            12. 26-JUL-12 03.02.14.000000 PM                       141           157  
            13.  
            14. SQL> select job,next_date from user_jobs where what='proc_session();';  
            15.  
            16.        JOB NEXT_DATE  
            17. ---------- -------------------  
            18.        145 2012-07-26-15:04:14  
            19.  
            20. SQL> select * from session_monitor;  
            21.  
            22. TIME                                     SESSION_COUNT PROCESS_COUNT  
            23. ---------------------------------------- ------------- -------------  
            24. 26-JUL-12 03.04.14.000000 PM                        87            94  
            25. 26-JUL-12 03.02.12.000000 PM                       140           155  
            26. 26-JUL-12 03.02.14.000000 PM                       141           157 

            6:如果要?jiǎng)h除任務(wù),則運(yùn)行下列的命令,145代表user_jobs視圖中的job列

            1. SQL> begin  
            2.   2  dbms_job.remove(145);  
            3.   3  end;  
            4. PL/SQL procedure successfully completed. 

            三:使用nagios+fetion,定時(shí)去監(jiān)控會(huì)話和進(jìn)程數(shù)
            1:創(chuàng)建監(jiān)控腳本,該腳本放任務(wù)計(jì)劃中運(yùn)行,每2分鐘自動(dòng)執(zhí)行

            1. [root@server240 libexec]# cat session_oracle.sh   
            2. #!/bin/sh  
            3. rm -rf /tmp/session_oracle.log  
            4. export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db1  
            5. /u01/app/oracle/product/11.2.0/db1/bin/sqlplus hr/hr@192.168.1.240:1521/orcl <<EOF 
            6. set echo off  
            7. set feedback off  
            8. spool /tmp/session_oracle.log  
            9. alter session set nls_date_format='YYYY-MM-DD:HH24:MI:SS';  
            10. select session_count from (select * from session_monitor order by time desc ) where  rownum=1;  
            11. select process_count from (select * from session_monitor order by time desc ) where  rownum=1;  
            12. spool off  
            13. set echo on  
            14. set feedback on  EOF

            2:創(chuàng)建第二腳本,用來(lái)處理前面監(jiān)控腳本的日志輸出,將結(jié)果返回給監(jiān)控服務(wù)器

            1. [root@server240 ~]# cat /tmp/session_oracle.log
              SQL> alter session set nls_date_format='YYYY-MM-DD:HH24:MI:SS';
              SQL> select session_count from (select * from session_monitor order by time desc ) where  rownum=1;
            2. SESSION_COUNT                                                                  
              -------------                                                                  
                        138                                                                  
              SQL> select process_count from (select * from session_monitor order by time desc ) where  rownum=1;
            3. PROCESS_COUNT                                                                  
              -------------                                                                  
                        153                                                                  
              SQL> spool off
            4.  
            5. [root@server240 libexec]# cat check_oracle_session.sh   
            6. #!/bin/sh  
            7. STATE_OK=0 
            8. STATE_CRITICAL=2 
            9.  
            10. if  [ -f /tmp/session_oracle.log  ];then  
            11.      SESSION=$(grep -A 2 'SESSION_COUNT'  /tmp/session_oracle.log |tail -1|sed 's/[ ][ ]*//g')  
            12.      PROCESS=$(grep -A 2 'PROCESS_COUNT'  /tmp/session_oracle.log |tail -1|sed 's/[ ][ ]*//g')  
            13.      else   
            14.      echo "something wrong,please check monitor script"  
            15.      exit $STATE_CRITICAL  
            16. fi  
            17.  
            18. if   [ $SESSION -gt 500 ] || [ $PROCESS -gt 500 ];then   
            19.      echo "Current session is $SESSION,process is $PROCESS "  
            20.      exit $STATE_CRITICAL  
            21.      else   
            22.        echo "Current session is $SESSION,process is $PROCESS "  
            23.        exit $STATE_OK  
            24. fi 

            四:實(shí)際效果
            [root@server198 ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.240 -c check_oracle_session
            Current session is 138,process is 153

            五:后期觀察結(jié)果,估計(jì)和內(nèi)存問(wèn)題相關(guān)
            [oracle@server240 ~]$ sar -r |grep 10:20
            10:20:02 AM   3481492  21195164     85.89    675584  13661448   3683012    413552     10.10     
            [oracle@server240 ~]$ sar -r |grep 04:40
            04:40:01 PM   2076748  22599908     91.58    734088  14581728   4048864     47700      1.16

            posted on 2012-07-28 12:43 tbwshc 閱讀(1053) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久亚洲精品成人av无码网站| 久久久久亚洲AV无码去区首| 国产亚洲婷婷香蕉久久精品| 久久久久亚洲AV无码专区桃色| 国产美女亚洲精品久久久综合| 国产亚洲精品美女久久久| 久久久久久极精品久久久| 一本一本久久A久久综合精品| 精品久久一区二区三区| 伊人久久大香线蕉AV一区二区| 国产亚洲精品美女久久久| 色综合久久88色综合天天 | 国产麻豆精品久久一二三| 亚洲人成电影网站久久| 欧美久久综合性欧美| 日韩人妻无码一区二区三区久久| 国产—久久香蕉国产线看观看 | 久久婷婷国产综合精品| 久久97久久97精品免视看| 久久久久人妻一区精品性色av| 亚洲AⅤ优女AV综合久久久| 欧美久久综合性欧美| 波多野结衣中文字幕久久| 一本色道久久88—综合亚洲精品| 精品人妻伦一二三区久久| 国产精品青草久久久久婷婷| 精品无码久久久久国产动漫3d| 久久久久无码国产精品不卡| 久久九九有精品国产23百花影院| 久久婷婷五月综合97色| 久久久一本精品99久久精品66| 久久亚洲AV无码精品色午夜麻豆| 久久天天躁狠狠躁夜夜2020| 久久av高潮av无码av喷吹| 国产精品免费久久久久电影网| 色噜噜狠狠先锋影音久久| 国产成人精品综合久久久久 | 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲国产另类久久久精品小说| 伊人久久大香线蕉AV一区二区 | 久久精品国产亚洲av影院|