Openflow Connector for Oracle 문제 해결하기

참고

이 커넥터에는 `Snowflake Connector 약관<https://www.snowflake.com/legal/snowflake-connector-terms/>`_이 적용됩니다.

참고

Openflow Connector for Oracle 에는 표준 커넥터 서비스 약관 외에 추가 서비스 약관도 적용됩니다. 자세한 내용은 `Oracle용 Openflow Connector 부록 <https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/openflow-oracle-terms/>`_을 참조하세요.

이 항목에서는 |OracleOFC|와 관련된 일반적인 문제를 해결하는 방법을 설명합니다.

테이블이 복제에 추가되었는데 Snowflake에 표시되지 않음

테이블의 정규화된 이름(FQN)이 커넥터 구성에 잘못 지정되었을 수 있습니다.

해결책

  • ``Oracle Ingestion Parameters``의 FQN 형식을 확인합니다. ``<database_name>.<schema_name>.<table_name>``이어야 합니다(데이터베이스 접두사 참고).

  • Oracle Source Parameters » ``Oracle Connection URL``에서 데이터베이스 이름을 확인합니다. FQNs는 데이터베이스 이름 지정을 지원하지만, 현재 데이터는 이 연결에 사용된 데이터베이스 인스턴스와 동일한 데이터베이스 인스턴스에 있어야 합니다.

  • 커넥터 구성에서 도메인 이름을 포함한 전체 데이터베이스 이름을 제공했는지 확인합니다. 예를 들어, MYDB 대신 ``MYDB.EXAMPLE.COM``을 사용합니다.

    올바른 데이터베이스 이름을 찾으려면 Oracle 데이터베이스에서 다음 쿼리를 실행합니다.

    SELECT property_value
      FROM database_properties
      WHERE property_name = 'GLOBAL_DB_NAME';
    

    일반적으로, ``property_value``는 데이터베이스의 서비스 이름과 동일합니다. 그러나 반환된 데이터베이스 이름에는 추가된 도메인 이름이 포함될 수 있습니다(예: 서비스 이름인 ``FOO``인 경우 쿼리는 ``FOO.EXAMPLE.COM``을 반환할 수 있음). 이 경우 도메인과 함께 전체 이름을 사용합니다(점을 포함하므로 큰따옴표로 묶음).

증분 로드에 변경 사항 없음

증분 로드는 소스 데이터베이스의 변경 사항을 캡처하거나 적용하지 않습니다.

해결책

Oracle 읽기 CDC 스트림 프로세서에 대한 검증을 실행합니다.

  1. Openflow 런타임에서 Oracle 흐름을 두 번 클릭합니다.

  2. 이름이 :ui:`Incremental Load`인 프로세스 그룹을 두 번 클릭합니다.

  3. Read Oracle CDC Stream 프로세서를 찾습니다.

    1. 실행 중인 경우 마우스 오른쪽 버튼을 클릭하고 :ui:`Stop`을 선택합니다. 구성을 확인하려면 먼저 프로세서를 중지해야 합니다.

  4. :ui:`Read Oracle CDC Stream`을 마우스 오른쪽 버튼으로 다시 클릭한 후 :ui:`Configure`를 선택합니다.

  5. Properties 탭을 선택합니다.

  6. 오른쪽 상단에 있는 Verification 확인 표시 아이콘을 선택합니다.

  7. 표시되는 팝업 창에서 오른쪽 하단의 :ui:`Verify`를 선택합니다.

    검증 절차의 결과는 아래에 표시됩니다. 이 프로시저는 데이터베이스 연결의 유효성을 검사하고 증분 로드가 작동하는 데 필요한 구성 요소의 상태를 확인합니다.

검증 단계 중 하나라도 실패하면 오류 메시지를 보고 문제를 수정한 후 검증을 다시 실행합니다. 다음 섹션에서는 특정 문제와 해결 방법을 설명합니다.

캡처 상태가 ENABLED가 아님

캡처 프로세스 상태가 DISABLED 또는 ABORTED``입니다. ``DISABLED 상태는 캡처 프로세스가 수동으로 중지되었거나(DBMS_XSTREAM_ADM.STOP_OUTBOUND 사용) 데이터베이스가 다시 시작되었음을 의미합니다. ABORTED 상태는 일반적으로 캡처 프로세스에 필요한 다시 실행 로그가 삭제되었기 때문에 캡처에 오류가 발생했음을 의미합니다. 이는 시스템 변경 번호(SCN) 위치를 확인하거나 캡처 상태를 쿼리하여 확인할 수 있습니다.

해결책

아웃바운드 서버를 시작합니다.

BEGIN
   DBMS_XSTREAM_ADM.START_OUTBOUND('XOUT1');
END;
/

LogMiner 세션의 UNKNOWN 상태

LogMiner 상태가 ``UNKNOWN``이며, 이는 LogMiner가 종속된 아카이브 로그가 삭제되었음을 의미합니다. 이는 ``V$ARCHIVED_LOG``를 쿼리하고 DELETED 열의 값이 YES인 행을 검사하여 확인할 수 있습니다.

해결책

