Oracle GoldenGate 설정 - Amazon Relational Database Service

Oracle GoldenGate 설정

Amazon RDS를 사용하는 Oracle GoldenGate를 설정하려면 Amazon EC2 인스턴스에서 허브를 구성한 후 소스 및 대상 데이터베이스를 구성해야 합니다. 다음 섹션에서는 Amazon RDS for Oracle과 함께 사용하도록 Oracle GoldenGate를 설치하는 방법을 보여줍니다.

Amazon EC2에 Oracle GoldenGate 허브 설정

Amazon EC2 인스턴스에서 Oracle GoldenGate 허브를 생성하려면 먼저 Oracle DBMS의 전체 클라이언트 설치가 완료된 Amazon EC2 인스턴스를 생성해야 합니다. Amazon EC2 인스턴스에는 Oracle GoldenGate 소프트웨어도 설치되어 있어야 합니다. Oracle GoldenGate 소프트웨어 버전은 소스 및 대상 데이터베이스 버전에 따라 달라집니다. Oracle GoldenGate 설치에 대한 자세한 내용은 Oracle GoldenGate 설명서를 참조하십시오.

Oracle GoldenGate 허브 역할을 하는 Amazon EC2 인스턴스는 원본 데이터베이스의 트랜잭션 정보를 추적 파일로 저장 및 처리합니다. 이 프로세스를 지원하려면 다음 요구 사항을 충족해야 합니다.

  • 트레일 파일을 위한 충분한 저장 공간을 할당한 상태여야 합니다.

  • Amazon EC2 인스턴스에 해당 데이터 용량을 관리할 수 있는 충분한 처리 능력이 있어야 합니다.

  • 트랜잭션 정보를 추적 파일에 기록하기 전에 해당 정보를 저장할 충분한 메모리가 EC2 인스턴스에 있어야 합니다.

Amazon EC2 인스턴스에서 Oracle GoldenGate 클래식 아키텍처 허브를 설정하려면
  1. Oracle GoldenGate 디렉터리에서 하위 디렉터리를 만듭니다.

    Amazon EC2 명령줄 쉘에서 Oracle GoldenGate 명령 인터프리터인 ggsci를 시작합니다. CREATE SUBDIRS 명령은 /gg 디렉터리에 파라미터, 보고서 및 체크포인트 파일용 하위 디렉터리를 만듭니다.

    prompt$ cd /gg prompt$ ./ggsci GGSCI> CREATE SUBDIRS
  2. mgr.prm 파일을 구성합니다.

    다음 예에서는 $GGHOME/dirprm/mgr.prm 파일에 라인을 추가합니다.

    PORT 8199 PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5
  3. 관리자를 시작합니다.

    다음 예제에서는 ggsci를 시작하고 start mgr 명령을 실행합니다.

    GGSCI> start mgr

이제 Oracle GoldenGate 허브를 사용할 수 있습니다.

Amazon RDS에서 Oracle GoldenGate와 함께 사용할 소스 데이터베이스 설정

다음 작업을 완료하여 Oracle GoldenGate에서 사용할 소스 데이터베이스를 설정합니다.

1단계: 소스 데이터베이스에서 보충 로깅 켜기

최소 데이터베이스 수준 보충 로깅을 설정하려면 다음 PL/SQL 프로시저를 실행합니다.

EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD')

2단계: ENABLE_GOLDENGATE_REPLICATION 초기화 파라미터를 true로 설정

ENABLE_GOLDENGATE_REPLICATION 초기화 파라미터를 true로 설정하면 데이터베이스 서비스가 논리적 복제를 지원할 수 있습니다. 소스 데이터베이스가 Amazon RDS DB 인스턴스에 있는 경우 파라미터 그룹을 DB 인스턴스에 할당하고 ENABLE_GOLDENGATE_REPLICATION 초기화 파라미터를 true로 설정해야 합니다. ENABLE_GOLDENGATE_REPLICATION 초기화 파라미터에 대한 자세한 내용은 Oracle 데이터베이스 설명서를 참조하세요.

3단계: 소스 데이터베이스에서 로그 보존 기간 설정

