[oradebug 사용법 – 1]
ORADUBUG는 ORACLE에서 제공하는 디버깅을 위한 목적으로 만들어진 유틸리티로
DB가 멈추거나 Hang 상태일 때 또는 ORA-600 에러가 발생했을 경우,
특정 프로세스가 루핑을 도는 것 또는 멈춰있는 것 같이 보일 때 관리자 권한으로 실행하여 사용할 수 있다.
즉 프로세스, 세션, 메모리, SQL 등의 리소스를 덤프할 수있고, OS 디버거들과 비슷하게 오라클 레벨에서 CALL단위 디버깅 기능을 제공한다.
리소스를 개별로 덤프할 수 있으며 인스턴스를 덤프할 수 있으며 DB HANG 또는 크리티컬 장애 분석 시 사용된다.
–
다른 유저 세션으로 SQL Tracing 설정
가능
–
프로세스 일시중단
–
공유메모리와 세마포어 정보검색
–
새로 생성된 트레이스파일 closing
–
내부 구조 조작 및 dump 기능
–
프로세스 시동
Oradebug
Commands
–
Oradebug help를 통해 커맨드를 검색하여
활용
SQL> oradubug help
|
1.
Oradebug setmypid
현재
프로세스로 디버그
SQL> oradebug setmypid |
2.
Oradebug setospid
디버그할 프로세스의 OS Process id 설정
SQL> oradebug setospid <pid>
Ex) SQL> oradebug setospid 19592 Oracle pid: 18, Unix process pid: 19592, image: |
3.
Oradebug setospid
디버그할 Oracle Pid 설정
SQL> oradebug setorapid <orapid>
Ex) SQL> oradebug setorapid 18 (use pid from the query above) Unix process pid: 19592, image: oracle@apollo (TNS SQL> oradebug setorapid 18 force Statement processed. |
4.
Oradebug event
프로세스의 Trace event 설정
SQL> oradebug event <text>
이벤트넘버는 $ORACLE_HOME/rdbms/mesg/oraus.msg에서 확인가능 Ex) 에벤트 넘버가 10046일 경우
SQL> oradebug setospid 10929 Oracle pid: 91, Unix process pid: 10929, image: SQLPLUS> oradebug EVENT 10046 trace name context Statement processed.
|
5.
Oradebug Session event
세션의 Trace event 설정
SQL> oradebug session_event <text>
Ex) SQL>oradebug session_event 10046 trace name Statement proceed. SQL > oradebug session_event 10046 trace name Statement proceed.
|
6.
Oradebug dumpvar
PGA/UGA/SGA를 덤프또는 프린트
SQL> oradebug dumpvar <p|s|uga> <p|s|uga> <name> [level]
|
7.
Orade setvar
PGA/UGA/SGA를 변경
SQL> oradebug setmypid Statement processed.
SQL> oradebug dumpvar sga kfil kcfdfk_ [2000F6B0, 2000F6B4)
SQL> show parameter db_files;
NAME TYPE VALUE ———————————— db_files integer 200
SQL> oradebug setvar sga kcfdfk BEFORE: [2000F6B0, 2000F6B4) = AFTER: [2000F6B0, 2000F6B4) = 000000C8
SQL> oradebug dumpvar sga kfil kcfdfk_ [2000F6B0, 2000F6B4) |
8.
Oradebug peek
메모리 주소를 user dump 위치에 트레이스 파일로 덤프시켜주는 명령어
select fsv.KSMFSNAM,sga.* from x$ksmfsv fsv, x$ksmmem where sga.addr=fsv.KSMFSADR and fsv.ksmfsnam like SQL> / KSMFSNAM ADDR INDX —————————————- ———- ——– kglt1_ 200150F8 21566 1 kgllat_ 20015F64 22489 1 00 kglpnl_ 2001602C 22539 1 kglpal_ 200160F4 22589 1 00 kglllt_ 200161BC 22639 1 00 SQL> oradebug peek 536957176 4 [200150F8, 200150FC) = 0000011C |
9.
Oradebug poke
메모리 변경
SQL> oradebug help poke POKE <addr> SQL> oradebug poke 536957176 4 668 BEFORE: [200150F8, 200150FC) = 0000011C AFTER: [200150F8, 200150FC)
select fsv.KSMFSNAM,sga.* from x$ksmfsv fsv, x$ksmmem where sga.addr=fsv.KSMFSADR and fsv.ksmfsnam like SQL> /
KSMFSNAM ADDR INDX INST_ID KSMMMVAL ————————————— ——– ———- kglt1_ 200150F8 21566 1 kgllat_ 20015F64 22489 1 00 kglpnl_ 2001602C 22539 1 00 kglpal_ 200160F4 22589 1 00 kglllt_ 200161BC 22639 1 00 |
10.
Oradebug wakeup
프로세스 wake up해준다.
SQL> select pid from v$process p, where b.paddr = p.addr and name=’SMON’; PID ———- 6
SQL> oradebug wakeup 6 |