[20241115]gdb检查选择进程注意.txt

来源:这里教程网 时间:2026-03-03 20:49:32 作者:

[20241115]gdb检查选择进程注意.txt --//前一段时间写ext_kglob.sh脚本,选择ora_dbw0_<sid>进程有点不妥. --//通过演示说明问题: 1.环境: SCOTT@book01p> @ver2 ============================== PORT_STRING                   : x86_64/Linux 2.4.xx VERSION                       : 21.0.0.0.0 BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production CON_ID                        : 0 PL/SQL procedure successfully completed. 2.测试: $ ps -ef| grep ora_dbw[0] oracle    2761     1  0 08:13 ?        00:00:00 ora_dbw0_book --//window 1: $ rlgdb -f -p 2761 Loaded symbols for /u01/app/oracle/product/21.0.0/dbhome_1/lib/libshpkavx2.so 0x00007f90f45fcfca in semtimedop () at ../sysdeps/unix/syscall-template.S:81 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/src/debug/glibc-2.17-c758a686/sysdeps/unix/syscall-template.S:81:3374:beg:0x7f90f45fcfca (gdb) --//开始我一直没注意下划线内容.实际如果你使用gdb检查普通用户进程是看不见类似内容的. --//以sys用户登录.执行: --//session 1: SYS@book> alter system checkpoint ; --//挂起.. SYS@book> @ ashtop event,p1raw,p1,p3raw 1=1 &30s     Total                                                                                                                                Distinct Distinct    Distinct   Seconds     AAS %This   EVENT                          P1RAW             P1 P3RAW            FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1 --------- ------- ------- ------------------------------ ---------------- --- ---------------- ------------------- ------------------- ---------- -------- -----------        30     1.0   77% | DLM cross inst call completion 0000000000000001   1 0000000000000008 2024-11-15 08:38:06 2024-11-15 08:38:35          1       30          30         4      .1   10% |                                                 300                  2024-11-15 08:38:12 2024-11-15 08:38:24          1        4           4         2      .1    5% |                                                   3                  2024-11-15 08:38:06 2024-11-15 08:38:13          1        2           2         2      .1    5% |                                                 100                  2024-11-15 08:38:12 2024-11-15 08:38:16          1        2           2         1      .0    3% |                                                  20                  2024-11-15 08:38:20 2024-11-15 08:38:20          1        1           1 --//window 1,按c继续: (gdb) c Continuing. --//session 1: SYS@book> alter system checkpoint ; System altered. --//也就是选择ora_dbw0_<sid>进程有点不妥,可能影响正常的业务.必须选择1个后台进程,不大可能影响正常的业务. SYS@book> @ bgkill mmon       INDX KSUPRPNM                       PROCESS_FLAG      KSUPRPID ---------- ------------------------------ ----------------- ------------------------         29 oracle@centtest (MMON)                         2 2791 --//我也不知道该选择那个后台进程.最终选择mmon,kill该进程可以再次生成. $ ps -ef | grep mmo[n] oracle    2791     1  0 08:13 ?        00:00:03 ora_mmon_book $ kill -9 2791 $ ps -ef | grep mmo[n] --//等上一小会发现可以再次建立mmon进程. $ ps -ef | grep mmo[n] oracle    4177     1  6 08:52 ?        00:00:00 ora_mmon_book --//进程号已经变化. --//alert*.log出现如下信息: Restarting dead background process MMON Starting background process MMON 2024-11-15T08:52:02.740413+08:00 MMON started with pid=29, OS id=4177 3.附上bgkill.sql脚本: $ cat bgkill.sql column KSUPRPNM format a30 SELECT indx,ksuprpnm,TO_CHAR(ksuprflg,'XXXXXXXXXXXXXXXX') process_flag,KSUPRPID FROM x$ksupr WHERE BITAND(ksuprflg,4) != 4 and KSUPRPID is not null  and ksuprpnm like upper('%&&1%') ORDER BY indx ; --//该脚本用来确定后台进程是否可以kill.

相关推荐