데이터베이스 연결, 시스템 및 파라미터 설정 준비
Oracle용 Oracle GoldenGate에 대한 데이터베이스 연결, 시스템 및 매개변수 설정을 구성하는 방법을 알아봅니다.
GoldenGate 복제 및 아카이브 모드 사용
1단계: GoldenGate 복제 사용
Oracle GoldenGate Extract 및 Replicat를 지원하는 데 필요한 데이터베이스 서비스는 Oracle AI Database에 대해 명시적으로 사용으로 설정해야 합니다.
Oracle GoldenGate 복제를 사용으로 설정하려면 다음 데이터베이스 초기화 매개변수를 설정합니다. Oracle GoldenGate를 임의의 노드에서 사용하는 경우 Oracle RAC의 모든 인스턴스에서 이 값을 TRUE로 설정해야 합니다.
ALTER SYSTEM SET enable_goldengate_replication = true SCOPTE=both;
이 매개변수에 대한 자세한 내용은 초기화 매개변수를 참조하십시오.
단계 2: 아카이브 모드 활성화
Extract가 로그 파일을 처리할 수 있도록 Oracle Databases는 ARCHIVELOG 모드여야 합니다. ARCHIVELOG 모드를 켜려면 데이터베이스 아카이브 모드 변경에 제공된 단계를 따릅니다.
Flashback Query 설정
Oracle GoldenGate가 인출하는 데이터에 대해 알아보려면 Oracle 데이터 유형 및 객체에 대한 지원 세부정보를 참조하십시오.
기본적으로 Oracle GoldenGate는 Flashback Query를 사용하여 언두(롤백) 테이블스페이스에서 값을 패치(fetch)합니다. 이러한 방식으로 Oracle GoldenGate는 리두 레코드와 일치하도록 특정 시간 또는 SCN을 기준으로 읽기 일관성 행 이미지를 재구성할 수 있습니다.
최상의 패치(fetch) 결과를 얻으려면 다음과 같이 원본 데이터베이스를 구성합니다.
-
Oracle 초기화 매개변수
UNDO_MANAGEMENT및UNDO_RETENTION를 다음과 같이 설정하여 충분한 양의 리두 보존을 설정합니다(초).UNDO_MANAGEMENT=AUTO UNDO_RETENTION=86400 UNDO_RETENTION can be adjusted upward in high-volume environments. -
다음 공식을 사용하여 언두 테이블스페이스에 필요한 공간을 계산합니다.
*undo_space* = UNDO_RETENTION * *UPS* + *overhead*설명:
-
undo_space는 실행 취소 블록 수입니다.
-
UNDO_RETENTION는UNDO_RETENTION매개변수의 값(초)입니다. -
UPS는 초당 언두 블록 수입니다.
-
오버헤드는 메타데이터(트랜잭션 테이블 등)에 대한 최소 오버헤드입니다.
시스템 뷰
V$UNDOSTAT를 사용하여 UPS 및 오버헤드를 예측합니다. -
-
LOBs가 포함된 테이블의 경우 다음 중 하나를 수행합니다.-
LOB저장 영역 절을RETENTION로 설정합니다.UNDO_MANAGEMENT가AUTO로 설정된 경우 생성되는 테이블의 기본값입니다. -
RETENTION대신PCTVERSION를 사용하는 경우PCTVERSION를 초기 값 25로 설정합니다.STATS EXTRACT명령으로 보고되는 인출 통계에 따라 조정할 수 있습니다. 이러한 통계에서STAT_OPER_ROWFETCHCURRENTBYROWID또는STAT_OPER_ROWFETCH_CURRENTBYKEY필드의 값이 높으면 통계에 낮은 값이 표시될 때까지PCTVERSION를 10씩 증가시킵니다.
-
Oracle GoldenGate는 인출 관리를 위해 다음 매개변수를 제공합니다.
| 매개변수 또는 명령 | 설명 |
|---|---|
STATS EXTRACT 명령과 REPORTFETCH 옵션 |
요청 시 추출 인출 통계를 표시합니다. |
REPORTFETCH 옵션이 있는 STATOPTIONS 매개변수 |
항상 인출 통계를 표시하도록 STATS EXTRACT 명령을 설정합니다. |
MAXFETCHSTATEMENTS 매개변수 |
Extract가 소스 데이터베이스 및 SQLEXEC 작업에 대해 유지 관리하는 준비된 질의에 대한 열린 커서 수를 제어합니다. |
MAXFETCHSTATEMENTS 매개변수 |
Extract의 기본 인출 동작을 제어합니다. Extract가 flashback 질의를 수행할지 또는 테이블에서 현재 이미지를 인출할지 여부입니다. |
USELATESTVERSION 또는 NOUSELATESTVERSION 옵션이 있는 FETCHOPTIONS 매개변수 |
언두 Retention이 만료되었거나 테이블의 구조가 변경된 경우와 같이 Extract Flashback 질의 실패를 처리합니다. Extract가 테이블에서 현재 이미지를 인출하거나 실패를 무시할 수 있습니다. |
REPFETCHEDCOLOPTIONS 매개변수 |
인출된 데이터 또는 열 누락 조건이 포함된 추적 레코드를 처리할 때 Replicat가 응답을 제어합니다. |
기타 데이터베이스 속성 처리
Oracle GoldenGate에 영향을 줄 수 있는 일부 데이터베이스 속성과 특정 조건을 해결하거나 해결하는 데 사용되는 매개변수가 있습니다.
다음 표에는 데이터베이스 등록 정보 및 연관된 문제/해결 방법이 나열되어 있습니다.
| 데이터베이스 속성 | 우려/해결 |
|---|---|
| 간격 Partitioning이 있는 테이블 | 간격 Partitioning이 있는 테이블을 지원하려면 WILDCARDRESOLVE 파라미터가 기본값인 DYNAMIC로 유지되도록 합니다. |
| 가상 열이 있는 테이블 | 가상 열은 기록되지 않으며 Oracle은 가상 열에 대해 DML을 허용하지 않습니다. 그러나 다음을 수행하여 이 데이터를 캡처하고 가상 열이 아닌 대상 열에 매핑할 수 있습니다. Extract Replicat |
| 본질적으로 갱신 가능한 뷰가 있는 테이블 | 본질적으로 갱신 가능한 뷰로 복제하려면 연관된 소스 및 대상 테이블이 매핑되는 동일한 MAP 문에서 KEYCOLS 절을 사용하여 갱신 가능한 뷰의 고유 열에 대한 키를 정의합니다. |
| 다른 위치에 있는 리두 로그 또는 아카이브 | TRANLOGOPTIONS 매개변수에는 리두 로그 또는 아카이브가 데이터베이스 기본값과 다른 위치에 저장되거나 Extract가 실행 중인 플랫폼과 다른 위치에 저장되는 환경을 처리하는 옵션이 포함되어 있습니다. |
TRUNCATE 작업 |
|
| 시퀀스 | 시퀀스에 대한 DDL( 시퀀스 값만 복제하려면 Extract 매개변수 파일에서 |
다중 테넌트 컨테이너 데이터베이스 구성
Oracle GoldenGate with Oracle AI Database를 사용하면 소스 및 대상에 대한 PDB(플러거블 데이터베이스)를 구현할 수 있습니다. Extract는 PDB별 추출이라고 하는 특정 PDB에 대해 등록됩니다.
주: 다운스트림 Extract 구성의 경우를 제외하고 c##ggadmin 사용자를 사용한 루트 레벨 액세스는 권장되지 않습니다. 루트 레벨 Extract 대신 PDB별 레벨에서 Extract를 사용합니다.
다음 다이어그램은 다중 테넌트 컨테이너 데이터베이스 구성에서 다양한 접근 방식에 대한 구성을 보여줍니다.

PDB에서 직접 Extract를 추가하면 격리된 PDB에서 캡처되어 PDB 레벨에서 소유권 및 책임이 관리됩니다.
PDB별 추출을 사용하여 로컬 PDB 사용자(예: ggadmin)로 연결한 다음 이 추출을 데이터베이스에 등록할 수 있습니다. 이미 PDB 사용자로 로그인되어 있으므로 추가 container 절은 필요하지 않습니다. 마찬가지로 SOURCECATALOG 또는 3부 이름 지정 규칙도 필요하지 않습니다.
추출을 설정하려면 추출 추가를 참조하십시오.
다중 테넌트 컨테이너 데이터베이스 구성에 대한 고려 사항
Oracle GoldenGate를 사용하여 데이터 복제를 위한 다중 테넌트 컨테이너 데이터베이스를 구성할 때는 다음 지침을 고려하십시오.
-
다중 테넌트 컨테이너 데이터베이스에서 플러그 가능한 여러 데이터베이스는 서로 다른 Character Set을 가질 수 있습니다. Oracle GoldenGate는 서로 다른 문자 집합이 있는 모든 다중 테넌트 데이터베이스의 데이터를 하나의 트레일 파일로 캡처하고 서로 다른 문자 집합을 사용하여 손상되지 않은 상태로 데이터를 복제합니다.
-
PDB별 Extract를 생성하고 등록하려면 PDB 레벨 액세스를 위해 생성된
ggadmin과 같은 PDB 사용자에 접속해야 합니다.USERIDALIAS매개변수를 사용하여 SQLNet 연결 문자열(예:ggadmin@pdbeast)을 구성합니다. PDB별 추출을 설정하려면 컨테이너 절 또는SOURCECATALOG가 필요하지 *않습니다. -
PDB 사용자 이름, CDB 사용자 이름 또는 GLOBAL_NAME에 대시가 포함된 경우 Oracle GoldenGate는 다음 오류를 발생시킵니다.
ERROR OGG-08221 Cannot register or unregister EXTRACT <extract_name> because of the following SQL error: OCI Error ORA (status = 44004-ORA-44004: invalid qualified SQL name -
소스 CDB 12.2를 지원하려면 Extract가 트레일 형식을 릴리스 12.3으로 지정해야 합니다. 리두 로그의 변경으로 인해 Oracle 12.2 이상의 다중 테넌트 데이터베이스에서 캡처하려면 트레일 형식 릴리스가 12.3 이상이어야 합니다.
-
DDL 복제는 다중 테넌트 데이터베이스에 대한 일반 복제로 작동합니다.
Oracle GoldenGate 인증서에 다중 테넌트 컨테이너 데이터베이스 사용자를 추가하려면 데이터베이스 접속 추가를 참조하십시오. 구성해야 하는 Oracle AI Database 설치에 따라 Grant User Privileges for Oracle Database 21c and Lower 또는 Grant User Privileges for Oracle AI Database 26ai and Higher를 참조하십시오.
다중 테넌트 컨테이너 데이터베이스에 대한 비우기 시퀀스
sequence.sql 스크립트가 데이터베이스의 GoldenGate 관리 스키마에 데이터베이스 프로시저를 적용하는 경우 Oracle GoldenGate 내에서만 FLUSH SEQUENCE 명령을 사용할 수 있습니다.
초기 동기화 또는 재동기화 중 처음 Extract를 처음 시작한 후 바로 FLUSH SEQUENCE 명령을 사용합니다. 이 명령은 Extract가 트랜잭션 데이터 캡처를 시작할 때 초기 리두 레코드가 제공되도록 Oracle 시퀀스를 업데이트합니다. 일반적으로 현재 캐시가 완전히 사용될 때까지는 리두가 생성되지 않습니다. 비우기는 Replicat에 대상 시스템의 올바른 시퀀스 값과 동기화할 초기 시작점을 제공합니다. 그러면 Extract는 시퀀스 값의 일반적인 캐시 예약과 연관된 리두를 사용할 수 있습니다. 1. FLUSH SEQUENCE에 사용되는 Oracle 프로시저는 다음과 같습니다.
| Database | Procedure | User and Privileges |
| --- | --- | --- |
| Source | `updateSequence` | Grants `EXECUTE` to the owner of the Oracle GoldenGate DDL objects, or other selected user if not using DDL support. |
| Target | `replicateSequence` | Grants `EXECUTE` to the Oracle GoldenGate Replicat user. |
{: summary="This table lists the Oracle procedures used by FLUSH SEQUENCE. It gives the database, procedure, and user and privileges." }
The `sequence.sql` script installs these procedures. Normally, this script is run as part of the Oracle GoldenGate installation process, but make certain that was done before using `FLUSH SEQUENCE`. If `sequence.sql` was not run, the flush fails and an error message similar to the following is generated:
<pre class="copy"><code>Cannot flush sequence {0}. Refer to the Oracle GoldenGate for Oracle documentation for instructions on how to set up and run the sequence.sql script. Error {1}.</code></pre>
FLUSH SEQUENCE를 사용하기 전에DBLOGIN명령을 사용하여 데이터베이스에 접속합니다.
시퀀스 복제가 필요한 각 PDB에 Oracle GoldenGate 사용자를 생성하려면 PDB 레벨에서 FLUSH SEQUENCE를 실행해야 합니다. DBLOGIN를 사용하여 해당 PDB에 로그인하고 FLUSH SEQUENCE 명령을 실행합니다.
GGSCHEMA GLOBALS 매개변수 파일과 함께 작동하도록 각 PDB에서 동일한 스키마를 사용하는 것이 좋습니다.
다음 예제에서 환경 설정은 Oracle 21c to Oracle 21c Replication, 통합된 Extract, Oracle GoldenGate 21c(21.3.0)를 사용하는 병렬 Replicat에 대한 것입니다.
다음 표에서는 데이터베이스에 접속하기 위한 소스 및 대상 CDB, PDB 및 해당 사용자 인증서의 이름을 나열합니다.
| 소스 CDB | 대상 CDB |
|---|---|
NORTH |
SOUTH |
PDB 이름: DBEAST |
PDB 이름: DBWEST |
일반 사용자: 시퀀스에 대한 PDB 사용자: |
PDB 유저: ggadmin |
sqlplus system/manager
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggate IDENTIFIED BY *password* DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;
@sequence.sql 실행
sqlplus system/manager
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql
프롬프트가 표시되면 다음을 입력합니다.
GGADMIN
FLUSH SEQUENCE 명령을 실행합니다.
DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*
대상 Oracle GoldenGate 구성:
sqlplus system/manager
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql
프롬프트가 표시되면 PDB 사용자 이름 ggadmin을 입력합니다.
이는 캡처하려는 각 PDB에서도 실행해야 하는 @sequence.sql 스크립트에도 적용됩니다.