[20241114]建立完善mod_addr.sh脚本.txt --//写一个简单修改内存地址相应值的gdb命令,主要gdb操作不支持rlwrap历史命令列表,这样操作快一些。 $ cat mod_addr.sh #/bin/bash # modify address value # arg1=address arg2=offset (default 0) arg3=value (default 0) offset=${2:-0} value=${3:-0} gdb -q -batch -p $(pgrep -f ora_mmon_${ORACLE_SID}) -ex "set *( int *)(0x${1}+0x${offset})=0x${value}" -ex "x /wx 0x${1}+0x${offset}" -ex "quit" | grep "^0x" | grep -v "^0x0" --//简单测试: SCOTT@book01p> alter session set session_cached_cursors=0; Session altered. --//这样每次都会软解析。 SCOTT@book01p> select * from dept where deptno=40; DEPTNO DNAME LOC ---------- ------------------------------ ------------- 40 OPERATIONS BOSTON SCOTT@book01p> @ hash HASH_VALUE SQL_ID CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX SQL_EXEC_START SQL_EXEC_ID ---------- ------------- ------------ ---------- --------------- ---------- ------------------- ----------- 3912471479 14ymr4znm74xr 0 103351 2852011669 e93393b7 2024-11-14 09:18:39 16777216 SYS@book> oradebug setmypid Statement processed. SYS@book> oradebug dump library_cache 4; Statement processed. SYS@book> @ t TRACEFILE -------------------------------------------------------------------------------- /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3719.trc $ grep 103351 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3719.trc Bucket: #=103351 Mutex=0x7309f5c0(639950127104, 11, 0, 6) --//mutex地址在0x7309f5c0。 $ disp_addr.sh 7309f5b0 0 12 wx 0x7309f5b0: 0x62b283d0 0x00000000 0x62b283d0 0x00000000 0x7309f5c0: 0x00000000 0x00000000 0x00000001 0x00000000 ~~~~~~~~~~ 0x7309f5d0: 0x000193b7 0x00000000 0x62820b38 0x00000000 --//修改下划线值。 $ ./mod_addr.sh 7309f5c8 0 0 0x7309f5c8: 0x00000000 $ disp_addr.sh 7309f5b0 0 12 wx 0x7309f5b0: 0x62b283d0 0x00000000 0x62b283d0 0x00000000 0x7309f5c0: 0x00000000 0x00000000 0x00000000 0x00000000 0x7309f5d0: 0x000193b7 0x00000000 0x62820b38 0x00000000 $ ./mod_addr.sh 7309f5c0 4 1 0x7309f5c4: 0x00000001 $ disp_addr.sh 7309f5b0 0 12 wx 0x7309f5b0: 0x62b283d0 0x00000000 0x62b283d0 0x00000000 0x7309f5c0: 0x00000000 0x00000001 0x00000000 0x00000000 0x7309f5d0: 0x000193b7 0x00000000 0x62820b38 0x00000000 --//这样会出现阻塞。 $ ./mod_addr.sh 7309f5c4 0 0 0x7309f5c4: 0x00000000 $ disp_addr.sh 7309f5b0 0 12 wx 0x7309f5b0: 0x62b283d0 0x00000000 0x62b283d0 0x00000000 0x7309f5c0: 0x00000000 0x00000000 0x00000001 0x000001c6 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 0x7309f5d0: 0x000193b7 0x00000000 0x62820b38 0x00000000 --//gets数量+1,sleeps数量增加。
[20241114]建立完善mod_addr.sh脚本.txt
来源:这里教程网
时间:2026-03-03 20:49:25
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle数据库如何模拟ORA-600 [4193]错误?如何解决?
Oracle数据库如何模拟ORA-600 [4193]错误?如何解决?
26-03-03 - shutdown abort关库,真的有可能起不来吗?
shutdown abort关库,真的有可能起不来吗?
26-03-03 - 又是windown服务器断电引起的ora-00333
又是windown服务器断电引起的ora-00333
26-03-03 - 同事不小心drop column了一个列,真的凉凉了吗?
同事不小心drop column了一个列,真的凉凉了吗?
26-03-03 - 数据库数据恢复—Oracle数据库数据恢复案例
数据库数据恢复—Oracle数据库数据恢复案例
26-03-03 - 企业数据管理是否“镜花水月”
企业数据管理是否“镜花水月”
26-03-03 - Oracle自动处理表空间不足脚本
Oracle自动处理表空间不足脚本
26-03-03 - 如何一键完成20个Oracle实例运维脚本部署
如何一键完成20个Oracle实例运维脚本部署
26-03-03 - 03 高效调优:Oracle内存体系的精细化管理实践
03 高效调优:Oracle内存体系的精细化管理实践
26-03-03 - 01 Oracle 数据库存储结构深度解析:从数据文件到性能优化的全链路探究
