현상
FBI(Function-Based Index)는 컬럼에 함수나 표현식을 적용한 결과에 대해 인덱스를 생성하는 방식으로, UPPER, SUBSTR, TRIM 등 문자열을 처리하는 함수(일반적으로 쌍따옴표 ""를 사용하는 경우 포함)가 주로 사용됩니다.
이러한 FBI 인덱스를 tbexport 를 통해 스크립트로 추출할시 , function에 쌍따옴표("")가 포함된 컬럼이 DESC(내림차순)으로 생성되어 있더라도, 추출된 스크립트에서는 DESC 속성이 누락되는 현상이 발생하였습니다.
아래와 같이 SUBSTR("TM_NO",5,8) DESC 로 생성된 인덱스를
SQL> create index tibero1.IDX_tbl_test_01 ON tibero1.tbl_test (
PLANT_CD ASC,
SUBSTR("TM_NO",5,8) DESC
)
LOGGING
PCTFREE 10
INITRANS 2;
Index 'TIBERO1.IDX_tbl_test_01' created.
SQL
복사
tbexport로 추출 후, log 및 script 확인 시 DESC가 누락된 채로 SUBSTR("TM_NO",5,8) 로 확인 됩니다.
$ tbexport username=sys password=tibero sid=tibero file=test.dat log=test.log table=tibero1.tbl_test port=9292 script=y
$ vi test.log
-- exporting indexes
CREATE INDEX "IDX_PROD_MA_06" ON "PROD_MA" (
"PLANT_CD" ASC,
SUBSTR("TM_NO",5,8)
)
LOGGING
TABLESPACE "USR"
NOPARALLEL
PCTFREE 10
INITRANS 2
/
SQL
복사
원인
Function-Based Index 내에 포함된 쌍따옴표("")에 대한 예외 처리가 코드 상에서 누락되어 있어, 해당 인덱스에 DESC(내림차순) 옵션이 포함되어 있더라도 이를 정상적으로 추출하지 못하는 로직 오류가 발생하였습니다.
해결
287049d_expimp 패치 적용을 통해 해결합니다.
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.
본 패치는 패치셋(Patch Set)에 포함되어 있어, 패치셋 바이너리로 업그레이드하는 경우에도 문제가 해결됩니다.
정상 출력 예시
•
SUBSTR("TM_NO",5,8) DESC
$ vi test.log
-- exporting indexes
CREATE INDEX "IDX_PROD_MA_06" ON "PROD_MA" (
"PLANT_CD" ASC,
SUBSTR("TM_NO",5,8) DESC
)
LOGGING
TABLESPACE "USR"
NOPARALLEL
PCTFREE 10
INITRANS 2
/
SQL
복사