inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Orders Microservice에서 MariaDB 연동

source-connect 오라클 적용 오류

397

jeonseino_o

작성한 질문수 1

0

mariadb가 아닌 oracle로 진행을 해보고 있는데

mariadb의 auto_increment 대신 oracle로 seq를 만들어 자동 증가하게 했습니다. 이렇게 적용을 하니

connector 에서 이런 오류를 주는데 오라클로 할 때는 설정이 많이 다른지 질문드립니다!!!

 

ERROR [my-oracle-connect|task-0] WorkerSourceTask{id=my-oracle-connect-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:196)

org.apache.kafka.connect.errors.ConnectException: Scale of Decimal value for incrementing column must be 0

        at io.confluent.connect.jdbc.source.TimestampIncrementingCriteria.extractDecimalId(TimestampIncrementingCriteria.java:283)

        at io.confluent.connect.jdbc.source.TimestampIncrementingCriteria.extractOffsetIncrementedId(TimestampIncrementingCriteria.java:268)

        at io.confluent.connect.jdbc.source.TimestampIncrementingCriteria.extractValues(TimestampIncrementingCriteria.java:208)

        at io.confluent.connect.jdbc.source.TimestampIncrementingTableQuerier.extractRecord(TimestampIncrementingTableQuerier.java:230)

        at io.confluent.connect.jdbc.source.JdbcSourceTask.poll(JdbcSourceTask.java:418)

        at org.apache.kafka.connect.runtime.AbstractWorkerSourceTask.poll(AbstractWorkerSourceTask.java:452)

        at org.apache.kafka.connect.runtime.AbstractWorkerSourceTask.execute(AbstractWorkerSourceTask.java:346)

        at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:189)

        at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:244)

        at org.apache.kafka.connect.runtime.AbstractWorkerSourceTask.run(AbstractWorkerSourceTask.java:72)

        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)

        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)

        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)

        at java.base/java.lang.Thread.run(Thread.java:834)

[2023-12-06 19:56:27,342] INFO [my-oracle-connect|task-0] Stopping JDBC source task (io.confluent.connect.jdbc.source.JdbcSourceTask:354)

[2023-12-06 19:56:27,342] INFO [my-oracle-connect|task-0] Closing resources for JDBC source task (io.confluent.connect.jdbc.source.JdbcSourceTask:366)

[2023-12-06 19:56:27,342] INFO [my-oracle-connect|task-0] [Producer clientId=connector-producer-my-oracle-connect-0] Closing the Kafka producer with timeoutMillis = 30000 ms. (org.apache.kafka.clients.producer.KafkaProducer:1297)

[2023-12-06 19:56:27,344] INFO [my-oracle-connect|task-0] Metrics scheduler closed (org.apache.kafka.common.metrics.Metrics:693)

[2023-12-06 19:56:27,344] INFO [my-oracle-connect|task-0] Closing reporter org.apache.kafka.common.metrics.JmxReporter (org.apache.kafka.common.metrics.Metrics:697)

[2023-12-06 19:56:27,344] INFO [my-oracle-connect|task-0] Metrics reporters closed (org.apache.kafka.common.metrics.Metrics:703)

[2023-12-06 19:56:27,344] INFO [my-oracle-connect|task-0] App info kafka.producer for connector-producer-my-oracle-connect-0 unregistered (org.apache.kafka.common.utils.AppInfoParser:83)

{
    "name": "my-oracle-connect",
    "config" : {
        "connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector",
        "connection.url":"jdbc:oracle:thin:@localhost:1521:orcl",
        "connection.user":"test",
        "connection.password":"test",
        "mode": "incrementing",
        "incrementing.column.name":"ID",
        "table.whitelist":"USERS",
        "topic.prefix" : "my_oracle_",
        "tasks.max" : "1"
    }
}

spring-boot jpa 아키텍처 spring-cloud kafka msa rabbitmq

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
마리아DB에서 오라클로 전환 시 발생하는 오류와 관련하여 질문 주셨군요. 주신 에러 메시지는 Kafka Connect에서 타임스탬프를 증가시키는 데 사용하는 컬럼의 소수점 자릿수가 0이 아니어야 함을 나타내는 것 같습니다. 오라클에서 시퀀스를 사용하셨다고 하셨는데, Kafka Connect 설정 중 "incrementing.column.name":"ID" 이 부분에서 지정한 ID 컬럼의 타입에 문제가 있을 수 있습니다. Decimal 값에 대한 scale이 0이어야 한다는 점이 중요합니다. 오라클에서 자동 증가하는 필드를 제대로 구현하신 것인지 다시 확인해 보시기 바랍니다.

커넥터의 구성을 확인할 때, 오라클의 자동 증가 값을 처리하는 방식이 커넥터 설정과 호환되는지 확인해야 합니다. 오라클에서는 보통 시퀀스와 트리거를 사용하여 자동 증가 기능을 구현합니다. Kafka Connect의 경우에는 이 ID 필드가 숫자 타입(Number)이어야 하며, 소수를 포함하지 않아야 합니다. incrementing.column.name에 지정된 필드가 이 조건을 충족하지 않는다면, 에러가 발생할 수 있습니다.

추가로 설정이 맞는지 확인하기 위해 Oracle의 SQL Developer나 다른 데이터베이스 관리 툴을 사용하여 USERS 테이블의 ID 컬럼과 시퀀스의 구성을 확인하시고, 필요하다면 데이터 유형을 변경하거나 Kafka Connect 설정을 조정해보시기 바랍니다.

오라클 데이터베이스와 관련하여 더 자세한 내용이 필요하시다면, Spring Boot 및 JDBC 관련 문서를 참고하시길 바랍니다. 예를 들어 Spring Boot 환경에서 DataSource 설정 방법을 알고 싶으시다면, Spring Boot 공식 문서에서 관련 내용을 찾아보실 수 있습니다.
- “DataSource 구성”:

특히 오라클과 같은 SQL 데이터베이스를 사용할 때의 DataSource 설정 방법에 대한 가이드를 제공합니다.

문제 해결에 도움이 되시길 바랍니다.

kafka 업데이트 강의 듣고 시포요

0

85

1

강의 교안

0

73

1

마이크로서비스간 통신 시, 인증 처리

0

79

1

api gateway 에서 인증 처리

0

65

1

섹션 19 질문드립니다

0

53

1

강의 자료 업데이트

0

82

1

부하분산 강의 섹션

0

57

1

강의자료는 어디에서?

0

71

1

강의 자료는 어디서 다운 받을 수 있나요?

0

110

1

전체 사용자 조회시 오류

0

58

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

110

2

학습 방향

0

95

2

카프카 커넥터 사용 목적 문의

0

85

2

kafka 강의

0

108

2

서비스 디스커버리 종류

0

87

2

강의 자료에 대해서 궁금해요

0

116

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

90

2

Kafka Source Connect 버전 에러

0

85

2

소스커넥터는 사용안한 거 맞죠?

0

81

2

강의자료 업데이트 문의

0

95

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

56

1

강의 업데이트 계획이 궁금합니다.

0

112

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

161

2

어떤 것이 업데이트 된 건가요?

0

164

2