보관된 다시 실행 로그를 유지하도록 원본 데이터베이스를 구성했는지 확인합니다. 다음 지침을 참고하세요.

  • 로그 보존 기간을 시간 단위로 지정합니다. 최소값은 1시간입니다.

  • 소스 DB 인스턴스의 잠재적 가동 중지 시간, 잠재적 통신 시간, 소스 인스턴스의 네트워킹 문제가 발생할 잠재적 기간보다 긴 기간을 설정합니다. 이러한 기간을 통해 Oracle GoldenGate는 필요에 따라 원본 인스턴스에서 로그를 복구할 수 있습니다.

  • 인스턴스에 파일을 저장할 스토리지가 충분한지 확인합니다.

예를 들어 보관된 다시 실행 로그의 보존 기간을 24시간으로 설정합니다.

EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24)

로그 보존을 활성화하지 않거나 보존 값이 너무 작으면 다음과 비슷한 오류 메시지가 표시됩니다.

2022-03-06 06:17:27 ERROR OGG-00446 error 2 (No such file or directory) opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 Not able to establish initial position for begin time 2022-03-06 06:16:55.

DB 인스턴스는 보관된 다시 실행 로그를 보관하니, 파일을 저장할 공간이 충분한지 확인해야 합니다. 지난 num_hours시간 동안 사용한 공간의 양을 확인하려면 다음 쿼리를 사용하여 num_hours를 시간 숫자로 바꿔야 합니다.

SELECT SUM(BLOCKS * BLOCK_SIZE) BYTES FROM V$ARCHIVED_LOG WHERE NEXT_TIME>=SYSDATE-num_hours/24 AND DEST_ID=1;

4단계: 소스 데이터베이스에서 Oracle GoldenGate 사용자 계정을 생성합니다.

Oracle GoldenGate는 데이터베이스 사용자로 실행되며 소스 데이터베이스에 대한 다시 실행 및 저장된 다시 실행 로그에 액세스할 수 있는 적절한 데이터베이스 권한이 필요합니다. 이러한 권한을 제공하려면 소스 데이터베이스에서 사용자 계정을 생성해야 합니다. Oracle GoldenGate 사용자 계정 권한에 대한 자세한 내용은 Oracle 설명서를 참조하세요.

다음 문은 oggadm1이라는 사용자 계정을 생성합니다.

CREATE TABLESPACE administrator; CREATE USER oggadm1  IDENTIFIED BY "password" DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP; ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
참고

보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

5단계: 소스 데이터베이스에 사용자 계정 권한 부여

이 작업에서는 소스 데이터베이스에서 데이터베이스 사용자에게 필요한 계정 권한을 부여합니다.

소스 데이터베이스에서 계정 권한을 부여하려면
  1. SQL 명령 grantrdsadmin.rdsadmin_util 프로시저 grant_sys_object를 사용하여 Oracle GoldenGate 사용자 계정에 필요한 권한을 부여합니다. 다음 문은 oggadm1이라는 사용자에게 권한을 부여합니다.

    GRANT CREATE SESSION, ALTER SESSION TO oggadm1; GRANT RESOURCE TO oggadm1; GRANT SELECT ANY DICTIONARY TO oggadm1; GRANT FLASHBACK ANY TABLE TO oggadm1; GRANT SELECT ANY TABLE TO oggadm1; GRANT SELECT_CATALOG_ROLE TO rds_master_user_name WITH ADMIN OPTION; EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'OGGADM1'); GRANT EXECUTE ON DBMS_FLASHBACK TO oggadm1; GRANT SELECT ON SYS.V_$DATABASE TO oggadm1; GRANT ALTER ANY TABLE TO oggadm1;
  2. Oracle GoldenGate 관리자가 되려면 사용자 계정에 필요한 권한을 부여합니다. 다음 PL/SQL 프로그램을 실행합니다.

    EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'capture', grant_select_privileges => true, do_grants => TRUE);

    권한을 취소하려면 동일한 패키지의 revoke_admin_privilege 프로시저를 사용합니다.

6단계: 소스 데이터베이스의 TNS 별칭 추가

Oracle 홈의 $ORACLE_HOME/network/admin/tnsnames.ora에 다음 항목을 추가하여 EXTRACT 프로세스에서 사용할 수 있습니다. tnsnames.ora 파일에 대한 자세한 내용은 Oracle 설명서를 참조하세요.

