配置与 Oracle AI Database 的连接

了解数据库端连接到 Oracle GoldenGate 所需的用户权限以及设置 Oracle AI Database 与 Oracle GoldenGate 连接的配置说明。

为 Oracle 准备数据库用户和权限

了解如何创建数据库用户以及为 Oracle GoldenGate 分配 Oracle 权限。

注:提取和复制都要求数据库处于读/写模式。无法从 Data Guard 备用数据库或为只读活动打开的 Active Data Guard 备用数据库捕获提取,即使启用了 DML 重定向也是如此。

为 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 捕获 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 所需的权限的角色。

要使用复制进程,用户需要此角色以及在目标上执行 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 角色一起使用,以允许用户运行复制进程并在目标处执行过程。

例如,如果复制将应用过程执行。授予过程应如下:

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 Administration 用户的安全约束条件。Oracle GoldenGate 不一定需要 DBA 角色。

如果正在复制许多对象,可以考虑对 DML 和 DDL 操作使用 ANY 权限。这简化了为 GoldenGate 管理员用户提供权限的过程,因为您只需根据数据库操作授予一些权限。

下表介绍了 GoldenGate Administrator 用户对 Oracle AI Database 的某些基本特权。出于说明目的,该表使用 c##ggadmin 作为多租户容器数据库的公用用户的示例,使用 ggadmin 作为可插入数据库 (pluggable database,PDB) 用户。PDBEAST 和 PDBWEST 用作 PDB 名称的示例。

下表介绍了 GoldenGate 管理员用户在源数据库和目标 Oracle 数据库上使用 Oracle GoldenGate 的基本权限:

权限 提取 复制所有模式 用途
RESOURCE 是 是

创建对象所必需的

在 Oracle Database 12cR1 及更高版本(而非 RESOURCE)中,授予以下权限:

ALTER USER user QUOTA {size | UNLIMITED} ON tablespace;
CONNECT 是 是

公用用户 SYSTEM 连接到根容器。未将 DBA 角色分配给用户时,此权限至关重要。

请参阅授予 Oracle 突变型数据库公用用户的权限示例。

CREATE PROCEDURE 是 是 需要添加脉动表。
CREATE SESSION 是 是 连接到数据库所需的权限。
CREATE VIEW 是 是

添加心跳表视图是必需的。

如果要特定于每个对象,还可以分别为每个对象提供权限。您可以考虑创建特定的数据库角色来维护此类权限。

ALTER SYSTEM 是 是 执行管理更改,例如启用日志记录。
ALTER USER 是 是 Required for multitenant architecture and GGADMIN should be a valid Oracle GoldenGate administrator schema.
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('REPUSER', CONTAINER=>'PDBEAST'); 是 是

向 Extract 和 Replicat 用户授予以 SYS 用户身份连接的 DV_GOLDENGATE_ADMIN 和 DV_GOLDENGATE_REDO_ACCESS 权限。 是 是 从 Data Vault 获取。请参见 Privileges for Capture from Oracle Data Vault 。
在 DBMS_MACADM.ADD_AUTH_TO_REALM 中授予复制权限(如果应用于领域)。 是 是 初始加载提取需要获取目标表中的数据,即从 Data Vault 获取数据。请参见 Privileges for Capture from Oracle Data Vault 。
目标表上的 INSERT、UPDATE、DELETE 不适用 是 将复制的 DML 应用于目标对象。请参阅有关 Oracle DML 中对象和操作支持的详细信息

GRANT INSERT ANY TO...
GRANT UPDATE ANY TO...
GRANT DELETE ANY TO...

不适用 是 将这些特权授予复制用户,而不是向每个表(如果复制每个表)授予 INSERT、UPDATE 和 DELETE。

如果执行 DDL 复制,请授予以下作为 Database Vault 所有者的权限:

EXECUTE DBMS_MACADM.AUTHORIZE_DDL('GGADMIN USER', 'SCHEMA FOR DDL');
否 否 从 Data Vault 获取。请参见 Privileges for Capture from 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 权限。

SELECT ANY DICTIONARY

是 是 允许所有权限对字典表正常工作。

示例:为 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 用户身份连接的以下权限。为提取和复制用户身份证明设置以下权限:

-

EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('*userID*','*',
GRANT_OPTIONAL_PRIVILEGES=>'*');
GRANT DV_GOLDENGATE_ADMIN, DV_GOLDENGATE_REDO_ACCESS to *userID*;