YugabyteDB: 스키마 변경 처리

YugabyteDB용 Oracle GoldenGate의 스키마 변경 처리에 대해 알아봅니다.

스키마 변경 처리를 위한 필요 조건

유가바이트 데이터베이스의 테이블 및 열 레벨에서 스키마 변경을 지원하려면 T-Server 및 마스터 플래그 목록에서 다음 구성이 필요합니다.

cdcsdk_publication_list_refresh_interval_secs

cdcsdk_enable_dynamic_table_support

Oracle GoldenGate for Yugabyte의 스키마 변경 처리 지침

다음 지침은 유가바이트 데이터베이스에서 DDL 작업을 수행할 때 중요하므로 반드시 고려해야 합니다.

테이블 레벨 스키마 변경 처리

YugabyteDB용 Oracle GoldenGate에서 테이블 레벨 스키마 변경 처리에 대해 알아봅니다.

기존 추출 프로세스에 새 테이블 추가

이 절차는 유가바이트의 게시 구성에 따라 달라집니다. 다음과 같은 두 가지 유형의 출판물이 있습니다.

  1. Publication Configured for All Tables: 이 게시 유형에서는 새 테이블이 동적으로 추가되며 게시에 대한 변경이 필요하지 않습니다.

  2. 테이블 집합에 대해 구성된 게시: 새 테이블이 생성되면 새 테이블을 포함하도록 게시를 변경해야 합니다.

기존 추출 프로세스에 새 테이블 추가

다음은 기존 추출 프로세스에 대한 새 테이블을 추가하는 일반적인 단계입니다. 1. 변경하기 전에 추출 프로세스를 중지하십시오.

  1. Extract 구성에 새 테이블을 추가하도록 Extract 매개변수 파일을 업데이트합니다.

  2. cdcsdk_publication_list_refresh_interval_secs에 정의된 새로고침 간격을 기다립니다.

    선택적으로, 작은 버퍼 창을 통해 테이블이 CDC 모듈에서 완전히 새로 고쳐지도록 할 수 있습니다.

  3. 새로고침 간격이 완료된 후 추출 프로세스를 재시작하십시오.

  4. 새 테이블에서 DML 작업을 수행합니다.

  5. Extract가 새 레코드를 성공적으로 캡처하는지 확인합니다.

기존 추출 프로세스에 새 테이블 추가 - 예제

다음 예에 대한 시나리오를 고려하십시오.

두 개의 등록이 구성된 테이블 하나가 있습니다.

다음 예에서는 이전 고려 사항에 따라 기존 추출 프로세스에 새 테이블을 추가하는 단계를 제공합니다.

  1. Ext1 및 Ext2를 중지합니다.

  2. 새 테이블(table2, table3)을 생성합니다.

  3. Ext1 및 Ext2에 대한 추출 매개변수 파일을 업데이트합니다.

  4. 새 테이블을 포함하도록 pub1를 변경합니다. Pub2는 변경할 필요가 없습니다.

  5. Ext1 및 Ext2를 다시 시작합니다.

  6. 새로고침 간격(cdcsdk_publication_list_refresh_interval_secs)을 기다립니다.

  7. 새 테이블에 대해 DML 작업을 수행하고 두 Extracts가 성공적으로 해당 테이블을 캡처하는지 확인합니다.

추출 프로세스에서 테이블 삭제

테이블을 삭제할 때 고려해야 할 두 가지 시나리오는 다음과 같습니다.

테이블이 게시의 일부입니다.

테이블이 게시에 포함된 경우 테이블 삭제가 허용되지 않습니다. 이 시나리오에서 테이블을 삭제하려고 하면 Extract에서 사용하는 스트림 또는 복제 슬롯을 사용할 수 없게 만들고 다음과 같은 오류가 발생할 수 있습니다.

2026-03-04 11:21:44 ERROR OGG-30611 Yugabyte has closed the streaming client and has caused the Extract to abend.
Error: ERROR: XX000: LookupByIdRpc(tablet: d092b524eff34d21b45c78ead108122a, num_attempts: 1) failed: Tablet deleted: Table deleted at 2026-03-04 11:21:44 UTC.
CONTEXT: Catalog Version Mismatch: A DDL occurred while processing this query. Try again.LOCATION: YBPrepareCacheRefreshIfNeeded, postgres.c:4160.

또는

2026-03-04 11:22:51 ERROR OGG-30605 Dropping any table used by the Extract will cause the Extract to abend and disconnect the YDB streaming client.
Error: ERROR: XX000: VirtualWAL initialisation failed for stream_id: afdaa2e91ebc288be74724e8fb780342 & session_id: 51: Table 000033cf00003000800000000000400f not found under stream
CONTEXT: Catalog Version Mismatch: A DDL occurred while processing this query. Try again.LOCATION: YBPrepareCacheRefreshIfNeeded, postgres.c:4160.

주의: 이러한 오류가 발생할 경우 유일한 해결 방법은 영향을 받는 Extract의 등록을 해제하고 다시 등록하는 것입니다. 이 단계는 일반 operation.This를 복원하는 데 중요하므로 데이터 손실이 발생할 수도 있습니다. 따라서 주의가 필요합니다.

테이블이 게시의 일부가 아님

테이블이 게시에 포함되지 않은 경우 삭제해도 스트림에 영향을 주지 않습니다. 필요한 작업이 없으며 평소와 같이 복제가 계속됩니다.

열 레벨 스키마 변경 처리

YugabyteDB용 Oracle GoldenGate에서 열 추가 및 삭제와 같은 열 레벨 스키마 변경 처리에 대해 알아봅니다.

컬럼 추가

게시의 일부인 테이블에 대해 ALTER TABLE … ADD COLUMN 작업을 수행하는 방법: 1. 테이블에 열을 추가하기 전에 추출 프로세스를 중지하십시오. 그러면 Extract가 비정상 종료되지 않습니다.

  1. 다음 명령을 사용하여 등록에 포함된 테이블에 열을 추가합니다.

    ALTER TABLE...ADD COLUMN
  2. cdcsdk_publication_list_refresh_interval_secs에 지정된 기간 동안 CDC 모듈이 새로 고쳐지고 새 열이 인식될 때까지 기다립니다.

  3. 새 열에서 모든 DML 작업(INSERTS, UPDATES 또는 DELETES)을 실행합니다.

  4. Extract 프로세스를 재시작하고 새 열에 대한 DML 작업을 포함한 변경 사항이 성공적으로 캡처되었는지 확인합니다.

열 끌어 놓기

게시의 일부인 테이블에서 열을 삭제하려면 1을 선택합니다. Extract 프로세스를 정지합니다. 일반적으로 열을 삭제해도 Extract가 비정상 종료되지는 않지만, 스키마를 변경하기 전에 Extract를 정지하는 것이 좋습니다.

  1. 설명서에 포함된 테이블에서 다음 명령을 실행합니다.

    ALTER TABLE ... DROP COLUMN
  2. cdcsdk_publication_list_refresh_interval_secs에 지정된 기간이 CDC 모듈이 업데이트될 때까지 기다립니다.

  3. 필요에 따라 모든 DML 작업(INSERT, UPDATE, DELETE)을 실행합니다.

  4. Extract를 재시작하고 나머지 열에 대한 DML 작업이 계속 올바르게 캡처되는지 확인합니다.