設定 Oracle AI Database 連線
瞭解資料庫端連線至 Oracle GoldenGate 所需的使用者權限,以及設定 Oracle AI Database 與 Oracle GoldenGate 連線的組態指示。
準備 Oracle 的資料庫使用者和權限
瞭解如何建立資料庫使用者及指派 Oracle GoldenGate for Oracle 的權限。
注意: Extract 和 Replicat 都需要資料庫處於「讀取 / 寫入」模式。即使已啟用 DML 重新導向,Extract 仍無法從資料保全待命資料庫或開啟供唯讀活動的 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;
如果 Extract 處理作業已在 root 容器註冊,則必須採取此額外步驟:
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 使用者是要套用 DDL 作業 (例如 CREATE TABLE、DROP TABLE 和 ALTER TABLE),則應該會收到執行這類敘述句所需的系統權限:
GRANT CREATE TABLE, ALTER TABLE, DROP TABLE to ggadmin;
OGG_APPLY_PROCREP
具備執行 Oracle GoldenGate 程序複製支援之套裝程式所需權限的角色。它只包括執行權限,因此,此角色應與 OGG_APPLY 角色搭配使用,以允許使用者執行 Replicat 處理作業並執行目標的程序。
例如,如果 Replicat 將套用程序執行。補助款程序應如下:
GRANT CONNECT, RESOURCE to ggadmin;
GRANT OGG_APPLY, OGG_APPLY_PROCREP to ggadmin;
授與 Oracle Database 21c 和較低權限
從 Oracle GoldenGate 連線至 Oracle AI Database 所需的使用者權限取決於使用者的類型。
應根據使用者在來源和目標資料庫上以 GoldenGate 管理員使用者身分執行的動作來授予權限。例如,若要將插入、更新及刪除交易的 DML 作業權限授與使用者,請使用 GRANT ANY INSERT/UPDATE/DELETE 權限,並進一步允許使用者在 DML 作業過程中使用表格和索引,請使用 GRANT CREATE/DROP/ALTER ANY TABLE/INDEX 權限。
如果 GoldenGate 管理員使用者具有 DBA 角色,則不需要額外的物件權限。不過,可能會有將 DBA 角色授與「GoldenGate 管理」使用者的安全限制條件。Oracle GoldenGate 不一定需要 DBA 角色。
如果要複製許多物件,您可以考慮使用 ANY 權限來執行 DML 和 DDL 作業。這可簡化為 GoldenGate 管理員使用者提供的權限,因為您只需要根據資料庫作業授予一些權限。
下表說明 Oracle AI Database 的 GoldenGate 管理員使用者的一些基本權限。為了說明目的,表格使用 c##ggadmin 作為多雲端用戶容器資料庫的通用使用者範例,使用 ggadmin 作為可插式資料庫 (PDB) 使用者。PDBEAST 和 PDBWEST 是用來作為 PDB 名稱的範例。
下表描述 GoldenGate 管理員使用者在來源和目標 Oracle 資料庫上使用 Oracle GoldenGate 的基本權限:
| 權限 | 擷取 | Replicat 所有模式 | 目的 |
|---|---|---|---|
RESOURCE |
是 | 是 | 建立物件所需 在 Oracle Database 12cR1 和更新版本 (而非 |
CONNECT |
是 | 是 | 通用使用者 |
CREATE PROCEDURE |
是 | 是 | 新增心跳表格的必要項目。 |
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 權限。 |
是 | 是 | 初始載入 Extract 從目標表格擷取資料 (從 Data Vault 擷取) 所需。請參閱從 Oracle Data Vault 擷取的權限。 |
目標表格上的 INSERT、UPDATE、DELETE |
北美 | 是 | 將複製的 DML 套用至目標物件。請參閱Oracle DML 中物件與作業的支援詳細資訊。 |
|
|
北美 | 是 | 如果複製每個表格,請將這些權限授予 Replicat 使用者,而不是將 INSERT、UPDATE、DELETE 授予每個表格。 |
如果執行 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 角色不是每位使用者的必要角色。授予權限時,必須視使用者在資料庫上必須執行的動作而定。例如,若要授與 DML 作業權限以插入、更新及刪除 ggadmin 的交易,請使用 GRANT ANY INSERT/UPDATE/DELETE 權限。若要進一步允許使用者在 DML 作業中處理表格和索引,請使用 GRANT CREATE/DROP/ALTER ANY TABLE/INDEX 權限。
範例:使用 DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE 套裝程式授與權限
此程序授與使用者成為 Oracle GoldenGate 管理員所需的權限。下列範例授與 Extract 在 Oracle 多租用戶資料庫的明確權限:
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*');