OGGSOURCE= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-source.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200))) (CONNECT_DATA=(SERVICE_NAME=ORCL)) )

Amazon RDS에서 Oracle GoldenGate와 함께 사용할 대상 데이터베이스 설정

이 작업에서는 Oracle GoldenGate와 함께 사용할 대상 DB 인스턴스를 설정합니다.

1단계: ENABLE_GOLDENGATE_REPLICATION 초기화 파라미터를 true로 설정

ENABLE_GOLDENGATE_REPLICATION 초기화 파라미터를 true로 설정하면 데이터베이스 서비스가 논리적 복제를 지원할 수 있습니다. 소스 데이터베이스가 Amazon RDS DB 인스턴스에 있는 경우 파라미터 그룹을 DB 인스턴스에 할당하고 ENABLE_GOLDENGATE_REPLICATION 초기화 파라미터를 true로 설정해야 합니다. ENABLE_GOLDENGATE_REPLICATION 초기화 파라미터에 대한 자세한 내용은 Oracle 데이터베이스 설명서를 참조하세요.

2단계: 대상 데이터베이스에서 Oracle GoldenGate 사용자 계정을 생성합니다.

Oracle GoldenGate는 데이터베이스 사용자로 실행되며 적절한 데이터베이스 권한이 필요합니다. 이러한 권한을 부여하려면 대상 데이터베이스에서 사용자 계정을 생성해야 합니다.

다음 문은 oggadm1이라는 사용자를 생성합니다.

CREATE TABLESPSACE administrator; CREATE USER oggadm1  IDENTIFIED BY "password" DEFAULT TABLESPACE administrator TEMPORARY TABLESPACE temp; ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
참고

보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

3단계: 대상 데이터베이스에서 계정 권한 부여

이 작업에서는 대상 데이터베이스에서 데이터베이스 사용자에게 필요한 계정 권한을 부여합니다.

대상 데이터베이스에서 계정 권한 부여
  1. 대상 데이터베이스에서 Oracle GoldenGate 사용자 계정에 필요한 권한을 부여합니다. 다음 예제에서는 oggadm1에 권한을 부여합니다.

    GRANT CREATE SESSION        TO oggadm1; GRANT ALTER SESSION         TO oggadm1; GRANT CREATE CLUSTER        TO oggadm1; GRANT CREATE INDEXTYPE      TO oggadm1; GRANT CREATE OPERATOR       TO oggadm1; GRANT CREATE PROCEDURE      TO oggadm1; GRANT CREATE SEQUENCE       TO oggadm1; GRANT CREATE TABLE          TO oggadm1; GRANT CREATE TRIGGER        TO oggadm1; GRANT CREATE TYPE           TO oggadm1; GRANT SELECT ANY DICTIONARY TO oggadm1; GRANT CREATE ANY TABLE      TO oggadm1; GRANT ALTER ANY TABLE       TO oggadm1; GRANT LOCK ANY TABLE        TO oggadm1; GRANT SELECT ANY TABLE      TO oggadm1; GRANT INSERT ANY TABLE      TO oggadm1; GRANT UPDATE ANY TABLE      TO oggadm1; GRANT DELETE ANY TABLE      TO oggadm1;
  2. Oracle GoldenGate 관리자가 되려면 사용자 계정에 필요한 권한을 부여합니다. 다음 PL/SQL 프로그램을 실행합니다.

    EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'apply', grant_select_privileges => true, do_grants => TRUE);

    권한을 취소하려면 동일한 패키지의 revoke_admin_privilege 프로시저를 사용합니다.

4단계: 대상 데이터베이스의 TNS 별칭 추가

Oracle 홈의 $ORACLE_HOME/network/admin/tnsnames.ora에 다음 항목을 추가하여 REPLICAT 프로세스에서 사용할 수 있습니다. Oracle 멀티테넌트 데이터베이스의 경우 TNS 별칭이 PDB의 서비스 이름을 가리키는지 확인하세요. tnsnames.ora 파일에 대한 자세한 내용은 Oracle 설명서를 참조하세요.

OGGTARGET= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-target.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200))) (CONNECT_DATA=(SERVICE_NAME=ORCL)) )