How to Get Function Names from the Call Stack that has Hexadecimal Numbers

作者: Maclean Liu , post on June 18th, 2008 , English Version
【本站文章除注明转载外,均为本站原创编译】
转载请注明:文章转载自: Oracle Clinic – Maclean Liu的个人技术博客 [http://www.oracledatabase12g.com/]
本文标题: How to Get Function Names from the Call Stack that has Hexadecimal Numbers
本文永久地址: http://www.oracledatabase12g.com/archives/how-to-get-function-names-from-the-call-stack-that-has-hexadecimal-numbers.html

Applies to:

Oracle Server – Enterprise Edition – Version: 9.2.0.1 to 10.2.0.4
Information in this document applies to any platform.

Goal

To get the functions from the call stack that has Hexadecimal Numbers.

As an example:

—– Call Stack Trace —–
calling                        call                entry              argument values in hex
location                      type              point              (? means dubious value)
——————– ——– ——————– —————————-
004EB9EB          CALLrel       004EC074
006D137A          CALLrel       004EB8A4                3
02889C4D          CALLreg      00000000              BFBC09D8 3
02844C0A          CALLrel       02889BC4            BFBC09D8 5B4E0A58 3FB1 0
7DB3F3E4
00568237           CALLrel        0152D7EC           BFBC09D8 5B4E0A58 3FB1 0
7DB3F3E4 3FB1 0 7DB3F3E4
004FA21C         CALLrel        005681FC            3FB1

Solution

Step 1

Note down the Hexadecimal Numbers under the ‘Calling Location’. Convert these hexadecimal numbers into Decimals.

Hex Value Decimal Value

004EB9EB  –>                 5159403

006D137A –>                  7148410

02889C4D –>                  42507341

02844C0A –>                  42224650

00568237 –>                    5669431

Step 2

Arrange these numbers in a column and save it in a infile.

5159403
7148410
42507341
42224650
5669431

Step 3

Use Oradebug utility to get the function names:

SQL> oradebug SKDSTTPCS <ifname> <ofname>

where ‘ifname’ is name of file that we created in step 2. Specify Complete path.

‘ofname’ is name of output file that would be having function names. Specify Complete path.

Output File would look like:

5159403                 _kcrrdc+1939
7148410                 _kclcls+6998
42507341               _xssrfFetchVal+77
42224650               _drlk2dchk23syl+146
5669431                 _kcrabr+567

You can use these functions to check for any known bugs.

Note: On Windows make sure that there is no space in the directory name where you are running oradebug utility.  This would result in error.

As an example, if the infile is present in ‘Documents and Settings’ folder.

C:\Documents and Settings> sqlplus / as sysdba

SQL> oradebug SKDSTTPCS infile.txt outfile.txt

ORA-09210: sftopn: error opening file
OSD-04002: unable to open file
O/S-Error: (OS 3) The system cannot find the path specified.

Donot use quotation marks in specifying the filename in oradebug command. Absolute path should be specified in the oradebug command.

This note should be used only under guidance of Oracle Support.

This may not work in all the cases. A typical scenario is running this utility may result in Hexadecimal numbers rather than function names.

References

@ Note 296123.1 – HOW TO READ THE STACK TRACE PRODUCED BY THE ORADEBUG WATCH FACILITY ON LINUX

© 2008, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.

相关文章 | Related posts:

  1. Known Oracle Internal Stack Call Meaning
  2. Getting a Stack Trace from a Oracle CORE file
  3. Understanding Bootstrap Of Oracle Database
  4. TROUBLESHOOTING: Possible Causes of Poor SQL Performance
  5. Collecting Diagnostic information for Oracle block corruption
  6. FAQ Memory Corruption
  7. Oracle Block Cache Layer And Its Corresponding Corruption Error Messages.
  8. SCRIPT TO GENERATE SQL*LOADER CONTROL FILE
  9. Script to Collect RAC Diagnostic Information (racdiag.sql)
  10. Diagnosability for CRS / EVM / RACG

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>