GENERAL
Background Processes List
SELECT b.name, p.pid
FROM gv$bgprocess b, gv$process p
WHERE b.paddr = p.addr
ORDER BY 1;
Dispatcher Processes List
SELECT d.name, p.pid
FROM gv$dispatcher d, gv$process p
WHERE d.paddr = p.addr;
Job Queue Process List
SELECT s.paddr, s.sid, j.job
FROM gv$session s, dba_jobs_running j
WHERE s.sid = j.sid;
SELECT pid
FROM gv$process
WHERE addr = '17';
Parallel Execution Slave Processes List
SELECT pid, server_name, status
FROM gv$px_process;
Shared Server Processes List
SELECT s.name, p.pid
FROM gv$shared_server s, gv$process p
WHERE s.paddr = p.addr;
SGA Variables List
SELECT ksmfsnam
FROM x$ksmfsv
WHERE ksmfsnam LIKE '%\_' ESCAPE '\';
Switches
Switch
Format
Description
-G
Parallel oradebug command prefix
-R
Parallel oradebug prefix return output
CALL
Invoke function with arguments
oradebug call [arg1] ... [argn]
SQL> oradebug call ?
CLOSE_TRACE
Close trace file
oradebug close_trace
SQL> oradebug close_trace
CORE
Dump core without crashing process
oradebug core
SQL> oradebug core
CURRENT_SQL
Get current SQL
oradebug current_sql
SYS
UWCLASS
conn / as sysdba
conn uwclass/uwclass
GRANT execute ON dbms_support
TO uwclass;
SELECT pid
FROM gv$process
WHERE addr = (
SELECT paddr
FROM gv$session
WHERE sid =
sys.dbms_support.mysid);
oradebug setorapid 26
SELECT t.tablespace_name
FROM all_tables t, all_indexes i
WHERE t.tablespace_name = i.tablespace_name;
oradebug core
DELETE
Delete a watchpoint
oradebug delete watchpoint
SQL> oradebug delete ?
DIRECT_ACCESS
Fixed table access
oradebug direct_access
TBD
DMPCOWSGA
Dump & map SGA as COW
oradebug dmpcowsga
SQL> oradebug dmpcowsga "c: emp"
DUMP
Invoke named dump
oradebug dump [addr]
-- dump_name values can be obtained from oradebug dumplist
SQL> oradebug setmypid
SQL> oradebug dump library_cache 4
Invoke ASH dump
SQL> oradebug setmypid
SQL> oradebug dump ashdump 10
DUMPLIST
Print a list of available dumps
oradebug dumplist
SQL> oradebug dumplist
Available Dumps
ADJUST_SCN
HANGDIAG_HEADER
MMAN_ALLOC_MEMORY
ALRT_TEST
HEAPDUMP
MMAN_CREATE_DEF_REQUEST
ARCHIVE_ERROR
HEAPDUMP_ADDR
MMAN_CREATE_IMM_REQUEST
ASHDUMP
HM_FW_TRACE
MMAN_IMM_REQUEST
ATSK_TEST
INSTANTIATIONSTATE
MMON_TEST
AWR_FLUSH_TABLE_OFF
IOERREMUL
MODIFIED_PARAMETERS
AWR_FLUSH_TABLE_ON
IOERREMULRNG
NEXT_SCN_WRAP
AWR_TEST
IR_FW_TRACE
OBJECT_CACHE
BC_SANITY_CHECK
JAVAINFO
OCR
BG_MESSAGES
KCBO_OBJ_CHECK_DUMP
OLAP_DUMP
BLK0_FMTCHG
KDLIDMP
OPEN_FILES
BUFFER
KRA_OPTIONS
PGA_DETAIL_CANCEL
BUFFERS
KRA_TRACE
PGA_DETAIL_DUMP
CALLSTACK
KRB_BSET_DAYS
PGA_DETAIL_GET
CHECK_ROREUSE_SANITY
KRB_CORRUPT_INTERVAL
PIN_BLOCKS
CONTEXTAREA
KRB_CORRUPT_REPEAT
PIN_RANDOM_BLOCKS
CONTROLF
KRB_CORRUPT_SIZE
POKE_ADDRESS
CROSSIC
KRB_CORRUPT_SPBAD_INTERVAL
POKE_LENGTH
CRS
KRB_CORRUPT_SPBAD_REPEAT
POKE_VALUE
CSS
KRB_CORRUPT_SPBITMAP_INTER
POKE_VALUE0
CURSOR_STATS
KRB_CORRUPT_SPBITMAP_REPEA
POOL_SIMULATOR
CURSORDUMP
KRB_CORRUPT_SPHEADER_INTER
PROCESSSTATE
CURSORTRACE
KRB_CORRUPT_SPHEADER_REPEA
REALFREEDUMP
DATA_ERR_OFF
KRB_FAIL_INPUT_FILENO
RECORD_CALLSTACK
DATA_ERR_ON
KRB_OPTIONS
RECOVERY
DBSCHEDULER
KRB_OVERWRITE_ACTION
REDOHDR
DROP_SEGMENTS
KRB_PIECE_FAIL
REDOLOGS
DUMP_ADV_SNAPSHOTS
KRB_SET_TIME_SWITCH
REFRESH_OS_STATS
DUMP_ALL_COMP_GRANULES
KRB_SIMULATE_NODE_AFFINITY
ROW_CACHE
DUMP_ALL_COMP_GRANULE_ADDR
KRB_TRACE
RULESETDUMP
DUMP_ALL_OBJSTATS
KRB_UNUSED_OPTION
RULESETDUMP_ADDR
DUMP_ALL_REQS
KRBMRSR_LIMIT
SAVEPOINTS
DUMP_PINNED_BUFFER_HISTORY
KRBMROR_LIMIT
SELFTESTASM
DUMP_TEMP
KRC_TRACE
SET_NBLOCKS
DUMP_TRANSFER_OPS
KSDTRADV_TEST
SET_TSN_P1
DUMPGLOBALDATA
KSFQP_LIMIT
SHARED_SERVER_STATE
ENQUEUES
KSKDUMPTRACE
SIMULATE_EOV
ERRORSTACK
KTPR_DEBUG
SYSTEMSTATE
EVENT_TSM_TEST
KSTDUMPALLPROCS
SYSTEMSTATE_GLOBAL
EXCEPTION_DUMP
KSTDUMPALLPROCS_CLUSTER
TEST_DB_ROBUSTNESS
FAILOVER
KSTDUMPCURPROC
TEST_GET_CALLER
FBHDR
KUPPLATCHTEST
TEST_SPACEBG
FBINC
KXFPCLEARSTATS
TEST_STACK_DUMP
FBTAIL
KXFPDUMPTRACE
TR_CRASH_AFTER_WRITE
FILE_HDRS
KXFPBLATCHTEST
TR_CORRUPT_ONE_SIDE
FLASHBACK_GEN
KXFXCURSORSTATE
TR_READ_ONE_SIDE
FLUSH_CACHE
KXFXSLAVESTATE
TR_SET_ALL_BLOCKS
FLUSH_JAVA_POOL
LATCHES
TR_SET_BLOCK
FULL_DUMPS
LDAP_KERNEL_DUMP
TR_SET_SIDE
GC_ELEMENTS
LDAP_USER_DUMP
TRACE_BUFFER_OFF
GES_STATE
LIBRARY_CACHE
TRACE_BUFFER_ON
GLOBAL_AREA
LOCKS
TREEDUMP
HANGANALYZE
LOGERROR
TR_RESET_NORMAL
HANGANALYZE_PROC
LOGHIST
UPDATE_BLOCK0_FORMAT
HANGANALYZE_GLOBAL
LONGF_CREATE
WORKAREATAB_DUMP
DUMPSGA
Dump fixed SGA
oradebug dumpsga
oradebug dumpsga
SQL> oradebug dumpsga
c:\oracle\product\admin\orabase\udump\orabase_ora_2120.trc
DUMPTYPE
Print/dump an address with type info
oradebug dumptype
TBD
DUMPVAR
Print/dump a fixed PGA/SGA/UGA variable
oradebug dumpvar [level]
SQL> oradebug setmypid
SQL> oradebug dumpvar SGA kcbnbh
EVENT
Set trace event in process
oradebug EVENT
TRACE NAME CONTEXT FOREVER, LEVEL
SQL> oradebug setmypid
SQL> oradebug EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12
SQL> oradebug unlimit
FFBEGIN
Flash Freeze the Instance
oradebug ffbegin
SQL> oradebug ffbegin
FFDEREGISTER
FF deregister instance from cluster
oradebug ffderegistger
SQL> oradebug ffderegister
FFRESUMEINST
Resume the flash frozen instance
oradebug ffresumeinst
SQL> oradebug ffresumeinst
FFSTATUS
Flash freeze status of instance
oradebug ffstatus
SQL> oradebug ffstatus
FFTERMINST
Call exit and terminate instance
oradebug ffterminst
SQL> oradebug ffterminst
FLUSH
Flush the current contents of the trace buffer to the trace file use
oradebug flush
SQL> oradebug flush
HANGANALYZE
Analyze system hang for stand-alone
oradebug hanganalzye [level] [syslevel]
SQL> oradebug setmypid;
SQL> oradebug hanganalyze;
SQL> oradebug flush;
Analyze system hang for RAC
SQL> oradebug setmypid;
SQL> oradebug -g def hanganalyze 1
SQL> oradebug flush;
HELP
Describe one or all commands
oradebug help
oradebug help
SQL> oradebug help
SQL> oradebug help flush
LKDEBUG
Invoke global enqueue service debugger
oradebug lkdebug
SQL> oradebug lkdebug
MAPCOWSGA
Map SGA as COW
oradebug mapcowsga
SQL> oradebug mapcowsga "c: emp"
NSDBX
Invoke CGS name-service debugger
oradebug nsdbx
SQL> oradebug nsdbx
PEEK
Print/Dump memory
oradebug peek [level]
SQL> oradebug peek 0x20005F0C 12
POKE
Modify memory. Never perform this function on a production database!
oradebug poke
SQL> oradebug poke 0x20005F0C 4 0x46495845
PROCSTAT
Dump process statistics
oradebug procstat
SQL> oradebug setmypid
SQL> oradebug procstat
RESUME
Resume execution
oradebug resume
SQL> oradebug resume
SESSION_EVENT
Set trace event in session
oradebug session_event
SQL> oradebug session_event 10053 TRACE NAME CONTEXT FOREVER, LEVEL 1
SETINST
Set instance list
oradebug setinst
SQL> oradebug setinst "1"
SETMYPID
Sets the oradebug PID to the current process
oradebug setmypid
SQL> oradebug setmypid
SETORAPID
Set PID of Oracle process to debug
oradebug setorapid ['force']
SELECT pid
FROM gv$process
WHERE addr = (
SELECT paddr
FROM gv$session
WHERE sid = DBMS_SUPPORT.MYSID);
or
SELECT pid
FROM gv$process
WHERE addr = (
SELECT paddr
FROM gv$session
WHERE sid = (SELECT sid FROM gv$mystat WHERE ROWNUM = 1));
/*
or one of the processes from the background, dispatcher, job queue, parallel, or shared server process lists
*/
SQL> oradebug setorapid 19
SETOSPID
Set OS pid of process to debug
The operating system process ID is the PID on Unix systems and the thread number for Windows systems
oradebug setospid
Do not use as it often fails. Use setorapid instead.
SETORAPNAME
Set Oracle process name to debug
oradebug setorapname
TBD
SETVAR
Modify a fixed PGA/SGA/UGA variable
oradebug setvar
SQL> oradebug setvar SGA kcfdfk 200
SGATOFILE
Dump SGA to file
oradebug sgatofile
SQL> oradebug ffbegin
SQL> oradebug sgatofile "c: emp"
SQL> oradebug ffresumeinst
SHORT_STACK
Get abridged OS stack
oradebug short_stack
SQL> oradebug short_stack
SHOW
Show watchpoints
oradebug show watchpoint
SQL> oradebug show?
SKDSTTPCS
Helps translate PCs to names
oradebug skdsttpcs
SQL> oradebug skdsttpcs?
SUSPEND
Suspends the current process
oradebug suspend
SQL> oradebug suspend
TRACEFILE_NAME
Get trace file name
Will not return a value on Windows systems
oradebug tracefile_name
SQL> oradebug tracefile_name
UNLIMIT
Unlimit the size of the trace file
oradebug unlimit
SQL> oradebug unlimit
WAKEUP
Wake up Oracle process
oradebug wakeup
SELECT pid
FROM gv$process
WHERE addr = (
SELECT paddr
FROM gv$bgprocess
WHERE name = 'SMON');
SQL> oradebug wakeup 7
WATCH
Watch a region of memory
oradebug watch
SQL> oradebug watch?
Demo
Taking a heap dump during a large (sorting) query
-- This example requires two sessions, session 1 logged on SYS AS SYSDBA and session 2 which
-- executes the query. In session 2 identify the PID using SELECT pid
FROM gv$process
WHERE addr IN (
SELECT paddr
FROM gv$session
WHERE sid = dbms_support.mysid);
In this example the PID was 12
In session 1 set the Oracle PID using
ORADEBUG SETORAPID 12
In session 2 start the query
SELECT ... FROM t1 ORDER BY ....
In session 1 suspend session 2
ORADEBUG SUSPEND
The query in session 2 will be suspended
In session 1 run the heap dump
ORADEBUG DUMP HEAPDUMP 1
The heapdump will show the memory structures allocated for the sort. At this point further dumps e.g. subheap dumps can be taken.
In session 1 resume session 2
ORADEBUG RESUME
The query in session 2 will resume execution