shyundev
08/04/2026, 9:06 AMRocky
08/04/2026, 9:07 AMUnknown '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