Oracle AI Database에 대한 연결 구성
데이터베이스 측에서 Oracle GoldenGate에 연결하는 데 필요한 사용자 권한 및 Oracle AI Database와 Oracle GoldenGate에 대한 연결을 설정하는 구성 지침에 대해 알아봅니다.
Oracle 데이터베이스 사용자 및 권한 준비
데이터베이스 유저 생성 및 Oracle용 Oracle GoldenGate 권한 할당에 대해 알아봅니다.
주: Extract와 Replicat 모두 데이터베이스를 읽기/쓰기 모드로 설정해야 합니다. DML 재지정이 활성화된 경우에도 Extract는 읽기 전용 작업을 위해 열려 있는 Data Guard 대기 데이터베이스 또는 Active Data Guard 대기 데이터베이스에서 캡처할 수 없습니다.
Oracle AI Database 26ai 이상에 대한 사용자 권한 부여
Oracle AI Database 26ai는 SQL 문을 통해 데이터베이스 사용자에게 역할 기반 권한을 부여할 수 있는 사용자 역할을 제공합니다.
Oracle AI Database 26ai는 역할 기반 접근 방식을 사용하여 복제에 필요한 권한을 부여합니다. 롤은 DBMS_GOLDENGATE_AUTH 패키지에서 GRANT_ADMIN_PRIVILEGE 프로시저를 대체합니다.
예를 들어, Oracle GoldenGate 관리 사용자를 생성하려면 사용자를 생성하는 동안 사용자에게 적합한 OGG_* 롤을 부여해야 합니다. Oracle AI Database 26ai의 DBMS_GOLDENGATE_AUTH 패키지에서 GRANT_ADMIN_PRIVILEGE 프로시저를 계속 사용하는 경우 권한이 부여되지 않습니다. 대신 프로시저 호출이 사용 안함으로 설정되었음을 알리는 경고 메시지가 표시됩니다.
Oracle GoldenGate 26ai에 도입된 사용자 역할은 다음과 같습니다.
OGG_CAPTURE
OGG_CAPTURE에는 Extract 프로세스 사용 및 관리에 필요한 권한이 있습니다.
Extract를 사용하여 DML 및 DDL을 캡처하려면 사용자에게 다음 권한이 필요합니다.
GRANT CONNECT, RESOURCE to ggadmin CONTAINER = all;
GRANT OGG_CAPTURE to ggadmin CONTAINER = all;
추출 프로세스가 루트 컨테이너에 등록된 경우 다음 추가 단계를 수행해야 합니다.
ALTER USER ggadmin SET CONTAINER_DATA = all CONTAINER = current;
OGG_APPLY
Oracle GoldenGate Replicat 사용에 필요한 권한이 있는 롤입니다.
Replicat 프로세스를 사용하려면 사용자에게 이 롤과 대상에서 DML 및 DDL을 실행할 수 있는 권한이 필요합니다. 예를 들어, Replicat 프로세스가 HR 스키마에서 EMPLOYEES 테이블에 대해 DML 작업을 수행하도록 의도된 경우 다음과 같습니다.
GRANT CONNECT, RESOURCE to ggadmin;
GRANT OGG_APPLY to ggadmin;
GRANT SELECT, INSERT, UPDATE, DELETE on HR.EMPLOYEES TO GGADMIN;
Replicat 사용자가 CREATE TABLE, DROP TABLE 및 ALTER TABLE와 같은 DDL 작업을 적용하려는 경우 해당 명령문을 실행하는 데 필요한 시스템 권한을 받아야 합니다.
GRANT CREATE TABLE, ALTER TABLE, DROP TABLE to ggadmin;
OGG_APPLY_PROCREP
Oracle GoldenGate를 통한 프로시저 복제에 지원되는 패키지를 실행하는 데 필요한 권한이 있는 롤입니다. 여기에는 실행 권한만 포함되므로 사용자가 Replicat 프로세스를 실행하고 대상에서 프로시저를 실행할 수 있도록 하려면 이 롤을 OGG_APPLY 롤과 함께 사용해야 합니다.
예를 들어, Replicat가 프로시저 실행을 적용하는 경우입니다. 권한 부여 프로세스는 다음과 같아야 합니다.
GRANT CONNECT, RESOURCE to ggadmin;
GRANT OGG_APPLY, OGG_APPLY_PROCREP to ggadmin;
Oracle Database 21c 및 Lower에 대한 사용자 권한 부여
Oracle GoldenGate에서 Oracle AI Database에 접속하는 데 필요한 사용자 권한은 사용자 유형에 따라 다릅니다.
소스 및 대상 데이터베이스에서 사용자가 GoldenGate 관리자 사용자로 수행해야 하는 작업에 따라 권한이 부여되어야 합니다. 예를 들어, 유저에게 트랜잭션을 삽입, 갱신 및 삭제할 수 있는 DML 작업 권한을 부여하려면 GRANT ANY INSERT/UPDATE/DELETE 권한을 사용하고, 유저가 DML 작업의 일부로 테이블 및 인덱스를 사용할 수 있도록 하려면 GRANT CREATE/DROP/ALTER ANY TABLE/INDEX 권한을 사용합니다.
GoldenGate 관리자 사용자에게 DBA 롤이 있는 경우 추가 객체 권한이 필요하지 않습니다. 그러나 GoldenGate 관리 사용자에게 DBA 롤을 부여하는 보안 제약 조건이 있을 수 있습니다. DBA 롤이 Oracle GoldenGate에 반드시 필요한 것은 아닙니다.
복제되는 객체가 많으면 DML 및 DDL 작업에 ANY 권한을 사용하는 것이 좋습니다. 이렇게 하면 데이터베이스 작업에 따라 몇 가지 권한만 부여하면 되므로 GoldenGate 관리자 사용자에게 권한을 간단히 제공할 수 있습니다.
다음 표에서는 Oracle AI Database에 대한 GoldenGate 관리자 사용자의 필수 권한 중 일부를 설명합니다. 설명 목적으로 이 표는 다중 테넌트 컨테이너 데이터베이스에 대한 일반 사용자의 예로 c##ggadmin를 사용하고, PDB(플러거블 데이터베이스) 사용자로 ggadmin를 사용합니다. PDBEAST 및 PDBWEST는 PDB 이름의 예로 사용됩니다.
다음 표에서는 GoldenGate 관리자 사용자가 소스 및 대상 Oracle 데이터베이스에서 Oracle GoldenGate를 사용하는 데 필요한 필수 권한을 설명합니다.
| 권한 | Extract | Replicat 모든 모드 | 목적 |
|---|---|---|---|
RESOURCE |
예. | 예. | 객체를 생성하는 데 필요 Oracle Database 12cR1 이상에서는 |
CONNECT |
예. | 예. | 공통 사용자 Oracle mutitenant 데이터베이스 일반 사용자에게 부여된 권한 예를 참조하십시오. |
CREATE PROCEDURE |
예. | 예. | Heartbeat 테이블을 추가하는 데 필요합니다. |
CREATE SESSION |
예. | 예. | 데이터베이스에 연결하려면 필수입니다. |
CREATE VIEW |
예. | 예. | 하트비트 테이블 뷰를 추가하는 데 필요합니다. 각 객체에 대해 개별적으로 권한을 부여하려는 경우 각 객체에 대해 개별적으로 권한을 제공할 수도 있습니다. 이러한 권한을 유지 관리하기 위해 특정 데이터베이스 롤을 생성할 수도 있습니다. |
ALTER SYSTEM |
예. | 예. | 로깅 활성화와 같은 관리 변경을 수행합니다. |
ALTER USER |
예. | 예. | 다중 테넌트 아키텍처에 필요하며 GGADMIN는 적합한 Oracle GoldenGate 관리자 스키마여야 합니다. |
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('REPUSER', CONTAINER=>'PDBEAST'); |
예. | 예. |
|
SYS 사용자로 접속된 DV_GOLDENGATE_ADMIN 및 DV_GOLDENGATE_REDO_ACCESS 권한을 Extract 및 Replicat 사용자에게 부여합니다. |
예. | 예. | Data Vault에서 캡처합니다. Oracle Data Vault에서 캡처할 수 있는 권한을 참조하십시오. |
영역에 적용할 경우 DBMS_MACADM.ADD_AUTH_TO_REALM에서 Replicat 권한을 부여합니다. |
예. | 예. | 대상 테이블인 Capture from Data Vault에서 데이터를 캡처하려면 초기 로드 Extract에 필요합니다. Oracle Data Vault에서 캡처할 수 있는 권한을 참조하십시오. |
대상 테이블의 INSERT, UPDATE, DELETE |
해당 사항 없음 | 예. | 복제된 DML을 대상 객체에 적용합니다. Oracle DML에서 객체 및 작업에 대한 지원 세부정보를 참조하십시오. |
|
|
해당 사항 없음 | 예. | 모든 테이블을 복제하는 경우 모든 테이블에 INSERT, UPDATE, DELETE를 부여하는 대신 Replicat 사용자에게 이러한 권한을 부여합니다. |
DDL 복제가 수행되는 경우 Database Vault 소유자로 다음을 부여합니다. |
아니요 | 아니요 | Data Vault에서 캡처합니다. Oracle Data Vault에서 캡처할 수 있는 권한을 참조하십시오. |
| 대상 객체에 대한 DDL 권한(DDL 지원을 사용하는 경우) | 해당 사항 없음 | 예. | 대상 객체에 대해 복제된 DDL을 실행합니다. Oracle DDL의 객체 및 작업에 대한 지원 세부 정보를 참조하십시오. |
GRANT [CREATE\|ALTER\|DROP] ANY [TABLE\|INDEX\|VIEW\|PROCEDURE] to GGADMIN; |
예. | 예. | 테이블에 대한 DDL 복제 권한을 부여합니다. |
CREATE ANY TABLE |
예. | 예. | 스키마에서 테이블을 생성할 수 있는 권한을 부여합니다. 특정 스키마에서만 테이블 생성을 허용하려면 CREATE TABLE 권한을 사용합니다. |
CREATE ANY VIEW |
예. | 예. | 모든 데이터베이스 스키마에서 뷰를 생성할 수 있는 권한을 부여합니다. 특정 스키마에서 뷰를 생성할 수 있도록 하려면 CREATE VIEW 권한을 사용합니다. |
|
|
예. | 예. | 딕셔너리 테이블에서 모든 권한이 제대로 작동하도록 허용합니다. |
예: Oracle AI Database 일반 사용자에 대해 부여된 권한
Oracle AI Database 일반 사용자에 대해 부여된 권한(다음 예의 경우 c##ggadmin)입니다.
ALTER USER c##ggadmin IDENTIFIED BY ggadmin CONTAINER=all;
ALTER USER c##ggadmin SET CONTAINER_DATA=all CONTAINER=current;
ALTER USER c##ggadmin QUOTA unlimited ON GG_DATA;
TABLESPACE GG_DATA TEMPORARY TABLESPACE temp;
GRANT RESOURCE to c##ggadmin;
GRANT CREATE SESSION to c##ggadmin;
GRANT CREATE VIEW to c##ggadmin;
GRANT CREATE TABLE to c##ggadmin;
GRANT CONNECT to c##ggadmin CONTAINER=all;
GRANT DV_GOLDENGATE_ADMIN; --- for data vault user
GRANT DV_GOLDENGATE_REDO_ACCESS; --- for data vault user
GRANT ALTER SYSTEM to c##ggadmin;
GRANT ALTER USER to c##ggadmin;
GRANT SELECT ANY DICTIONARY to c##ggadmin;
GRANT SELECT ANY TRANSACTION to c##ggadmin;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('c##ggadmin');
이 예제에서는 DBA 권한이 제공되지 않습니다. 권한이 없으면 DBA는 필요한 권한을 추가로 부여해야 합니다.
다음 예에서는 PDB 사용자 ggadmin에 대해 부여된 권한을 제공합니다.
ALTER SESSION SET CONTAINER=dbwest;
ALTER USER c#ggadmin IDENTIFIED BY ggadmin CONTAINER=all;
GRANT CONNECT, RESOURCE, DBA TO c##ggadmin CONTAINER=CURRENT;
GRANT ALTER SESSION TO c##ggadmin CONTAINER=all;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('ggadmin');
주: 모든 사용자에 대해 DBA 롤 부여가 필수는 아닙니다. 데이터베이스에 대해 유저가 수행해야 하는 작업에 따라 권한이 부여되어야 합니다. 예를 들어, ggadmin에 트랜잭션을 삽입, 갱신, 삭제할 수 있는 DML 작업 권한을 부여하려면 GRANT ANY INSERT/UPDATE/DELETE 권한을 사용합니다. 사용자가 DML 작업의 일부로 테이블 및 인덱스를 추가로 사용할 수 있도록 하려면 GRANT CREATE/DROP/ALTER ANY TABLE/INDEX 권한을 사용합니다.
예: DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE 패키지를 사용하여 권한 부여
이 프로시저는 사용자가 Oracle GoldenGate 관리자로 필요한 권한을 부여합니다. 다음 예제는 Oracle 다중 테넌트 데이터베이스에서 Extract에 대한 명시적 권한을 부여합니다.
BEGIN
DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE
(GRANTEE => 'c##ggadmin'
,PRIVILEGE_TYPE => 'CAPTURE'
,GRANT_SELECT_PRIVILEGES => TRUE
,DO_GRANTS => TRUE
,CONTAINER => 'ALL');
END;
자세한 내용은 Oracle AI Database PL/SQL Packages and Types Reference의 DBMS_GOLDENGATE_AUTH를 참조하십시오.
Oracle Data Vault에서 캡처에 대한 권한
Oracle AI Database에서 SYS 사용자로 연결된 다음 권한을 부여합니다. 다음 권한은 Extract 및 Replicat 사용자 인증서에 대해 설정됩니다.
-
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('*userID*','*',
GRANT_OPTIONAL_PRIVILEGES=>'*');
GRANT DV_GOLDENGATE_ADMIN, DV_GOLDENGATE_REDO_ACCESS to *userID*;
-
영역에 적용할 경우 Replicat에
DBMS_MACADM.ADD_AUTH_TO_REALM의 권한을 부여합니다.Database Vault 소유자로 연결하여 다음 스크립트를 실행합니다.
BEGIN DVSYS.DBMS_MACADM.ADD_AUTH_TO_REALM( REALM_NAME => 'Oracle Default Component Protection Realm',GRANTEE => '*userID*',AUTH_OPTIONS => 1) ; END ; / EXECUTE_DBMS_MACADM.AUTHORIZE_DDL('SYS', 'SYSTEM'); -
DDL 복제의 경우 Database Vault 소유자로 다음을 부여합니다.
EXECUTE DBMS_MACADM.AUTHORIZE_DDL ('*userID*', '*SCHEMA FOR DDL*');