데이터 스트림 문제 해결
| 증상 | 가능한 원인 | 작업 |
|---|---|---|
| REST가 401을 반환합니다. | 인증서가 누락되었거나 부적합합니다. 프록시 인증이 일치하지 않습니다. | 인증 모드, 암호, 관련 시계 및 프록시 경로를 확인합니다. URL에 인증서를 포함하지 마십시오. |
| REST가 403을 반환합니다. | 계정에 필요한 사용자, 운영자 또는 관리자 역할이 없습니다. | 데이터 스트림 구성에 대한 필요 조건의 롤 테이블을 사용하고 필요한 권한만 부여합니다. |
| WebSocket는 404 또는 핸드셰이크 실패를 반환합니다. | 하드코딩된 채널 경로입니다. 프록시가 경로 지정 또는 업그레이드되지 않았습니다. 스트림 이름이 잘못되었습니다. | 생성된 YAML을 검색하고 해당 호스트 및 채널 주소를 사용합니다. WebSocket 업그레이드 헤더를 검증합니다. |
| TLS 확인 실패 | 알 수 없는 CA, 만료된 인증서, 호스트 불일치 또는 클라이언트 인증서 누락. | 올바른 CA 체인을 설치하고, DNS 및 인증서 SAN을 확인하고, 필요한 경우 상호 TLS를 구성합니다. |
| 연결에 성공했지만 레코드가 도착하지 않았습니다. | 새 커밋이 없는 begin=now, 필터가 데이터를 제외함, 잘못된 트레일/경로, Extract가 쓰지 않음 |
알려진 트랜잭션을 생성하고, 소스 추적을 검사하고, 필터를 일시적으로 단순화하고, 스트림 소스를 확인합니다. |
| 첫번째 객체는 DML이 아님 | 데이터 전에 스키마 및 메타데이터 레코드가 필요합니다. | 모든 객체를 분류합니다. 오류를 처리하는 대신 스키마와 메타 데이터를 캐시에 저장합니다. |
| JSON 구문분석기는 객체가 필요하지만 배열을 수신합니다. | WebSocket 메시지는 일괄 처리입니다. | 최상위 배열의 구문을 분석하고 해당 레코드를 반복합니다. |
클라이언트가 pos에 다시 연결할 수 없습니다. |
퍼센트 인코딩, 변경되지 않은 토큰이 다른 스트림에 속하거나 추적 기록이 비워졌습니다. | 정확한 저장된 토큰을 사용하고, 퍼센트로 인코딩하고, 범위를 확인하고, 사용할 수 없는 위치 복구 절차를 따릅니다. |
| 중복이 나타납니다. | atLeastOnce; 싱크대 쓰기 및 체크포인트 간의 충돌. 두 소비자가 체크포인트를 공유하며 멱등 재시도 이외의 작업을 수행합니다. |
기본 체크포인트 또는 멱등성을 사용하고 서비스 품질 및 소비자 소유권을 확인합니다. |
| 복구 후 레코드가 누락되었습니다. | atMostOnce 사용할 수 없는 포지션을 생략했습니다. 비즈니스 커밋 전에 저장된 체크포인트입니다. 필터가 변경되었습니다. |
복구 이벤트를 감사하고, 데이터 격차를 조정하고, exactlyOnce 및 지속 가능한 워크로드를 위한 올바른 체크포인트 트랜잭션을 사용합니다. |
| 이전 또는 이후 이미지에 열이 없음 | 소스 로깅 또는 Extract가 부분 이미지를 캡처했습니다. 널이 생략되었습니다. 행 모델이 선택되었습니다. | 추적 캡처, omitNullColumnValues, 모델 및 런타임 스키마를 검사합니다. 부재 필드를 Null로 추론하지 않습니다. |
| DDL이 누락되었습니다. | DDL이 캡처되지 않거나, 필터가 DDL을 제외하거나, 소스 구성이 필요한 이벤트를 지원하지 않습니다. | 소스 DDL 캡처를 검증하고 작업 필터에 DDL를 포함시킵니다. |
| DDL 후 소비자가 실패함 | 캐시된 스키마가 오래되었거나 다운스트림에서 변경사항을 수락할 수 없습니다. | 새 레코드가 도착하면 캐시된 스키마/메타데이터를 바꾸고 관리되는 스키마 마이그레이션 정책을 실행합니다. |
| 큰 레코드가 잘리거나 분할되었습니다. | maxLobSize, maxDDLTextSize, maxRecordSize, 프록시 제한 또는 클라이언트 제한입니다. |
검증된 제한을 늘리고, 지원되는 경우 조각 처리를 선택하고, 프록시/클라이언트 메시지 제한을 발생시킵니다. |
| 숫자 전체 자릿수 변경 | 바이너리 부동 소수점으로 구문 분석된 JSON 번호입니다. | 십진수 인식 구문 분석 또는 treatAllColumnsAsStrings를 사용합니다. |
| 소비자 메모리 증가 | 느린 다운스트림 처리, 무제한 대기열, 대형 배치 또는 재연결 루프 | 큐를 묶고, 디커플은 프로세싱으로부터 수신하고, 일괄 처리 크기를 조정하고, 다운스트림 작업의 규모를 조정하거나 조절할 수 있습니다. |
| CloudEvents 소비자가 필드를 찾을 수 없음 | GoldenGate 레코드가 data 아래에 있거나 런타임 봉투 값이 복사된 예와 다릅니다. |
data의 래핑을 해제하고 런타임 YAML 및 실제 이벤트 속성을 사용합니다. |
지원을 위해 수집할 정보
-
Oracle GoldenGate 릴리스 및 배치 유형입니다.
-
Sanitized Data Stream 구성 및 생성된 AsyncAPI YAML.
-
스트림 이름, 소스 추적 및 경로, 서비스 품질, 필터 및 JSON 설정.
-
정확한 UTC 시간 기록, HTTP 상태 또는 WebSocket 마감 코드 및 GoldenGate 메시지 코드입니다.
-
마지막으로 알려진 정상 작동이 확인된 체크포인트와 백분율 인코딩 여부입니다. 필요한 경우 이를 보호하거나 해시합니다.
-
관련 배포 서비스, 추출, 프록시 및 소비자 로그.
-
sanitize된 스키마/메타 데이터 레코드 및 하나의 실패한 페이로드입니다.
-
추적 보존 상태 및 요청된 포지션이 사용 가능한 상태로 유지된다는 증거입니다.