<@U0A71G31CDV> 4.0.4 버전에서 Oracle catalog를 사용했는데 DE...
# questions-and-troubleshooting
s
@Rocky 4.0.4 버전에서 Oracle catalog를 사용했는데 DECIMAL's precision should range from 1 to 76 에러가 났었어. 그래서 4.1.1로 업그레이드 했더니 Getting analyzing error. Detail message: Unknown 'my_db' 에러가 나고 에러 로그에서는 StmtExecutor.logOptimizerTraceOnGenerateExecPlanFailure:908 Generate exec plan failed. 라고 떠.
r
StarRocks 4.0.4에서 발생했던 Decimal 정밀도 오류와 4.1.1 업그레이드 후 발생한
Unknown 'my_db'
오류는 각각 데이터 타입 매핑과 메타데이터 처리 방식의 변화로 인해 발생할 수 있습니다. 1. DECIMAL 정밀도 오류 (v4.0.4) StarRocks는 *v4.0 버전부터
DECIMAL256
타입을 도입*하여 최대 76자리 정밀도(Precision)를 지원하기 시작했습니다. * 원인: Oracle의
NUMBER
타입은 정밀도를 지정하지 않을 경우 가변적인 대규모 숫자를 가질 수 있는데, StarRocks 4.0 초기 버전에서 Oracle의 특정 숫자 타입을
DECIMAL256
범위(1~76) 내로 매핑하는 과정에서 값의 범위가 어긋나거나 매핑 규칙에 버그가 있었을 가능성이 높습니다. * v4.1.1로 업그레이드하면서 이 정밀도 관련 핸들링 로직이 변경되어 해당 에러는 사라진 것으로 보입니다. 2. Unknown 'my_db' 및 Optimizer 에러 (v4.1.1) 업그레이드 후 발생하는 `Unknown 'my_db'`와
Generate exec plan failed
로그는 Optimizer가 쿼리 계획을 생성할 때 해당 데이터베이스(Oracle의 Schema) 정보를 찾지 못해 발생하는 현상입니다. 원인 및 확인 사항 * 대소문자 구분 문제 (가장 유력): Oracle은 기본적으로 Schema와 Table 이름을 대문자로 관리합니다. StarRocks 4.0부터 식별자 대소문자 구분 관련 설정(
enable_table_name_case_insensitive
)이 추가되었으나, *JDBC Catalog는 이 옵션의 영향을 받지 않거나 대소문자 매핑 방식이 변경*되었을 수 있습니다. * 해결 시도:
SHOW DATABASES FROM <catalog_name>;
명령어를 실행하여 실제 Catalog에 등록된 데이터베이스 목록에 `my_db`가 어떤 이름(예: 대문자
MY_DB
)으로 표시되는지 확인하세요. 쿼리 시 대문자와 백틱(
)을 사용하여
SELECT * FROM catalog. "MY_DB".table
형태로 시도해 보시기 바랍니다. * 메타데이터 호환성 및 캐시: v4.1은 v4.0과 메타데이터 구조가 완전히 동일하지 않을 수 있습니다. 특히 External Catalog의 메타데이터 캐싱 방식이 변경되면서 이전 버전의 정보가 꼬였을 수 있습니다. * 해결 시도: 1. 해당 Oracle Catalog를
DROP CATALOG
하고 다시 `CREATE EXTERNAL CATALOG`로 재생성해 보세요. 2.
REFRESH CATALOG <catalog_name>
명령어를 통해 메타데이터를 강제로 갱신해 보세요. * FE 설정 확인: `fe.conf`에서
enable_table_name_case_insensitive
설정이 `true`로 되어 있는지 확인하십시오. 이 설정은 클러스터 생성 시에만 결정되며, JDBC Catalog와의 호환성 이슈가 보고된 바 있습니다. 권장 조치 순서 1. `SHOW DATABASES FROM oracle_catalog;`로 `my_db`가 목록에 있는지, 대소문자가 어떻게 되어 있는지 확인합니다. 2. `SET CATALOG oracle_catalog; USE "MY_DB";`와 같이 명시적인 대문자 사용을 시도합니다. 3. 현상이 지속될 경우, 기존 Catalog를 삭제 후 재생성하여 메타데이터를 초기화합니다. 4. FE 로그에서
Unknown 'my_db'
직전에 Oracle JDBC 드라이버의 연결 실패나 타임아웃 로그가 있는지 추가로 확인해 보시기 바랍니다. 만약 위 조치로도 해결되지 않는다면, 사용 중인 JDBC 드라이버 버전이 StarRocks 4.1.1과 호환되는지(특히
ojdbc
버전) 확인이 필요합니다. References • data_source/catalog/jdbc_catalog.md • administration/management/FE_configuration.md • release_notes/release-4.0.md