ITPub博客

首页 > 数据库 > Oracle > [20241107]建立完善ext_kglob.sh脚本.txt

[20241107]建立完善ext_kglob.sh脚本.txt

原创 Oracle 作者:lfree 时间:2024-11-06 20:17:08 0 删除 编辑

[20241107]建立完善ext_kglob.sh脚本.txt

--//一些环境的gdb版本太旧,不支持管道操作,将两者结合起来写成一个脚本。

$ cat ext_kglob.sh
#/bin/bash
# extrace object string from object handle address
# arg1 = address arg2 = offset arg3 = p or other p=pipe

pipe=${3:-p}
offset=${2:-1c8}

if [ "$pipe" == "p" ] ; then
    echo x/s 0x${1}+0x${offset} | gdb -q -p $(pgrep -f ora_dbw0_${ORACLE_SID}) | grep '^(gdb)'
else
    echo -e "x/s 0x${1}+0x${offset}\nquit\n" >| /tmp/ext_kglob.tmp
    gdb -q -batch -p $(pgrep -f ora_dbw0_${ORACLE_SID}) -x /tmp/ext_kglob.tmp | grep  "^0x" | grep -v "0x0"
fi

--//简单测试看看:

SYS@book> @ sharepool/shp4p 80baj2c2ur47u 0
SYS@book> @ pr
==============================
HANDLE_TYPE                   : parent handle address
KGLHDADR                      : 000000006E6CD0D8
KGLHDPAR                      : 000000006E6CD0D8
C40                           : select * from dept where deptno=20
KGLHDLMD                      : 0
KGLHDPMD                      : 0
KGLHDIVC                      : 0
KGLOBHD0                      : 000000006FE20100
KGLOBHD6                      : 00
KGLOBHS0                      : 4064
KGLOBHS6                      : 0
KGLOBT16                      : 0
N0_6_16                       : 4064
N20                           : 4064
KGLNAHSH                      : 95129850
KGLOBT03                      : 80baj2c2ur47u
KGLOBT09                      : 65535
PL/SQL procedure successfully completed.

$ ext_kglob.sh 000000006E6CD0D8
(gdb) 0x6e6cd2a0:       "select * from dept where deptno=20"
(gdb) quit

$ ext_kglob.sh 000000006E6CD0D8 '' 0
0x6e6cd2a0:     "select * from dept where deptno=20"

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3045437/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969459