Oracle权限配置(Logminer)
Oracle 数据源权限配置(Logminer)
Logminer 方式权限配置
CDC(Change Data Capture),即数据变更抓取,通过为源端数据源开启CDC,作业可实现数据源的实时数据同步。
本章节主要介绍如何为oracle数据库开启Logminer方式CDC功能。
本文以非CDB 数据库作为案例进行说明,需要注意的是如果数据库为CDB数据库时,在用户分配的命令可能存在差异,一般情况下,角色使用 C##角色名 即可
前提条件
Oracle 数据库为11g 以上版本
若Oracle数据库为主从模式,不支持使用Oracle从库。
更新LONG、CLOB、NCLOB类型字段 更新后该类型的字段丢失数据,目前logminer自身存在该bug
操作步骤
建议由数据库管理员对数据源配置进行操作
必须为Oracle数据库启用日志归档,并为Debezium Oracle连接器监视的所有数据库定义一个具有适当权限的Oracle用户。
- 使用DBA角色用户连接数据库
sqlplus sys/password@host:port/SID AS SYSDBA
检测是否开启归档日志
-- Should now "Database log mode: Archive Mode" archive log list;
若回显打印“Database log mode: No Archive Mode”,说明日志归档未开启,继续执行下一步。
若回显打印“Database log mode: Archive Mode”,说明日志归档已开启,直接退出数据库连接。开启归档日志
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;
注意: 谨慎操作,开启归档日志需要重启数据库,归档日志将占用大量磁盘空间,需要考虑定期清理过期的日志
其中:
100G为日志文件存储空间的大小,请根据实际情况设置。
/opt/oracle/oradata/recovery_area为日志存储路径,请根据实际规划设置,但须确保路径提前创建。开启扩充日志
必须为捕获的表或数据库启用补充日志记录,以便数据更改能够捕获已更改的数据库行之前的状态。下面将说明如何在表/数据库级别上配置它。 一般建议对库进行启用。
在表启用-- Enable supplemental logging for a specific table: ALTER TABLE inventory.customers ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
在数据库启用
-- Enable supplemental logging for database ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
执行第2步的命令检查归档日志是否开启
-- Should now "Database log mode: Archive Mode" archive log list;
若回显打印“Database log mode: Archive Mode”,说明日志归档已开启,直接退出数据库连接。
Logminer 工具安装
- 使用DBA角色用户连接数据库
sqlplus sys/password@host:port/SID AS SYSDBA
执行以下命令,检查LogMiner工具是否已安装。
desc DBMS_LOGMNR desc DBMS_LOGMNR_D
若无打印信息返回,说明LogMiner工具未安装,继续执行下一步。
若有打印信息返回,说明LogMiner工具已安装,直接跳到第4步。执行以下命令,安装LogMiner工具。
@$ORACLE_HOME/rdbms/admin/dbmslm.sql @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
创建角色并授权
create role cdc_logminer_privs; grant create session, execute_catalog_role, select any transaction, flashback any table, select any table, lock any table, select any dictionary to cdc_logminer_privs; grant select on SYSTEM.LOGMNR_COL$ to cdc_logminer_privs; grant select on SYSTEM.LOGMNR_OBJ$ to cdc_logminer_privs; grant select on SYSTEM.LOGMNR_USER$ to cdc_logminer_privs; grant select on SYSTEM.LOGMNR_UID$ to cdc_logminer_privs; grant select on V_$DATABASE to cdc_logminer_privs; grant select_catalog_role to cdc_logminer_privs; grant LOGMINING to cdc_logminer_privs;
其中:
cdc_logminer_privs为LogMiner用户角色名,请根据实际规划设置。
“grant LOGMINING to cdc_logminer_privs;”仅当Oracle为12c版本时,才需要添加,否则删除此行内容创建Logminer执行用户
create user cdc_logminer identified by password default tablespace users; grant cdc_logminer_privs to cdc_logminer; grant create table to cdc_logminer; alter user cdc_logminer quota unlimited on users;
其中:
cdc_logminer为LogMiner用户名,请根据实际规划设置。
password为LogMiner用户密码,请根据实际规划设置。
cdc_logminer_privs为LogMiner用户角色,在第4步中创建。退出数据库连接
到此即完成了对logminer 权限的配置