Search notes:

ORADEBUG

oradebug is a debugging tool that (among others) allows to inspect and change memory in the instance.
The commands of this tool are executed from within SQL*Plus by prepending the commands with oradebug. The SQL*Plus session needs to run with the SYSDBA system privilege (otherwise, the error ORA-01031: insufficient privileges is thrown).
Command arguments Description
HELP [command] Describe one or all commands
SETMYPID Debug current process
SETOSPID <ospid> Set OS pid of process to debug
SETORAPID <orapid> ['force'] Set Oracle pid of process to debug
SETORAPNAME <orapname> Set Oracle process name to debug
SHORT_STACK Get abridged OS stack
CURRENT_SQL Get current SQL
DUMP <dump_name> <lvl> [addr] Invoke named dump
PDUMP [interval=<interval>] [ndumps=<count>] <dump_name> <lvl> [addr] Invoke named dump periodically
DUMPSGA [bytes] Dump fixed SGA
DUMPLIST Print a list of available dumps
EVENT <text> Set trace event in process
EVENTDUMP session | system | process |… ? Not found using oradebug help, but see oradebug doc event action eventdump.
SESSION_EVENT <text> Set trace event in session
DUMPVAR <pga | uga | sga> <name> [level] Print/dump a fixed PGA/SGA/UGA variable
DUMPTYPE <address> <type> <count> Print/dump an address with type info
SETVAR <p|s|uga> <name> <value> Modify a fixed PGA/SGA/UGA variable
PEEK <addr> <len> [level] Print/Dump memory
POKE <addr> <len> <value> Modify memory
WAKEUP <orapid> Wake up Oracle process
SUSPEND Suspends the execution of a session, see also resume (and wakeup?)
RESUME Resume the exection of a session that was stopped with suspend.
FLUSH Flush pending writes to trace file
CLOSE_TRACE Close trace file
TRACEFILE_NAME Get name of trace file
SETTRACEFILEID <identifier name> Set tracefile identifier
LKDEBUG Invoke global enqueue service debugger
NSDBX -G <Inst-List | def | all | cluster > Nodes involved
NSDBX -R <Inst-List | def | all | cluster > Nodes involved (return output)
SETINST <instance# .. | all> Set instance list in double quotes
SGATOFILE <SGA dump dir> Dump SGA to file; dirname in double quotes
DMPCOWSGA <SGA dump dir> Dump & map SGA as COW; dirname in double quotes
MAPCOWSGA <SGA dump dir> Map SGA as COW; dirname in double quotes
HANGANALYZE [level] [syslevel] Analyze system hang
FFBEGIN Flash Freeze the Instance
FFDEREGISTER FF deregister instance from cluster
FFTERMINST Call exit and terminate instance
FFRESUMEINST Resume the flash frozen instance
FFSTATUS Flash freeze status of instance
SKDSTTPCS <ifname> <ofname> Helps translate PCs (= proc calls?) to names
WATCH <addr> <len> <self|exist|all|target> [hw [write|rw|exec]] Watch a region of memory
DELETE <local|global|target> watchpoint <id> Delete a watchpoint
SHOW <local|global|target> watchpoints Show watchpoints
DIRECT_ACCESS <set/enable/disable command | select query> Fixed table access
IPC Dump ipc information
IPC_TRACE <module> <trace_flags> <trace_level> Modify IPC trace flags
IPC_CHECKSUM <light/medium/full> Enable/Disable IPC Checksumming
UNLIMIT Unlimit the size of the trace file
CALL [-t count] <func> [arg1]...[argn] Invoke function with arguments
TRANSLATE_ADDR <address> … Translate memory-addresses to symbol names
CORE Dump core without crashing process
PROCSTAT Dump process statistics
DOC event [name|scope|filter|action] Help on events (syntax, event list, …)
DOC component [<comp_name>] List all components or describe <comp_name>
MEMANOTDUMP <shared|private> level An undocumented command (see also the parameters _mem_annotation_pr_lev, _mem_annotation_scale, _mem_annotation_sh_lev, _mem_annotation_store
MEMANOTEND <shared|private> An undocumented command
UNIT_TEST
PATCH [list|install|remove|disable|enable] <patch>
DYN_GCR
On Unix, oradebug sends a SIGUSR2 signal to the inspected process.

Init parameters

Init parameters that are related to oradebug can be queried like so
select
   ksppinm,
   ksppdesc
from
   x$ksppi
where
   lower(ksppinm ) like '%oradebug%' or
   lower(ksppdesc) like '%oradebug%'
order by
   ksppinm;
--
--   KSPPINM                               KSPPDESC
--   ------------------------------------  -------------------------------------------------------------
--   _disable_oradebug_commands            disable execution of certain categories of oradebug commands
--   _hm_analysis_oradebug_sys_dump_level  the oradebug system state level for hang manager hang analysis
--   _ksdx_charset_ratio                   ratio between the system and oradebug character set
--   _ksdxdocmd_default_timeout_ms         default timeout for internal oradebug commands
--   _oradebug_cmds_at_startup             oradebug commands to execute at instance startup
--   _oradebug_force                       force target processes to execute oradebug commands?
Note that the default value of _disable_oradebug_commands changed from none to restricted in 21.3 and 23.3 which explains why certain commands «suddenly» don't work any more.

TODO

select *
from
   sys.unified_misc_audited_actions
where
   name like '%ORADEBUG%';

select * from ku$_dummy_dv_oradebug_v;

desc ku$_dummy_dv_oradebug_t;

See also

oradebug help
Tracing SQL statement execution

Index