Warning! This is a post about Oracle database internals for internals lovers and researchers. For normal, functional administration, this post serves no function. The post shows a little tool I created which consists of a small database I compiled with Oracle database C function names and a script to query it. The reason that keeping such a database makes sense in the first place, is because the Oracle C functions for the Oracle database are setup in an hierarchy based on the function name. This means you can deduct what part of the execution you are in by looking at the function name; for example ‘kslgetl’ means kernel service lock layer, get latch.
To use this, clone git repository at https://gitlab.com/FritsHoogland/ora_functions.git
Use the ‘sf.sh’ (search function) script to query the functions. The script uses sqlite3, use the sqlite rpm package to add this (on linux), or use the packaging method of your platform.
This is how to use sf.sh :
$ ./sf.sh kglGetMutex kglGetMutex -- kernel generic lock management ---
This shows the sf.sh script could find the first 3 letters (underlined), which probably mean kernel generic lock management. It couldn’t find ‘GetMutex’ however that is so self-explanatory that it doesn’t need annotation.
This is how a full function annotation looks like:
$ ./sf.sh qercoFetch qercoFetch -- query execute rowsource count fetch ----------
Here the full function is underlined, which means the entire function is found.
If you found explanations for Oracle database code locations, or found an error in the annotation (I made assumptions here and there), please send them to email@example.com, or react to this post, so I can add or update it.