XStream 아웃바운드 서버를 다시 생성합니다. 자세한 내용은 XStream 아웃바운드 서버에서 문제 발생 섹션을 참조하세요.

XStream 캡처의 WAITING FOR REDO 상태

XStream 캡처 상태가 ``WAITING FOR REDO: FILE NA, THREAD 1, SEQUENCE 47, SCN 0x0000000000190ac4``를 표시합니다. 이는 LogMiner가 삭제되어 사용할 수 없는 아카이브 로그 파일을 기다리고 있음을 의미합니다. 이는 ``V$ARCHIVED_LOG``를 쿼리하고 DELETED 열의 값이 YES인 행을 검사하여 확인할 수 있습니다.

해결책

XStream 아웃바운드 서버를 다시 생성합니다. 자세한 내용은 XStream 아웃바운드 서버에서 문제 발생 섹션을 참조하세요.

XStream 캡처 규칙이 올바르지 않음

XStream이 예상되는 스키마 또는 테이블의 변경 사항을 캡처하도록 구성되지 않았습니다.

해결책

다음 쿼리를 실행하여 캡처 규칙을 확인합니다.

SELECT STREAMS_NAME, SCHEMA_NAME, OBJECT_NAME, RULE_TYPE
FROM DBA_XSTREAM_RULES
WHERE STREAMS_NAME = 'XOUT1';

캡처 상태 및 오류 메시지를 직접 쿼리할 수도 있습니다.

SELECT CLIENT_NAME, STATUS, ERROR_MESSAGE FROM ALL_CAPTURE;

이 쿼리는 다음을 반환합니다.

  • CLIENT_NAME: XStream 클라이언트(아웃바운드 서버)의 이름입니다.

  • STATUS: 캡처 프로세스의 현재 상태(예: ENABLED, DISABLED, ABORTED)입니다.

  • ERROR_MESSAGE: 캡처 프로세스와 관련된 모든 오류 메시지입니다.

오류 ORA-21560: 인자 last_position이 Null이거나 유효하지 않거나 범위를 벗어남

커넥터가 다시 실행 로그를 더 이상 사용할 수 없는 SCN 위치에 연결을 시도했습니다.

해결책

다음 쿼리를 실행하여 문제를 확인합니다. ``Last SCN processed by XStream``의 SCN은 다시 실행 로그가 존재하는 가장 낮은 SCN보다 높아야 합니다.

SELECT min(FIRST_CHANGE#) as SCN,
       'Lowest SCN for which redo logs still exist' AS DESCRIPTION
FROM V$ARCHIVED_LOG
WHERE DELETED = 'NO'
UNION ALL
SELECT PROCESSED_LOW_SCN,
       'Last SCN processed by XStream'
FROM DBA_XSTREAM_OUTBOUND_PROGRESS
WHERE SERVER_NAME = 'XOUT1'
ORDER BY SCN;

이 오류에서 복구하려면 XStream 아웃바운드 서버를 다시 생성합니다. 자세한 내용은 XStream 아웃바운드 서버에서 문제 발생 섹션을 참조하세요.

오류 ORA-26701: 스트림 프로세스 XOUT1이 존재하지 않음

데이터베이스 인스턴스에서 XStream 아웃바운드 서버를 찾을 수 없습니다.

해결책

다음을 확인합니다.

  • Oracle Source Parameters » ``XStream Out Server URL``의 데이터베이스 이름이 다른 PDB가 아닌 XStream 아웃바운드 서버가 있는 데이터베이스 인스턴스를 가리킵니다.

  • XStream이 이 인스턴스에 생성되었으며 이름이 같습니다.

오류 ORA-01722: 아웃바운드 서버 생성 시 유효하지 않은 번호

DBMS_XSTREAM_ADM.CREATE_OUTBOUND 실행이 다음으로 인해 실패합니다.

ORA-01722: invalid number
ORA-06512: at "SYS.DBMS_LOGREP_UTIL", line 582
ORA-06512: at "SYS.DBMS_LOGREP_UTIL", line 636
ORA-06512: at "SYS.DBMS_XSTREAM_ADM_UTL", line 440
ORA-06512: at "SYS.DBMS_XSTREAM_UTL_IVK", line 2094
ORA-06512: at "SYS.DBMS_XSTREAM_UTL_IVK", line 2302
ORA-06512: at "SYS.DBMS_XSTREAM_ADM", line 44
ORA-06512: at line 8

이 오류는 오해의 소지가 있습니다. 아웃바운드 서버가 이미 있습니다.

해결책

아무런 조치도 필요하지 않습니다. 기존 아웃바운드 서버를 사용합니다.

XStream 아웃바운드 서버에서 문제 발생

삭제된 다시 실행 로그 또는 손상된 LogMiner 상태와 같은 여러 문제는 XStream 아웃바운드 서버를 다시 생성하여 해결할 수 있습니다.

해결책

  1. 기존 아웃바운드 서버를 삭제합니다.

    BEGIN
       DBMS_XSTREAM_ADM.DROP_OUTBOUND('XOUT1');
    END;
    /
    
  2. 아웃바운드 서버를 다시 생성합니다. 자세한 내용은 XStream 아웃바운드 서버 생성 섹션을 참조하십시오.