'10053'에 해당되는 글 1건

  1. 2009.05.08 Oracle dump 뜨는 방법
ORACLE/TUNING2009. 5. 8. 14:05
반응형
덤프 : 일회성으로 그 순간의 상태정보를 가집니다.
트레이스 : 10046, 10053 , 4031 등의 이벤트를 걸게 되면 순간의 상태(immediate) 또는
세션이 close될때까지의 정보(trace name context forever) 를 trace로
남깁니다. 4031같은 오라클 내부 에러에 대해서는 immediate,
10046, 10053 처럼 sql, plan에 대해서 확인하는 것은 forever로
하지요.

참고로 udump 에 없다고 해서 고민하지 말구요. bdump를 찾아보세요.
background process를 이용해서 dump를 뜨는 경우에는 bdump에 나오겠죠.

- 문제발생시 덤프 뜨는 방법
문제발생 세션에 대한 10046 event, truss output, errorstack dump
OS engineer의 system state dump
system state dump 2~3회
hang analyze dump 2~3회
system state dump 1~2회
hang analyze dump 1~2회

- 에러스택 뜨기(꼭 수행할 때마다 exit나와서 다시 서버에 접속해서 뜰 것)
oradebug setospid XX
oradebug unlimit
oradebug dump errorstack 3
oradebug tracefile_name

- hanganalyze, systemstate dump 뜨기(꼭 수행할 때마다 exit나와서 다시 서버에 접속해서 뜰 것)
oradebug setmypid
oradebug unlimit
oradebug hanganalyze 3
oradebug dump systemstate 10

- oradebug로 event 걸기(10046 event는 sql 트레이스 정보, 10053은 optimizer에 대한 트레이스 정보)
oradebug setospid XX
oradebug unlimit
oradebug event 10046 trace name context forever, level 12;
oradebug event 10053 trace name context forever, level 1;
oradebug tracefile_name
oradebug event 10046 trace name context off;
oradebug event 10053 trace name context off;

- 문제가 있는 세션의 process state dump 뜨기
oradebug setospid
oradebug unlimit
oradebug dump processstate 10

- alter session, alter system 명령으로 event걸기(session 이 logout할때까지 수행됨)
alter session set timed_statistics=true;
alter session set max_dump_file_size=unlimited;
alter session set tracefile_identifier='10046evnt1';
alter session set events '10046 trace name context forever , level 12';
alter session set events '10053 trace name context forever , level 1';
alter session set events '10046 trace name context off';
alter session set events '10053 trace name context off';

- sqlplus 로 접속이 불가능할 경우 백그라운드 프로세스의 systemstate 덤프 뜨기
(위험한 명령임, 서비스 중엔 사용금지, 도저히 문제 발생으로 smon 프로세스를 죽이던지 해서 DB를 내리기전에 수행)

OS debuger를 사용하면 특정 process에게 특정 function을 호출하도록 할 수
있습니다. 이러한 점을 이용하면 ORACLE에서 systemstate dump를 요청할 때
사용하는 ksudss function을 호출할 수 있으며, 절차는 아래와 같습니다.

1. 먼저 attach할 ORACLE process에 대한 OS PID를 알아 둡니다.
(여기서는 PMON process를 예를 들었습니다.)
$ ps ?ef | grep $ORACLE_SID | grep pmon
aprdbms 1432 1 0 23:14:50 ? 0:00 ora_pmon_APR920U6
2. Pmon process에 debuger를 사용하여 attach합니다.
$gdb $ORACLE_HOME/bin/oracle 1432
3. Ksudss function을 호출합니다.
gdb) call ksudss (10)
4. Pmon은 ksudss를 호출하여 systemstate dump를 받게 됩니다.
attach한 process가 ksudss function call 요청을 받아 들이기 위해서는
system call을 수행 중에 있지 않아야 합니다.

- alter session 명령으로 ORA-4031 에러에 대한 event 걸기(immediate로 즉각 떨어지도록)
alter session set max_dump_file_size=unlimited;
alter session set tracefile_identifier='4031evnt1';
alter session set events '04031 trace name errorstack level 3';
alter session set events '04031 trace name systemstate level 10';
반응형
Posted by [PineTree]