문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣTibero6, Tibero7
문서번호ㅣTADTI193
개요
인덱스의 정합성이 의심되는 경우 이를 확인하기 위해 활용하는 방법입니다.
방법
DBMS_VERIFY 패키지 수행
- 문제가 없을 경우
SQL> set serveroutput on
SQL> declare
schema varchar2(1024);
tblname varchar2(1024);
begin
schema := 'TIBERO';
tblname := 'T';
DBMS_VERIFY.TABLE_INDEX(schema, tblname);
end;
/
"IDX1_T" ("TIBERO"."T") is ok!
PSM completed.
-문제가 있을 경우
SQL> exec dbms_verify.SCHEMA_INDEX('TIBERO');
TBR-2131: Generic I/O error.
- sys.log
[12-01T14:35:27.678694] [COM-68] [I] Block & Key dump generated by condition 'dd->sgmt_id == idxblk->tx.sgmt_id'
[12-01T14:35:27.678913] [COM-68] [I] Internal Error with condition '(dd->sgmt_id == idxblk->tx.sgmt_id)' (5 args) (td_isgmt.c:1283:td_isgmt_get_
cr_in_lvl) (pid=9437514, sessid=68, tid=68)
[12-01T14:35:32.080332] [FRM-68] [I] THROW. ec=ERROR_SESS_KILLED(-12001) [ Session has been closed. ] (csr_id:53) [tbsvr_tracedump.c:294:tb_th
r_assert_cmd]
. (중략)
- callstack
[68] *** 2025/12/01 14:35:23.327 ***
CALL STACK DUMP BY PROCSTACK (from 68,54001799)
---------- tid# 54001799 (pthread ID: 258) ----------
0x0900000000912810 _p_nsleep(??, ??) + 0x10
0x0900000000038b64 nsleep(??, ??) + 0xe4
0x090000000014e888 sleep(??) + 0x88
0x00000001004eae18 tb_system(??, ??, ??, ??) + 0xf8
0x00000001004e842c callstack_dump_ex(??, ??, ??) + 0x46c
0x00000001015171e8 td_isgmt_get_cr_in_lvl(??, ??, ??, ??, ??, ??, ??) + 0x1da8
.(중략)
정합성 문제는 티베로의 버전 및 적용된 패치에 따라 발생할 수 있는 경우가 달라질 수 있습니다.
일반적인 조치방안
1. _INDEX_BUILD_USING_FULL_SCAN=Y 파라미터를 적용한 후 해당 테이블의 인덱스 rebuild 작업을 수행하고, 이후 _INDEX_BUILD_USING_FULL_SCAN=N으로 다시 설정하는 방법입니다.
SQL> alter system set _INDEX_BUILD_USING_FULL_SCAN=Y ;
System altered.
SQL> alter index IT238175_3 rebuild;
Index 'IT238175_3' altered.
SQL> alter system set _INDEX_BUILD_USING_FULL_SCAN=N
;
System altered.
테이블 데이터 기준으로 key를 생성해야 하므로 해당 파라미터를 사용하는 것입니다.
해당 파라미터를 사용하지 않을 경우 이미 정합성이 틀어진 인덱스에서 key 값을 가져와 새로운 세그먼트에 저장하게 되며, 이 경우 테이블과의 정합성이 정상적으로 복구되지 않을 수 있습니다.
2. 원인 분석의 경우 각 버전에 따라 다르므로 필요한 덤프들을 추출한 후 기술 문의가 필요합니다.