6.4. 设置 Oracle 以使用 Debezium


设置 Oracle 以用于 Debezium Oracle 连接器需要以下步骤。这些步骤假定将多租户配置与容器数据库和至少一个可插拔数据库一起使用。如果您不打算使用多租户配置,则可能需要调整以下步骤。

有关设置 Oracle 以用于 Debezium 连接器的详情,请查看以下部分:

Oracle 数据库可以作为独立实例安装,也可以使用 Oracle Real Application Cluster (RAC)安装。Debezium Oracle 连接器与两种类型的安装兼容。

当 Debezium Oracle 连接器捕获表时,它会自动排除以下模式的表:

  • appqossys
  • audsys
  • ctxsys
  • dvsys
  • dbsfwuser
  • dbsnmp
  • qsmadmin_internal
  • lbacsys
  • mdsys
  • ojvmsys
  • olapsys
  • orddata
  • ordsys
  • outln
  • sys
  • system
  • wmsys
  • xdb

要启用连接器从表中捕获更改,表必须使用没有在上列表中命名的模式。

当 Debezium Oracle 连接器捕获表时,它会自动排除与以下规则匹配的表:

  • 压缩与模式 CMP[3|4\":\"[0-9]+ 匹配的 Advisor 表。
  • SYS_IOT_OVER_% 模式匹配的索引组织表。
  • spatial 表与模式 MDRT_%MDRS_%MDXT_% 匹配。
  • 嵌套表

要启用连接器捕获带有与上述规则匹配的名称的表,您必须重命名表。

6.4.4. 准备 Oracle 数据库以用于 Debezium

Oracle LogMiner 所需的配置

ORACLE_SID=ORACLCDB dbz_oracle sqlplus /nolog

CONNECT sys/top_secret AS SYSDBA
alter system set db_recovery_file_dest_size = 10G;
alter system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile;
shutdown immediate
startup mount
alter database archivelog;
alter database open;
-- Should now "Database log mode: Archive Mode"
archive log list

exit;
Copy to Clipboard Toggle word wrap

Oracle AWS RDS 不允许执行上述命令,也不允许您以 sysdba 身份登录。AWS 提供这些替代命令来配置 LogMiner。在执行这些命令前,请确保您的 Oracle AWS RDS 实例启用了备份。

要确认 Oracle 启用了备份,请首先执行以下命令。LOG_MODE 应说 ARCHIVELOG。如果没有,您可能需要重启 Oracle AWS RDS 实例。

Oracle AWS RDS LogMiner 所需的配置

SQL> SELECT LOG_MODE FROM V$DATABASE;

LOG_MODE
------------
ARCHIVELOG
Copy to Clipboard Toggle word wrap

LOG_MODE 设置为 ARCHIVELOG 后,执行命令以完成 LogMiner 配置。第一个命令将数据库设置为 archivelogs,第二个命令会添加补充日志记录。

Oracle AWS RDS LogMiner 所需的配置

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

exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
Copy to Clipboard Toggle word wrap

要让 Debezium 捕获更改数据库行之前的状态,还必须为捕获的表或整个数据库启用附件日志记录。以下示例演示了如何为单个 inventory.customers 表中的所有列配置附件日志记录。

ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Copy to Clipboard Toggle word wrap

为所有表列启用附件日志记录会增加 Oracle redo 日志的卷。要防止日志大小的过度增长,请选择性地应用前面的配置。

在数据库级别必须启用最小补充日志记录,并可配置如下:

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Copy to Clipboard Toggle word wrap

根据数据库配置,红色日志的大小和数量可能不足以达到可接受的性能。设置 Debezium Oracle 连接器前,请确保 redo 日志的容量足以支持数据库。

数据库的红色日志的容量必须足够,才能存储其数据字典。通常,数据字典的大小随着数据库中表和列的数量而增加。如果 redo 日志没有足够的容量,数据库和 Debezium 连接器可能会遇到性能问题。

请咨询您的数据库管理员,评估数据库是否需要提高日志容量。

6.4.6. 为 Debezium Oracle 连接器创建 Oracle 用户

要使 Debezium Oracle 连接器捕获更改事件,必须以具有特定权限的 Oracle LogMiner 用户身份运行。以下示例显示了在多租户数据库模型中为连接器创建 Oracle 用户帐户的 SQL。

警告

连接器捕获了其自身 Oracle 用户帐户进行的数据库更改。但是,它不会捕获 SYSSYSTEM 用户帐户所做的更改。

创建连接器的 LogMiner 用户

sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba
  CREATE TABLESPACE logminer_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/logminer_tbs.dbf'
    SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
  exit;

sqlplus sys/top_secret@//localhost:1521/ORCLPDB1 as sysdba
  CREATE TABLESPACE logminer_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/logminer_tbs.dbf'
    SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
  exit;

sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba

  CREATE USER c##dbzuser IDENTIFIED BY dbz
    DEFAULT TABLESPACE logminer_tbs
    QUOTA UNLIMITED ON logminer_tbs
    CONTAINER=ALL;

  GRANT CREATE SESSION TO c##dbzuser CONTAINER=ALL; 
1

  GRANT SET CONTAINER TO c##dbzuser CONTAINER=ALL; 
2

  GRANT SELECT ON V_$DATABASE to c##dbzuser CONTAINER=ALL; 
3

  GRANT FLASHBACK ANY TABLE TO c##dbzuser CONTAINER=ALL; 
4

  GRANT SELECT ANY TABLE TO c##dbzuser CONTAINER=ALL; 
5

  GRANT SELECT_CATALOG_ROLE TO c##dbzuser CONTAINER=ALL; 
6

  GRANT EXECUTE_CATALOG_ROLE TO c##dbzuser CONTAINER=ALL; 
7

  GRANT SELECT ANY TRANSACTION TO c##dbzuser CONTAINER=ALL; 
8

  GRANT LOGMINING TO c##dbzuser CONTAINER=ALL; 
9


  GRANT CREATE TABLE TO c##dbzuser CONTAINER=ALL; 
10

  GRANT LOCK ANY TABLE TO c##dbzuser CONTAINER=ALL; 
11

  GRANT CREATE SEQUENCE TO c##dbzuser CONTAINER=ALL; 
12


  GRANT EXECUTE ON DBMS_LOGMNR TO c##dbzuser CONTAINER=ALL; 
13

  GRANT EXECUTE ON DBMS_LOGMNR_D TO c##dbzuser CONTAINER=ALL; 
14


  GRANT SELECT ON V_$LOG TO c##dbzuser CONTAINER=ALL; 
15

  GRANT SELECT ON V_$LOG_HISTORY TO c##dbzuser CONTAINER=ALL; 
16

  GRANT SELECT ON V_$LOGMNR_LOGS TO c##dbzuser CONTAINER=ALL; 
17

  GRANT SELECT ON V_$LOGMNR_CONTENTS TO c##dbzuser CONTAINER=ALL; 
18

  GRANT SELECT ON V_$LOGMNR_PARAMETERS TO c##dbzuser CONTAINER=ALL; 
19

  GRANT SELECT ON V_$LOGFILE TO c##dbzuser CONTAINER=ALL; 
20

  GRANT SELECT ON V_$ARCHIVED_LOG TO c##dbzuser CONTAINER=ALL; 
21

  GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO c##dbzuser CONTAINER=ALL; 
22

  GRANT SELECT ON V_$TRANSACTION TO c##dbzuser CONTAINER=ALL; 
23


  exit;
Copy to Clipboard Toggle word wrap

Expand
表 6.11. 权限/授予的描述
角色名称描述

1

创建会话

启用连接器连接到 Oracle。

2

设置容器

启用连接器在可插拔数据库间切换。这只有在 Oracle 安装启用了容器数据库支持(CDB)时才需要。

3

SELECT ON V_$DATABASE

启用连接器读取 V$DATABASE 表。

4

FLASHBACK ANY TABLE

启用连接器来执行闪存查询,这是连接器如何执行数据的初始快照。

5

选择任何表

启用连接器读取任何表。

6

SELECT_CATALOG_ROLE

启用连接器读取 Oracle LogMiner 会话所需的数据字典。

7

EXECUTE_CATALOG_ROLE

启用连接器将数据字典写入 Oracle redo 日志,该日志需要跟踪架构更改。

8

选择任何事务

启用快照进程对任何事务执行闪存快照查询。当授予 FLASHBACK ANY TABLE 时,还应授予此项。

9

LOGMINING

这个角色被添加到较新的 Oracle 版本中,以授予 Oracle LogMiner 及其软件包的完整访问权限。在没有此角色的旧版本 Oracle 中,您可以忽略此授权。

10

创建表

启用连接器在其默认表空间中创建其冲刷表。flush 表允许连接器明确控制将 LGWR 内部缓冲刷新到磁盘。

11

锁定任何表

启用连接器在模式快照过程中锁定表。如果通过配置显式禁用快照锁定,则可以安全地忽略此授权。

12

创建序列

启用连接器在其默认表空间中创建序列。

13

EXECUTE ON DBMS_LOGMNR

启用连接器在 DBMS_LOGMNR 软件包中运行方法。这需要与 Oracle LogMiner 交互。在新版本的 Oracle 上,这通过 LOGMINING 角色获得,但在旧版本上必须明确授予。

14

EXECUTE ON DBMS_LOGMNR_D

启用连接器在 DBMS_LOGMNR_D 软件包中运行方法。这需要与 Oracle LogMiner 交互。在新版本的 Oracle 上,这通过 LOGMINING 角色获得,但在旧版本上必须明确授予。

15 到 23

SELECT ON V_$…​.

启用连接器读取这些表。连接器必须能够读取 Oracle redo 和 archive 日志的信息,以及当前事务状态,以准备 Oracle LogMiner 会话。如果没有这些授予,连接器就无法操作。

6.4.7. 支持 Oracle 备用数据库

Debezium Oracle 连接器不能用于 Oracle 物理或者逻辑备用数据库。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat