[20250222]利用lcm.sh脚本测试软软解析(21c).txt --//利用自己写的lsm.sh脚本测试软软解析(21c). 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. $ cat loop3.txt set verify off DECLARE l_count PLS_INTEGER; BEGIN FOR i IN 1..&&1 LOOP EXECUTE IMMEDIATE 'select /*+ 9 */ count(*) from dept where deptno = 93834' INTO l_count ; END LOOP; END; / $ cat record.txt set verify off variable v_method varchar2(20) exec :v_method := '&&2'; define t=&&1; column 3 new_value 3; select decode('&3',null,'loop.txt','&&3') "3" from dual; @@ &&3 5 &&2 insert into job_times values ( sys_context ('userenv', 'sid') ,dbms_utility.get_time ,'&&2') ; commit ; @@ &&3 &&t &&2 update job_times set time_ela = dbms_utility.get_time - time_ela where sid=sys_context ('userenv', 'sid') and method= :v_method; commit; quit $ cat lcm.sh #!/bin/bash # arg1=mutex_address arg2=offset arg3=monitor_times offset=${2:-4} sleeps=${3:-20} v_addr="0x${1}+${offset}" echo "begin mutex value :" gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex "x/8wx 0x${1}" -ex "quit" | grep "^0x" | grep -v "^0x0" gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex "set *( int *)(${v_addr})=0x7777" -ex "quit" >/dev/null echo "modify mutex value :" gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex "x/8wx 0x${1}" -ex "quit" | grep "^0x" | grep -v "^0x0" echo sleep $sleeps seconds (sleep $sleeps ;gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex "set *( int *)(${v_addr})=0x0" -ex "quit" > /dev/null) & sqlplus -s -l scott/book@book01p <<EOF set echo off head off verify off feedback off define # variable my_sid number column spid new_value v_spid noprint exec :my_sid := userenv('sid'); select p.spid from v\$session s,v\$process p where s.sid = :my_sid and s.paddr=p.addr; host strace -Ttt -y -f -p #v_spid -o laji.txt > /dev/null 2>&1 & host echo "running at background : strace -Ttt -y -f -p #v_spid -o laji.txt >/dev/null 2>&1 &" host sleep 1 set define & @ loop3.txt 1 AAAA quit EOF echo "end mutex value :" gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex "x/8wx 0x${1}" -ex "quit" | grep "^0x" | grep -v "^0x0" mv -iv laji.txt mutex$(date +"%Y%m%d%H%M%S").txt --//注意在执行loop3.txt脚本前要设置set define &,在这里浪费一点点时间。 2.测试出现阻塞的mutex地址: $ zzdate;seq 10 | xargs -P 10 -IQ sqlplus -s -l scott/book@book01p @record.txt 1e5 AAAA loop3.txt > /dev/null;zzdate trunc(sysdate)+09/24+33/1440+07/86400 1740274387.729109828 trunc(sysdate)+09/24+33/1440+12/86400 1740274392.528387235 SYS@book> @ mutexprofz idn,hash,loc,maddr "ts>=trunc(sysdate)+09/24+33/1440+07/86400" -- MutexProf by Tanel Poder (http://www.tanelpoder.com) -- Showing profile of top 50 sleeps... -- column info : id idn hash hash_value=>hash_value ts=>sleep_timestamp -- req=>requesting_session blk=>blocking_session val=>mutex_value maddr=>mutex_addr SUM_SLEEPS GETS_DIFF MUTEX_TYPE IDN HASH GET_LOCATION mutex_addr OBJECT_NAME ---------- -------------- --------------- ---------- ---------- --------------------------------- -------------------- -------------------------------------------------------------------------------- 6 209507 Cursor Pin 3403546624 3403546624 kksLockDelete [KKSCHLPIN6] 000000006470C768 select /*+ 9 */ count(*) from dept where deptno = 93834 4 101357 Cursor Pin 3403546624 3403546624 kksfbc [KKSCHLFSP2] 000000006470C768 select /*+ 9 */ count(*) from dept where deptno = 93834 --//mutex_addr=000000006470C768 $ ./lcm.sh 000000006470C768 4 20 begin mutex value : 0x6470c768: 0x00000000 0x00000000 0x003d0ab0 0x00011082 0x6470c778: 0xcade0000 0x00000000 0x00000000 0x00000000 modify mutex value : 0x6470c768: 0x00000000 0x00007777 0x003d0ab0 0x00011082 0x6470c778: 0xcade0000 0x00000000 0x00000000 0x00000000 sleep 20 seconds running at background : strace -Ttt -y -f -p 5534 -o laji.txt >/dev/null 2>&1 & end mutex value : 0x6470c768: 0x00000000 0x00000000 0x003d0ab2 0x00012240 0x6470c778: 0xcade0000 0x00000000 0x00000000 0x00000000 'laji.txt' -> 'mutex20250223100352.txt' --//gets 0x003d0ab2-0x003d0ab0 = 0x2,增加2次,很好理解出现在2个GET_LOCATION:kksLockDelete [KKSCHLPIN6],kksfbc [KKSCHLFSP2] --//sleeps 0x00012240-0x00011082 = 0x11be = 4542. $ egrep "semtimedop|sched_yield|select" mutex20250223100352.txt|wc 4542 54504 363360 --//sleeps 数量完成一致。 $ egrep "getrusage" mutex20250223100352.txt 5534 10:03:31.741740 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 22306}, ru_stime={0, 12914}, ...}) = 0 <0.000114> 5534 10:03:31.742017 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 22343}, ru_stime={0, 12935}, ...}) = 0 <0.000013> 5534 10:03:31.742156 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 22394}, ru_stime={0, 12964}, ...}) = 0 <0.000012> 5534 10:03:33.130828 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 25130}, ru_stime={0, 15078}, ...}) = 0 <0.000015> 5534 10:03:35.154824 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 37851}, ru_stime={0, 24603}, ...}) = 0 <0.000014> 5534 10:03:37.159906 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 46371}, ru_stime={0, 36290}, ...}) = 0 <0.000013> 5534 10:03:39.265663 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 52974}, ru_stime={0, 44145}, ...}) = 0 <0.000010> 5534 10:03:41.329461 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 67789}, ru_stime={0, 62366}, ...}) = 0 <0.000010> 5534 10:03:43.352760 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 77030}, ru_stime={0, 74067}, ...}) = 0 <0.000012> 5534 10:03:45.354729 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 93344}, ru_stime={0, 83688}, ...}) = 0 <0.000012> 5534 10:03:47.357422 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 96057}, ru_stime={0, 99155}, ...}) = 0 <0.000013> 5534 10:03:49.364437 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 108739}, ru_stime={0, 108739}, ...}) = 0 <0.000014> 5534 10:03:51.366873 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 129227}, ru_stime={0, 132379}, ...}) = 0 <0.000007> 5534 10:03:51.519412 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 130947}, ru_stime={0, 134065}, ...}) = 0 <0.000007> 5534 10:03:51.524268 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 132742}, ru_stime={0, 134065}, ...}) = 0 <0.000048> 5534 10:03:51.525429 getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 132742}, ru_stime={0, 134065}, ...}) = 0 <0.000048> --//间隔2秒。 $ awk '{print $3}' mutex20250223100352.txt | egrep "semtimedop|getrusage|sched_yield|select" | uniq -c| head -10 3 getrusage(0x1 92 select(0, 1 getrusage(0x1 437 select(0, 1 getrusage(0x1 337 select(0, 1 getrusage(0x1 290 select(0, 1 getrusage(0x1 662 select(0, --//注意采用mutex wait scheme=1,但是开头并没有出现sched_yield. $ egrep "semtimedop|sched_yield|select" mutex20250223100352.txt|head -4 5534 10:03:31.742412 select(0, [], [], [], {0, 1000}) = 0 (Timeout) <0.040249> 5534 10:03:31.782774 select(0, [], [], [], {0, 1000}) = 0 (Timeout) <0.121680> 5534 10:03:31.904552 select(0, [], [], [], {0, 1000}) = 0 (Timeout) <0.080899> 5534 10:03:31.985592 select(0, [], [], [], {0, 1000}) = 0 (Timeout) <0.029052> --//sleeps 1毫秒。
[20250222]利用lcm.sh脚本测试软软解析(21c).txt
来源:这里教程网
时间:2026-03-03 21:36:23
作者:
编辑推荐:
- [20250222]利用lcm.sh脚本测试软软解析(21c).txt03-03
- [20250225]11g存在TIMESTAMP(13) WITH TIME ZONE数据类型吗?.txt03-03
- [20250226]sqlplus sql脚本注意参数1之类的定义.txt03-03
- OGG进程异常导致rman归档删除异常RMAN-0813703-03
- 南大通用GBase 8s数据库的压缩功能全解析03-03
- 99%的家庭沙发都买错了!湖南家居三款坐感颜值双满分03-03
- 如何将一个普通的非分区表进行分区3 Partition Exchange 方法03-03
- 记一次Oracle 19C RAC ORA-043003-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- OGG进程异常导致rman归档删除异常RMAN-08137
OGG进程异常导致rman归档删除异常RMAN-08137
26-03-03 - 记一次Oracle 19C RAC ORA-0430
记一次Oracle 19C RAC ORA-0430
26-03-03 - Oracle数据库,误删除数据文件,无任何备份情况下,完全恢复只需3步?
Oracle数据库,误删除数据文件,无任何备份情况下,完全恢复只需3步?
26-03-03 - Oracle数据库,除了DBMS_METADATA.GET_DDL以外,如何获取表定义语句?
- Oracle 19.24 补丁升级后数据库打开异常案例分析
Oracle 19.24 补丁升级后数据库打开异常案例分析
26-03-03 - 噩梦!改个参数,数据库竟然气到“拒绝上班”?
噩梦!改个参数,数据库竟然气到“拒绝上班”?
26-03-03 - 记一次Oracle Library cache lock性能卡顿案例分析
记一次Oracle Library cache lock性能卡顿案例分析
26-03-03 - DeepSeek问答,Oracle数据库的这些版本,千万别用,巨坑!
DeepSeek问答,Oracle数据库的这些版本,千万别用,巨坑!
26-03-03 - 湖南家具|泡芙储物床小户型必买,卧室省出双倍收纳
湖南家具|泡芙储物床小户型必买,卧室省出双倍收纳
26-03-03 - 表空间使用率迅速增长排查
表空间使用率迅速增长排查
26-03-03
