반응형

오라플에서 에러가 발생했을 때, 어떤 SQL문이 문제인가를 찾아낼 필요가 있습니다. 예를 들어, Alert.log 파일에 다음과 같은 에러 메시지가 기록되어 있습니다.
1 Fri Mar 05 09:47:53 2010
2 ORA-1652: unable to extend temp segment by 128 in tablespace                 VERY_SMALL_TBS
어떤 SQL문이 범인인가를 알지 못하면, 해결하기가 쉽지 않습니다.

이런 경우에 시도해 볼 수 있는 것이 ErrorStack 덤프입니다. ErrorStack 덤프를 진단 이벤트와 함께 사용하면 에러를 일으키는 SQL 문장이 트레이스 파일에 기록되도록 할 수 있습니다.

간단한 예를 설명해 보겠습니다. 우선 작은 크기(10m)의 테이블스페이를 만듭니다.

1 UKJA@ukja1021> create tablespace very_small_tbs
2   2  datafile size 10m;
3   
4 Tablespace created.
ORA-01652 에러가 발생하면, ErrorStack 덤프를 실행하도록 진단 이벤트를 겁니다.
1 UKJA@ukja1021> alter system set events '1652 trace name errorstack level 1, forever';
2   
3 Session altered.
10m보다 큰 테이블을 만들면 ORA-01652 에러가 발생합니다.
01 UKJA@ukja1021> create table tbig(c1)
02   2  tablespace very_small_tbs
03   as
04   select rpad('x',1000) from dual
05   connect by level <= 10000
06   6  ;
07 select rpad('x',1000) from dual
08                            *
09 ERROR at line 4:
10 ORA-01652: unable to extend temp segment by 128 in tablespace VERY_SMALL_TBS
11   
12 UKJA@ukja1021> alter system set events '1652 trace name context off';
13   
14 Session altered.
Alert.log 파일에는 다음과 에러 메시지가 남습니다.
1 Fri Mar 05 09:47:53 2010
2 ORA-1652: unable to extend temp segment by 128 in tablespace                 VERY_SMALL_TBS
프로세스의 트레이스 파일에는 에러 발생시의 SQL문과 CallStack 트레이스가 기록되어 있습니다.
01 ORA-01652: unable to extend temp segment by 128 in tablespace VERY_SMALL_TBS
02 Current SQL statement for this session:
03 create table tbig(c1)
04 tablespace very_small_tbs
05 as
06 select rpad('x',1000) from dual
07 connect by level <= 10000
08 ----- Call Stack Trace -----
09 calling              call     entry                argument values in hex      
10 location             type     point                (? means dubious value)     
11 -------------------- -------- -------------------- ----------------------------
12 _ksedst+38           CALLrel  _ksedst1+0           0 1
13 _ksedmp+898          CALLrel  _ksedst+0            0
14 _ksddoa+2088         CALLreg  00000000             1
15 _ksdpcg+238          CALLrel  _ksddoa+0            A9615C0 93C78C0
16 _ksdpec+230          CALLrel  _ksdpcg+0            674 C04A478 1
17 __PGOSF89__ksfpec+1  CALLrel  _ksdpec+0            674
18 18                                                 
19 _kgesev+88           CALLreg  00000000             A0C6760 674
20 _ksesec2+39          CALLrel  _kgesev+0            A0C6760 93C0020 674 2 C04A4E4
21 _ktsxterr+316        CALLrel  _ksesec2+0           674 0 80 0 1 E C04A55E
22 _ktfbtgex1+969       CALLrel  _ktsxterr+0          792DE5C 80 0
23 _ktsxs_add+1766      CALLrel  _ktfbtgex1+0         C04AD8C 3D C04AA50 80 18 A 3
24                                                    0 0 C04AD50 37B3EE88
25 _ktsxssr_sadd+1409   CALLrel  _ktsxs_add+0         C04B048 C04AD8C 80 A 3 0 18 1
26                                                    C04B11C C04AE08 C04ADC0 0
27                                                    C04AD50
28 _ktrsexec+372        CALL???  00000000             C04B0D8
29 _ktelwbl+770         CALLrel  _ktrsexec+0          C04B0D8
30 _kdblba+168          CALLrel  _ktelwbl+0           792DE5C 1
31 _kdblGetBlockDba+58  CALLrel  _kdblba+0            
32 _kdblgb+26           CALLrel  _kdblGetBlockDba+0   C04B3C8 792DD9C
33 _kdblailb+2101       CALLrel  _kdblgb+0            
34 _kdblai+1560         CALLrel  _kdblailb+0          C04B3C8 792DC9C 792DD9C 0 1 1
35 _klclil1r+187        CALLrel  _kdblai+0            
36 _qerltRop+514        CALLrel  _klclil1r+0          792DBEC
37 _qercbiFetch+935     CALLreg  00000000             34C4F034 7FFF
38 _rwsfcd+95           CALL???  00000000             34C4F384 1C72EB4 34C4F034
39                                                    7FFF
40 _qerltFetch+368      CALL???  00000000             34C4F148 1C72EB4 34C4F034
41                                                    7FFF
42 _ctcdrv+7674         CALL???  00000000             34C4F034 1D28394 C04CE30 1
43 _opiexe+12257        CALLrel  _ctcdrv+0            34EE5F50 C04D548 C04D510
44 _opiosq0+6088        CALLrel  _opiexe+0            4 0 C04D8C0
45 _kpooprx+232         CALLrel  _opiosq0+0           3 E C04D9D8 A4
46 _kpoal8+775          CALLrel  _kpooprx+0           C04F6F8 C04E224 6D 1 0 A4
47 _opiodr+1099         CALLreg  00000000             5E 17 C04F6F4
48 _ttcpip+1273         CALLreg  00000000             5E 17 C04F6F4 0
49 _opitsk+1017         CALL???  00000000             
50 _opiino+1087         CALLrel  _opitsk+0            0 0
51 _opiodr+1099         CALLreg  00000000             3C 4 C04FC8C
52 _opidrv+819          CALLrel  _opiodr+0            3C 4 C04FC8C 0
53 _sou2o+45            CALLrel  _opidrv+0            3C 4 C04FC8C
54 _opimai_real+112     CALLrel  _sou2o+0             C04FC80 3C 4 C04FC8C
55 _opimai+92           CALLrel  _opimai_real+0       2 C04FCB8
56 _OracleThreadStart@  CALLrel  _opimai+0            
57 4+708                                              
58 7C80B710             CALLreg  00000000
ErrorStack 덤프는 그 레벨에 따라 다양한 유용한 정보를 제공해줍니다. 아래 아티클에서 상세한 정보를 얻을 수 있습니다.

출처 : http://ukja.tistory.com/307

반응형

+ Recent posts