One 10.1 or higher versions login as
sqlplus -prelim / as sysdbaTo do a hanganalyze
oradebug setmypid;Wait 60 - 90 seconds and run the last command again to identify the process state changes.
oradebug unlimit;
oradebug hanganalyze 3
To get a systemstate dump
oradebug setmypid;Wait 60 - 90 seconds and run again to identify the system state changes.
oradebug unlimit;
oradebug dump systemstate 266
If it is taking too long then cancel and run with level 258.
One a cluster environment use
oradebug -g all hanganalyze 3for hang analyze and
oradebug -g all dump systemstate 266for system state dumps.
In a cluster verify *diag* (admin/tbxdb/bdump/tbxdb1_diag_21606.trc) file is updated with information on each node.
more on metalink notes 452358.1 and 175006.1
On 19.5 with preliminary connection the unlimit command fails.
SQL> oradebug unlimit; ORA-02096: specified initialization parameter is not modifiable with this optionMOS Doc 2506099.1 suggest using max_dump_file_size but that also fails with preliminary connection.
sqlplus -prelim "/ as sysdba" SQL*Plus: Release 19.0.0.0.0 - Production on Thu Feb 20 09:14:48 2020 Version 19.5.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. SQL> oradebug setmypid; Statement processed. SQL> alter session set max_dump_file_size=unlimited; alter session set max_dump_file_size=unlimited * ERROR at line 1: ORA-01012: not logged on Process ID: 0 Session ID: 0 Serial number: 0A workaround is to use an existing process ID with "oradebug setospid {SMON or PMON PID}" as explained in 452358.1.