在 Oracle CDC 数据源中,使用基于 LogMiner 的日志进行实时采集时需要进行一些配置操作。本文将为您介绍进行实时采集前的前置操作。
注意
在**数据盘(确保有足够空余空间)**新建目标目录,例如:
mkdir -p /opt/oracle/oradata/recovery_area mkdir -p /opt/oracle/oradata/ORCLCDB -- 对于 CDB + PDB 模式,还需要执行如下的命令,为 PDB 也创建对应的目录: mkdir -p /opt/oracle/oradata/ORCLCDB/ORCLPDB1 chown -R oracle /opt/oracle/***
切换到有 Oracle DBA 权限的用户,运行 sqlplus / as sysdba
命令。
然后在 sqlplus 命令中,继续执行如下指令,设置日志目录的最大占用空间,以及存储路径:
alter system set db_recovery_file_dest_size = 100G; alter system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile;
上述指令执行完成后,随后继续执行如下指令:
shutdown immediate; startup mount; alter database archivelog; alter database open; -- 必须执行, 否则会出现列缺失等问题; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; alter system switch logfile; -- 确保如下图显示 "Database log mode: Archive Mode" archive log list; -- 配置完成后退出 exit;
说明
建议通过 RMAN 配置 Archive Log 清理策略,同样也是切换到有 Oracle DBA 权限的用户,运行 rman target /
命令后执行如下策略:
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;
此外,您可以手动或定期执行如下命令,主动触发清理:
DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;
首先进入 sysplus 命令,执行:
desc DBMS_LOGMNR; desc DBMS_LOGMNR_D;
如果上述执行语句没有任何信息返回,则需要执行如下命令来安装 LogMiner 组件。否则有信息返回时无需安装。
@$ORACLE_HOME/rdbms/admin/dbmslm.sql @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
再次进入 sysplus 命令,执行下面命令:
注意
仅适用于 12c 及以上的 Oracle 版本。
SELECT name, cdb from v$database;
如果 CDB 为 0,则说明是非 CDB 模式,可以继续执行下面的命令:
注意
以下命令仅适用于 10g、11c 版本,或者 12c 及以上版本的非 CDB 模式。
**如果自行指定了归档目录,则请替换下文的路径为您部署环境的实际路径;**此外,请替换 CREATE USER 命令中的 [您的密码] 为实际密码值
-- 创建 LogMiner 采集用户 CREATE TABLESPACE logminer_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED; CREATE USER logminer_user IDENTIFIED BY [您的密码] DEFAULT TABLESPACE logminer_tbs QUOTA UNLIMITED ON logminer_tbs; -- 允许获取 LogMiner 所必须的表 GRANT CREATE SESSION TO logminer_user; GRANT SELECT ON V_$DATABASE to logminer_user; GRANT SELECT ON V_$LOG TO logminer_user; GRANT SELECT ON V_$LOGFILE TO logminer_user; GRANT SELECT ON V_$LOGMNR_LOGS TO logminer_user; GRANT SELECT ON V_$LOGMNR_CONTENTS TO logminer_user; GRANT SELECT ON V_$ARCHIVED_LOG TO logminer_user; GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO logminer_user; GRANT EXECUTE ON DBMS_LOGMNR TO logminer_user; GRANT EXECUTE ON DBMS_LOGMNR_D TO logminer_user; GRANT SELECT ANY TABLE TO logminer_user; GRANT ANALYZE ANY TO logminer_user; -- 允许查看所有用户信息 GRANT SELECT ON ALL_USERS TO logminer_user; -- 允许查看所有对象信息 GRANT SELECT ON ALL_OBJECTS TO logminer_user; GRANT SELECT ON DBA_OBJECTS TO logminer_user; -- 允许查看物化视图和物化视图日志 GRANT SELECT ON DBA_MVIEWS TO logminer_user; GRANT SELECT ON DBA_MVIEW_LOGS TO logminer_user; -- 允许查看约束信息 GRANT SELECT ON DBA_CONSTRAINTS TO logminer_user; GRANT SELECT ON DBA_CONS_COLUMNS TO logminer_user; -- 允许查看表列信息 GRANT SELECT ON ALL_TAB_COLS TO logminer_user; -- 允许查看系统表信息 GRANT SELECT ON SYS.OBJ$ TO logminer_user; GRANT SELECT ON SYS.COL$ TO logminer_user; GRANT SELECT ON SYS.USER$ TO logminer_user; GRANT SELECT ON SYS.CDEF$ TO logminer_user; GRANT SELECT ON SYS.CON$ TO logminer_user; GRANT SELECT_CATALOG_ROLE to logminer_user WITH delegate option; -- 允许查看所有索引信息 GRANT SELECT ON ALL_INDEXES TO logminer_user; -- 允许查看备用日志信息 GRANT SELECT ON V_$STANDBY_LOG TO logminer_user; GRANT SELECT ON V_$ARCHIVE_GAP TO logminer_user; -- 允许查看事务信息 GRANT SELECT ANY TRANSACTION TO logminer_user; -- 允许查询 DUAL 表 GRANT SELECT ON DUAL TO logminer_user; -- Oracle 12c 及更高版本需要额外执行如下命令, 11 等旧版本无需执行 GRANT LOGMINING TO logminer_user;
【强烈不建议】如果您在测试环境遇到其他各类权限问题,如 ORA-01031: insufficient privileges、ORA-00942: table or view does not exist,可以尝试执行快速授予高权限:
GRANT DBA TO logminer_user; -- 数据同步任务全部执行完成以后可解除授权 REVOKE DBA FROM logminer_user;
上述配置操作完成后,您可通过 DataSail 解决方案界面,来配置 Oracle 实时整库同步、分库分表等作业,便可实现全增量数据同步的效果。
进入配置界面后,您可按实际场景需求,完成方案的基本配置、数据缓存配置、映射配置等流程配置。具体配置说明详见解决方案。