搜索

7.4. 设置 Oracle 以使用 Debezium

download PDF

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

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

7.4.1. Debezium Oracle 连接器与 Oracle 安装类型的兼容性

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

7.4.2. Debezium Oracle 连接器在捕获更改事件时排除的 schema

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

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

要启用连接器来捕获表中的更改,表必须使用前面列表中未命名的 schema。

7.4.3. Debezium Oracle 连接器在捕获更改事件时排除的表

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

  • 压缩顾问表与模式 CMP[3|4 reporting[0-9]+ 匹配。
  • SYS_IOT_OVER_% 模式匹配的索引组织表。
  • MDRT_%MDRS_%MDXT_% 模式匹配的空间表。
  • 嵌套表

要让连接器捕获名称与上述任何规则匹配的表,您必须重命名表。

7.4.4. 准备用于 Debezium 的 Oracle 数据库

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;

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

当 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');

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

ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

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

最少的附件日志记录必须在数据库级别启用,并可配置如下:

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

7.4.5. 重新定义 Oracle redo 日志大小以容纳数据字典

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

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

请参考您的数据库管理员来评估数据库是否可能需要增加日志容量。

7.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

  GRANT SELECT ON V_$MYSTAT TO c##dbzuser CONTAINER=ALL; 24
  GRANT SELECT ON V_$STATNAME TO c##dbzuser CONTAINER=ALL; 25

  exit;

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

1

创建会话

启用连接器连接到 Oracle。

2

设置容器

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

3

SELECT ON V_$DATABASE

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

4

FLASHBACK ANY 表

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

5

选择任何表

启用连接器来读取任何表。

6

SELECT_CATALOG_ROLE

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

7

EXECUTE_CATALOG_ROLE

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

8

选择任何事务

启用快照过程对任何事务执行 Flashback 快照查询。当授予 FLASHBACK TABLE 时,也应授予这一操作。

9

LOGMINING

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

10

创建表

启用连接器在默认表空间中创建其 flush 表。flush 表允许连接器将 LGWR 内部缓冲区的清除显式控制到磁盘。

11

锁定任何表

启用连接器在 schema 快照期间锁定表。如果通过配置明确禁用了快照锁定,可以安全地忽略此授权。

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 到 25

SELECT ON V_$…​.

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

7.4.7. 支持 Oracle 待机数据库

重要

Debezium Oracle 连接器从只读逻辑待机数据库进行最大更改的功能是开发者预览功能。红帽以任何方式支持开发人员预览功能,且功能不完整或生产就绪。对于生产环境或关键业务工作负载,不要使用开发人员预览软件。开发人员预览软件可提前访问即将发布的产品软件。客户可以使用此软件测试功能并在开发过程中提供反馈。此软件可能没有任何文档,可以随时更改或删除,并收到有限的测试。红帽可能会提供在没有关联的 SLA 的情况下提交开发人员预览软件反馈的方法。

有关 Red Hat Developer Preview 软件支持范围的更多信息,请参阅 开发人员预览支持范围

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.