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/>`_을 참조하세요.
이 항목에서는 Openflow Connector for Oracle 의 기본 개념, 워크플로 및 제한 사항에 대해 설명합니다.
Openflow Connector for Oracle 정보¶
Openflow Connector for Oracle 는 Oracle 데이터베이스 인스턴스를 Snowflake에 연결하고 선택한 테이블의 데이터를 거의 실시간으로 또는 지정된 일정에 따라 복제합니다. 또한 커넥터는 복제된 테이블의 현재 상태와 함께 사용할 수 있는 모든 데이터 변경 사항에 대한 로그를 생성합니다.
사용 사례¶
커넥터는 다음 사용 사례를 지원합니다.
포괄적인 중앙 집중식 보고를 위해 Oracle 데이터베이스 테이블을 Snowflake에 복제합니다.
라이선스 모델 및 중요한 제약 조건¶
Openflow Connector for Oracle 은 두 가지 별개의 라이선스 모델을 지원합니다. 설치하기 전에 올바른 모델을 선택해야 합니다. 올바른 모델을 선택하지 않으면 배포 실패 또는 의도하지 않은 재정 부담이 발생할 수 있습니다.
자세한 라이선스 약관, 비교 및 구성 지침은 :ref:`Oracle XStream 라이선스 <label-oracle_xstream_licensing>`를 참조하세요.
1. 임베디드 라이선스(Snowflake 제공)¶
Snowflake는 Oracle XStream 라이선스를 유료로 직접 제공합니다. 이 모델을 사용하면 Oracle과 직접 계약하지 않고도 XStream 복제를 사용할 수 있습니다. 자세한 내용은 임베디드 라이선스 세부 정보 및 `Oracle용 Openflow Connector 부록 <https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/openflow-oracle-terms/>`_을 참조하세요.
용어 |
세부 정보 |
|---|---|
청구 |
라이선스와 지원 및 유지 관리(S&M) 요금은 Snowflake 용량에서 차감됩니다. |
약정 |
활성화하면 60일 평가판 사용 후 36개월의 약정 기간이 시작되며 취소할 수 없습니다. |
수명 주기 |
|
관리 UI |
모든 라이선스 작업(평가판 시작/취소, 사용량 모니터링, 옵트아웃)은 Admin » Terms » Openflow for Oracle 아래의 Snowsight 에서 ORGADMIN에 의해 수행됩니다. 단계별 지침은 Openflow Connector for Oracle: 상업 약관 활성화 및 관리 섹션을 참조하십시오. |
제한 사항 |
다음 고객은 부적격합니다.
|
2. 독립 라이선스(Bring Your Own License - BYOL)¶
XStream 권한(예: Oracle GoldenGate 라이선스)이 포함된 자체 Oracle 라이선스를 제공합니다. 자세한 내용은 :ref:`독립 라이선스(BYOL) 세부 정보 <label-oracle_byol_license_details>`를 참조하세요.
용어 |
세부 정보 |
|---|---|
청구 |
Snowflake의 추가 라이선스 요금은 없습니다. 표준 저장소 및 컴퓨팅 비용(예: Openflow Compute)이 적용됩니다. |
규정 준수 |
Oracle 라이선스 준수에 대한 책임은 전적으로 사용자에게 있습니다. |
사용법 |
공공 부문, GCP 마켓플레이스, 리셀러 고객에게 필수입니다. |
Oracle XStream 라이선스 모델 선택하기¶
Openflow Connector for Oracle 에는 Oracle XStream 서비스에 대한 유료 라이선스가 필요합니다. 다음 두 가지 라이선스 모델을 사용할 수 있습니다.
임베디드 Oracle 라이선스
독립 Oracle 라이선스(Bring Your Own License - BYOL)
다음 테이블을 통해 조직에 적합한 모델을 결정합니다.
고려 사항 |
임베디드 라이선스 |
독립 라이선스(BYOL) |
|---|---|---|
대상 사용자 |
Oracle XStream 기술 라이선스가 필요하고 Snowflake 계약을 통해 직접 구매하려는 고객. |
이미 Oracle GoldenGate 라이선스가 있거나 XStream에 대한 권한을 제공하는 다른 Oracle 계약이 있는 고객. |
청구 |
소스 Oracle DB의 프로세서 코어 수를 기준으로 Snowflake를 통해 청구됩니다. 36개월 약정이 포함되며 취소할 수 없습니다. 지원 및 유지 관리 서비스에 대한 비용도 청구됩니다. 또한 표준 저장소 및 컴퓨팅 비용(예: Openflow Compute)이 적용됩니다. |
Snowflake의 Oracle XStream 서비스에 대한 추가 라이선스 또는 지원 및 유지 관리 비용은 없습니다. Oracle과의 모든 라이선스 및 규정 준수에 대한 직접적인 책임은 사용자에게 있습니다. 표준 저장소 및 컴퓨팅 비용(예: Openflow Compute)이 적용됩니다. |
구성 |
커넥터 매개 변수에 Oracle DB의 CPU 코어 수 및 프로세서 배율 계수를 입력해야 합니다. |
Snowflake에 CPU 코어 정보를 제공할 필요가 없습니다. |
평가판 기간 |
최대 16개의 라이선스 코어에 대해 60일 무료 평가판이 포함됩니다. 청구는 61일째 되는 날 자동으로 시작됩니다. |
Snowflake를 통해 평가판 기간이 제공되지 않습니다. 사용 시 기존 Oracle 계약이 적용됩니다. |
임베디드 라이선스 세부 정보¶
이 옵션을 선택하면 Snowflake를 통해 커넥터와 함께 Oracle XStream 기술을 사용할 수 있는 권한을 얻게 됩니다. 다음 주요 약관에 유의하세요.
청구¶
Oracle XStream 서비스 요금은 매월 청구되며 Snowflake 용량 잔액에서 차감됩니다. 요금에는 라이선스 요금과 지원 및 유지 관리(S&M) 요금이라는 두 가지 구성 요소가 있습니다. 라이선스 요금은 소스 Oracle 데이터베이스의 프로세서 코어 수에 Oracle 프로세서 코어 인자를 곱하여 계산됩니다.
약정(“61일 차” 규칙)¶
최대 16개의 라이선스 코어에 대해 처음 60일 동안은 무료입니다. 그러나 60일 평가판 이후에 커넥터를 활성화하면 36개월 청구 기간(“초기 기간”)이 시작되며 취소할 수 없습니다.
자동 변환: 청구는 61일째에 자동으로 시작됩니다. 요금이 청구되지 않도록 하려면 60일 이전에 Admin » Terms » Openflow for Oracle 대시보드에서 평가판을 취소해야 합니다.
잠금: 이 초기 기간 중에 Snowflake 계약이 해지되면 초기 기간의 나머지 잔액 전액이 즉시 지급되어야 합니다.
만기 후 갱신 및 페널티¶
초기 기간 이후에는 라이선스 요금이 $0가 되지만, 지원 및 유지 관리(S&M) 요금은 계속 부과됩니다.
옵트아웃 결과: Admin » Terms » :ui:`Openflow for Oracle`의 대시보드를 통해 S&M 갱신을 옵트아웃할 수 있습니다. 그러나 S&M 적용이 중지되면 커넥터 프로세서가 잠깁니다. 작업을 재개하려면 NEW 임베디드 라이선스를 구매해야 합니다(36개월 정가 약정 재설정).
요구 사항¶
커넥터 구성에서 프로세서 코어 수 및 올바른 코어 계수를 정확하게 보고할 책임은 사용자에게 있습니다. 소스 데이터베이스 하드웨어가 변경되는 경우 이 정보를 최신 상태로 유지해야 합니다.
제한 사항¶
이 옵션을 사용할 수 없는 경우는 다음과 같습니다.
공공 부문 엔터티(예: 정부 및 교육 기관).
GCP 마켓플레이스를 통해 Snowflake를 구매하는 고객.
서드 파티 리셀러(예: CDW, Optiv)를 통해 Snowflake와 계약한 고객.
구성¶
임베디드 라이선스를 구성하려면 다음을 수행합니다.
UI에 제시된 Oracle용 Openflow 커넥터 부록 약관을 검토하고 동의합니다.
Embedded License 유형을 선택합니다.
소스 Oracle 데이터베이스에 대한 CPU 코어 수 세부 정보인 **총 코어 수**(소스 데이터베이스 서버의 총 물리적 코어 수) 및 **코어 계수**(Oracle 프로세서 코어 계수(예: Intel 프로세서의 경우 0.5))를 입력합니다. 올바른 값은 Oracle 프로세서 코어 계수 테이블을 참조하세요.
독립 라이선스(BYOL) 세부 정보¶
이 옵션은 필요한 Oracle 기술에 대한 라이선스를 이미 보유한 고객을 위한 옵션입니다.
요구 사항¶
커넥터 사용이 기존 Oracle 라이선스 계약의 약관을 준수하는지 확인할 책임은 전적으로 사용자에게 있습니다. Snowflake는 Oracle 권한을 검증하거나 감사하지 않습니다.
구성¶
독립 라이선스(BYOL)를 구성하려면 다음을 수행합니다.
UI에 제시된 Oracle용 Openflow 커넥터 부록 약관을 검토하고 동의합니다.
Independent License 유형을 선택합니다.
커넥터를 구성할 때 코어 수 또는 청구 관련 정보를 입력하지 않고 진행합니다.
Openflow 요구사항¶
Openflow Connector for Oracle 에는 다음 Openflow 런타임 요구 사항이 적용됩니다.
지원되는 Oracle 버전 및 플랫폼¶
다음 Oracle 데이터베이스 버전 및 플랫폼이 지원됩니다.
Oracle 데이터베이스 버전 12cR2 이상
온프레미스 서버
Oracle Exadata
OCI VM/베어메탈
Oracle용 AWS 사용자 지정 RDS
Oracle용 AWS 표준 단일 테넌트 RDS
제한 사항¶
Openflow Connector for Oracle 에는 다음과 같은 제한 사항이 적용됩니다.
Oracle용 AWS 표준 다중 테넌트 RDS는 지원되지 않습니다.
Oracle Autonomous Databases(ATP/ADW)는 지원되지 않습니다.
Oracle Fusion Cloud Applications 및 NetSuite와 같은 Oracle SaaS 오퍼링은 지원되지 않습니다.
커넥터에는 BYOC에 대한 Openflow 배포 버전 0.55.0 이상이 필요합니다.
Openflow 런타임은 필수 Openflow 배포 버전이 설치된 후에 생성해야 합니다.
기본 키가 포함된 데이터베이스 테이블만 복제할 수 있습니다.
커넥터는 단일 데이터베이스/컨테이너(PDB 또는 CDB) 내에서 작동합니다. 여러 컨테이너에서 테이블을 복제하려면 각 컨테이너에 대해 별도의 커넥터 인스턴스를 구성해야 합니다.
커넥터는 삭제된 열을 다시 추가하는 기능을 지원하지 않습니다.
커넥터는 16MB보다 큰 개별 값을 복제하지 않습니다. 기본적으로, 이러한 값을 처리하면 연결된 테이블이 영구적으로 실패한 것으로 표시됩니다. 테이블 오류를 방지하려면 너무 큰 값 초과 시 전략 대상 매개 변수를 수정합니다.
커넥터의 작동 방식¶
다음 섹션에서는 복제, 스키마 변경, 데이터 보존 등 다양한 컨텍스트에서 커넥터가 작동하는 방식을 설명합니다.
테이블이 복제되는 방법¶
테이블은 다음 스테이지에서 복제됩니다.
스키마 자가 분석: 커넥터는 열 이름 및 유형을 포함한 소스 테이블의 열을 검색한 다음 Snowflake와 커넥터의 `제한 사항`_ 에 대해 유효성을 검사합니다. 검증에 실패하면 이 스테이지도 실패하고 주기가 완료됩니다. 이 스테이지가 성공적으로 완료되면 커넥터는 Snowflake에 빈 대상 테이블을 생성합니다.
스냅샷 로딩: 커넥터는 소스 테이블에서 사용 가능한 모든 데이터를 대상 테이블에 복사본으로 복사합니다. 이 스테이지에 실패하면 더 이상 데이터가 복제되지 않습니다. 성공적으로 완료되면 소스 테이블의 데이터를 대상 테이블에서 사용할 수 있습니다.
증분 로드: 커넥터는 소스 테이블의 변경 사항을 추적하고 해당 변경 사항을 대상 테이블에 적용합니다. 테이블이 복제에서 제거될 때까지 이 과정이 계속됩니다. 이 스테이지에서 실패하면 문제가 해결될 때까지 소스 테이블 복제가 영구적으로 중지됩니다.
테이블 복제 상태¶
연결 오류와 같은 임시 오류가 발생해도 테이블 복제가 멈추지 않습니다. 그러나 지원되지 않는 데이터 타입과 같은 영구적인 오류가 발생하면 테이블 복제가 이루어지지 않습니다.
복제 문제를 해결하거나 복제 흐름에서 테이블이 성공적으로 제거되었는지 확인하려면 테이블 상태 저장소를 확인합니다.
Openflow 런타임 캔버스에서 프로세서 그룹을 마우스 오른쪽 버튼으로 클릭하고 :ui:`Controller Services`를 선택합니다. 컨트롤러 서비스 목록을 보여주는 테이블이 표시됩니다.
Table State Store 레이블이 지정된 행을 찾아 행의 오른쪽에 있는 More
버튼을 클릭한 다음 :ui:`View State`를 선택합니다.
테이블과 테이블의 현재 상태 목록이 표시됩니다. 검색 상자에 테이블 이름을 입력하여 테이블 이름으로 목록을 필터링합니다. 가능한 상태는 다음과 같습니다.
NEW: 테이블 복제가 예약되었지만 복제가 시작되지 않았습니다.
SNAPSHOT_REPLICATION: 커넥터가 기존 데이터를 복사하고 있습니다. 이 상태는 모든 레코드가 대상 테이블에 저장될 때까지 표시됩니다.
INCREMENTAL_REPLICATION: 커넥터가 변경 사항을 적극적으로 복제하고 있습니다. 이 상태는 스냅샷 복제가 끝난 후에 표시되며 테이블이 복제에서 제거되거나 복제가 실패할 때까지 무기한으로 계속 표시됩니다.
FAILED: 오류로 인해 복제가 영구적으로 중지되었습니다.
참고
Openflow 런타임 캔버스에 테이블 상태 변경 사항은 표시되지 않고 현재 테이블 상태만 표시됩니다. 그러나 테이블 상태 변경은 발생 시 로그에 기록됩니다. 다음 로그 메시지를 찾습니다.
Replication state for table <database_name>.<schema_name>.<table_name> changed from <old_state> to <new_state>
영구적인 오류로 인해 테이블 복제가 불가능한 경우 복제에서 테이블을 제거합니다. 실패의 원인이 된 문제를 해결한 후에는 테이블을 복제에 다시 추가할 수 있습니다. 자세한 내용은 :ref:`테이블 복제 다시 시작 <label-of_oracle_restart_table_replication>`을 참조하세요.
데이터 보존¶
데이터 보존 이해하기¶
커넥터는 고객 데이터가 자동으로 삭제되지 않는다는 데이터 보존 원칙을 따릅니다. 복제된 데이터에 대한 모든 소유권과 제어 권한은 사용자가 유지하며, 커넥터는 과거 정보를 영구적으로 제거하지 않고 보존합니다.
이 접근 방식에는 다음과 같은 의미가 있습니다.
소스 테이블에서 삭제된 행은 물리적으로 제거되지 않고 대상 테이블에서 일시 삭제됩니다.
소스 테이블에서 삭제된 열은 삭제되지 않고 대상 테이블에서 이름이 변경됩니다.
저널 테이블은 무기한으로 보존되며 자동으로 정리되지 않습니다.
대상 테이블 메타데이터 열¶
각 대상 테이블에는 복제 정보를 추적하는 다음 메타데이터 열이 포함됩니다.
열 이름 |
타입 |
설명 |
|---|---|---|
|
TIMESTAMP_NTZ |
행이 원래 대상 테이블에 삽입된 시간의 타임스탬프입니다. |
|
TIMESTAMP_NTZ |
대상 테이블에서 행이 마지막으로 업데이트된 시간의 타임스탬프입니다. |
|
BOOLEAN |
행이 소스 테이블에서 삭제되었는지 여부를 나타냅니다. ``true``인 경우, 행은 일시 삭제되며 소스에 더 이상 존재하지 않습니다. |
일시 삭제된 행¶
소스 테이블에서 행이 삭제될 때 커넥터는 대상 테이블에서 해당 행을 물리적으로 제거하지 않습니다. 대신 _SNOWFLAKE_DELETED 메타데이터를 ``true``로 설정하여 행이 삭제된 것으로 표시됩니다.
이러한 접근 방식을 통해 다음을 수행할 수 있습니다.
감사 또는 규정 준수 목적으로 과거 데이터를 보존합니다.
필요할 때 삭제된 레코드를 쿼리합니다.
요구 사항에 따라 데이터를 영구적으로 제거하는 시기와 방법을 결정합니다.
활성(삭제되지 않은) 행만 쿼리하려면 _SNOWFLAKE_DELETED 열에서 필터링합니다.
SELECT * FROM my_table WHERE _SNOWFLAKE_DELETED = FALSE;
삭제된 행을 쿼리하려면 다음을 수행합니다.
SELECT * FROM my_table WHERE _SNOWFLAKE_DELETED = TRUE;
삭제된 열¶
소스 테이블에서 열이 삭제될 때 커넥터는 대상 테이블에서 해당 열을 삭제하지 않습니다. 대신 과거 값을 보존하기 위해 __SNOWFLAKE_DELETED 접미사를 추가하여 열의 이름이 변경됩니다.
예를 들어, ``EMAIL``이라는 열이 소스 테이블에서 삭제되면 대상 테이블의 이름이 ``EMAIL__SNOWFLAKE_DELETED``로 변경됩니다. 열이 삭제되기 전에 존재했던 행은 원래 값을 유지하는 반면, 삭제 후에 추가된 행은 이 열에 ``NULL``이 있습니다.
이름이 변경된 열에서 과거 값을 계속 쿼리할 수 있습니다.
SELECT EMAIL__SNOWFLAKE_DELETED FROM my_table;
이름이 변경된 열¶
변경 데이터 캡처(CDC) 메커니즘의 제한 사항으로 인해 커넥터는 이름이 변경된 열과 삭제된 후 추가된 새 열을 구분할 수 없습니다. 결과적으로, 소스 테이블에서 열의 이름을 변경하는 경우 커넥터는 이를 두 개의 별개 작업(원래 열 삭제 및 새 이름으로 새 열 추가)으로 처리합니다.
예를 들어, 소스 테이블에서 열의 이름을 ``A``에서 ``B``로 변경하는 경우 대상 테이블에는 다음이 포함됩니다.
A__SNOWFLAKE_DELETED: 이름 변경 전의 값을 포함합니다. 이름 변경 후에 추가된 행은 이 열에 ``NULL``이 있습니다.B: 이름 변경 이후의 값을 포함합니다. 이름 변경 전에 존재했던 행은 이 열에 ``NULL``이 있습니다.
이름이 변경된 열 쿼리하기¶
원래 열과 이름이 변경된 열 모두에서 데이터를 단일 통합 열로 검색하려면 COALESCE 또는 CASE 식을 사용합니다.
SELECT
COALESCE(B, A__SNOWFLAKE_DELETED) AS A_RENAMED_TO_B
FROM my_table;
또는 CASE 식을 사용합니다.
SELECT
CASE
WHEN B IS NOT NULL THEN B
ELSE A__SNOWFLAKE_DELETED
END AS A_RENAMED_TO_B
FROM my_table;
이름이 변경된 열에 대한 뷰 생성하기¶
대상 테이블을 수동으로 수정하는 대신, 이름이 변경된 열을 단일 통합 열로 표시하는 뷰를 생성할 수 있습니다. 이러한 접근 방식은 원본 데이터를 보존하고 지속적인 복제와 관련된 잠재적인 문제를 방지하므로 권장됩니다.
CREATE VIEW my_table_unified AS
SELECT
*,
COALESCE(B, A__SNOWFLAKE_DELETED) AS A_RENAMED_TO_B
FROM my_table;
중요
대상 테이블 구조를 수동으로 수정(예: 열 삭제 또는 이름 변경)하는 작업은 진행 중인 복제를 방해하고 데이터 불일치를 유발할 수 있으므로 권장되지 않습니다.
저널 테이블¶
증분 복제 중에 소스 데이터베이스의 변경 사항은 대상 테이블에 병합되기 전에 먼저 저널 테이블에 기록됩니다. 이러한 데이터는 감사, 디버깅 또는 재처리 목적으로 유용할 수 있으므로 커넥터는 저널 테이블에서 데이터를 자동으로 제거하지 않습니다.
저널 테이블은 해당 대상 테이블과 동일한 스키마에 생성되며 다음 명명 규칙을 따릅니다.
<TABLE_NAME>_JOURNAL_<timestamp>_<number>
여기서
``<TABLE_NAME>``은 대상 테이블의 이름입니다.
``<timestamp>``는 Unix epoch 형식의 생성 타임스탬프(1970년 1월 1일 이후의 초)로, 고유성을 보장합니다.
``<number>``는 1에서 시작하며 소스 테이블의 스키마 변경 또는 열 필터의 수정으로 인해 대상 테이블 스키마가 변경될 때마다 증가합니다.
예를 들어 대상 테이블이 ``SALES.ORDERS``인 경우 저널 테이블의 이름은 ``SALES.ORDERS_JOURNAL_1705320000_1``일 수 있습니다.
중요
복제가 진행되는 동안 저널 테이블을 삭제하지 마세요. 활성 저널 테이블을 제거하면 데이터 손실 또는 복제 실패가 발생할 수 있습니다. 해당 소스 테이블이 복제에서 완전히 제거된 후에만 저널 테이블을 삭제합니다.
저널 테이블 저장소 관리하기¶
오래된 저널 데이터를 제거하여 저장소 비용을 관리해야 하는 경우 더 이상 복제되지 않는 테이블의 저널 테이블을 주기적으로 정리하는 Snowflake 태스크를 생성할 수 있습니다.
저널 정리를 구현하기 전에 다음을 확인합니다.
해당 소스 테이블이 복제에서 완전히 제거되었습니다.
감사 또는 처리 목적으로 더 이상 저널 데이터가 필요하지 않습니다.
자동 정리를 위한 태스크 생성 및 관리에 대한 자세한 내용은 :doc:`태스크 소개 </user-guide/tasks-intro>`를 참조하세요.
다음 단계¶
이 항목을 검토한 후 고려할 만한 다음 단계는 다음과 같습니다.
커넥터를 활성화하려면 Openflow Connector for Oracle: 상업 약관 활성화 및 관리 를 검토하고, Oracle XStream 약관에 동의하고, 라이선스 모델을 구성합니다.
커넥터가 데이터 타입을 Snowflake 데이터 타입에 매핑하는 방법을 이해하려면 Openflow Connector for Oracle: 데이터 매핑 섹션을 검토합니다.
커넥터를 설정하려면 |OracleOFC|에 대한 작업 설정 섹션을 검토합니다.