h2.1. oradebug
오라클을 디버깅하는데 사용되는 툴

h3.1.1 oradebug ipc
오라클이 사용하는 IPC ( Inter Process Communication, 프로세스간 통신 ) 자원에 대한 상세한 정보는 얻을 수 있다.


SQL> oradebug setmypid
Statement processed.
SQL> oradebug ipc
Information written to trace file.
SQL> oradebug tracefile_name
/oracle/admin/lkwtest/udump/lkwtest1_ora_32023.trc

vi /oracle/admin/lkwtest/udump/lkwtest1_ora_32023.trc

h3.1.2 oradebug dump gc_elements
글로벌 동기화에 필요한 정보를 저장하는 메모리 구조체인 GC Element ( Global Cache Element ) 덤프 파일을 내려받는다.


SQL> oradebug setmypid
Statement processed.
SQL> oradebug dump gc_elements 1
Statement processed.
SQL> oradebug tracefile_name
/oracle/admin/lkwtest/udump/lkwtest1_ora_32023.trc

  • GCS CLIENT Handle은 이 블록에 대한 마스터 노드가 다른 인스턴스임을 인식한다.
  • GCS SHADOW Handle은 이 블록에 대한 마스터 노드가 현재 인스턴스임을 인식한다.

vi /oracle/admin/lkwtest/udump/lkwtest1_ora_32023.trc

h3.1.3 oradebug lkdebug
Lock debug의 약자로 락 데이터베이스에 대한 정보를 확인한다.
락 데이터베이스를 구성하는 락, 리소스, 프로세스구조체 정보를 텍스트 파일로 내려 받을 수 있다.


SQL> oradebug lkdebug help
Usage:lkdebug [options]
 -l [r|p] <enqueue pointer>    Enqueue Object
 -r <resource pointer>         Resource Object
 -b <gcs shadow pointer>       GCS shadow Object
 -p <process id>               client pid
 -P <process pointer>          Process Object
 -O <i1> <i2> <types>          Oracle Format resname
 -a <res/lock/proc>            all <res/lock/proc> pointers
 -A <res/lock/proc>            all <res/lock/proc> contexts
 -a <res> [<type>]             all <res> pointers by an optional type
 -a convlock                   all converting enqueue (pointers)
 -A convlock                   all converting enqueue contexts
 -a convres                    all res ptr with converting enqueues
 -A convres                    all res contexts with converting enqueues
 -a name                       list all resource names
 -a hashcount                  list all resource hash bucket counts
 -t                            Traffic controller info
 -s                            summary of all enqueue types
 -k                            GES SGA summary info
 -m pkey <objectno>             request for remastering this object at current instance
 -m dpkey <objectno>            request for dissolving remastering of this object at current instance


* 락 데이터베이스에서 관리하는 모든 리소스명 덤프
SQL> oradebug setmypid
Statement processed.
SQL> oradebug lkdebug -a name
Statement processed.
SQL> oradebug tracefile_name
/oracle/admin/lkwtest/udump/lkwtest1_ora_11707.trc

vi /oracle/admin/lkwtest/udump/lkwtest1_ora_11707.trc


* 락 데이터베이스에서 관리하는 모든 리소스context 덤프
SQL> oradebug setmypid
Statement processed.
SQL> oradebug lkdebug -A res
Statement processed.
SQL> oradebug tracefile_name
/oracle/admin/lkwtest/udump/lkwtest1_ora_14162.trc

vi /oracle/admin/lkwtest/udump/lkwtest1_ora_14162.trc


* oradebug lkdebug -m : 리소스 리마스터링 동적 수행
* oradebug lkdebug -m pfile <fileno> : 데이터파일 단위로 리소스 리마스터링 ( 10gR1 )
* oradebug lkdebug -m pkey <objectno> : 세그먼트 단위로 리소스 리마스터링 ( 10gR2 )