创建Oracle至BigQuery的DataFusion复制任务时报源端权限缺失错误

问题背景
在GCP DataFusion中创建Oracle到BigQuery的复制任务时,已可正常从源端Oracle数据库拉取记录,但任务创建最后一步触发权限校验报错,且已确认持有GCP侧全部所需权限。
报错详情:
缺少读取源端的必要权限,请为连接数据库所用的用户账号授予对应权限后重试。
触发环节:校验指定Oracle用户是否持有客户侧数据库所需权限的环节。
根因说明
该报错与GCP侧权限无关。DataFusion复制任务在最终预校验阶段,除基础表查询权限外,还会校验Oracle侧用户持有的元数据、日志读取权限——能正常拉取表记录仅代表基础表查询权限可用,不满足复制任务(尤其是CDC增量同步模式)要求的全量权限标准。
解决方案
根据你选择的同步模式,给连接Oracle的数据库账号授予对应最小权限即可:
- 若使用全量快照同步模式,需授予以下权限:
- 数据库登录权限
CREATE SESSION - 所有待同步业务表的
SELECT权限 - Oracle元数据系统视图的
SELECT权限,涉及视图:ALL_TABLES、ALL_TAB_COLUMNS、ALL_CONSTRAINTS、ALL_CONS_COLUMNS,用于读取表结构、主键约束等元信息
- 数据库登录权限
- 若使用CDC增量同步模式(绝大多数复制任务默认选型),除上述全量模式权限外,还需额外授予日志挖掘相关权限:
- Oracle日志相关系统视图的
SELECT权限,涉及视图:V_$DATABASE、V_$LOG、V_$LOGFILE、V_$ARCHIVED_LOG、V_$LOGMNR_CONTENTS - 日志挖掘系统包的执行权限:
DBMS_LOGMNR、DBMS_LOGMNR_LOGREP_DICT - 若使用Oracle 12c及以上多租户架构,还需给连接用户授予对应PDB的
SET CONTAINER权限,同时补全CDB层面上述系统视图的查询权限
- Oracle日志相关系统视图的
- 若权限全部授予后仍报错,排查是否给该用户配置了VPD虚拟专用数据库策略、行级访问限制,导致无法读取系统视图的全量元数据。
可参考以下SQL完成授权(执行前将YOUR_SYNC_USER替换为实际的DataFusion连接Oracle的用户名,将YOUR_BIZ_TABLE替换为待同步的业务表名):
-- 基础通用权限 GRANT CREATE SESSION TO YOUR_SYNC_USER; GRANT SELECT ON YOUR_BIZ_TABLE TO YOUR_SYNC_USER; GRANT SELECT ON ALL_TABLES TO YOUR_SYNC_USER; GRANT SELECT ON ALL_TAB_COLUMNS TO YOUR_SYNC_USER; GRANT SELECT ON ALL_CONSTRAINTS TO YOUR_SYNC_USER; GRANT SELECT ON ALL_CONS_COLUMNS TO YOUR_SYNC_USER; -- CDC增量模式需额外执行以下授权 GRANT SELECT ON V_$DATABASE TO YOUR_SYNC_USER; GRANT SELECT ON V_$LOG TO YOUR_SYNC_USER; GRANT SELECT ON V_$LOGFILE TO YOUR_SYNC_USER; GRANT SELECT ON V_$ARCHIVED_LOG TO YOUR_SYNC_USER; GRANT SELECT ON V_$LOGMNR_CONTENTS TO YOUR_SYNC_USER; GRANT EXECUTE ON DBMS_LOGMNR TO YOUR_SYNC_USER; GRANT EXECUTE ON DBMS_LOGMNR_LOGREP_DICT TO YOUR_SYNC_USER;
授权完成后,在DataFusion的Oracle连接配置页重新测试连接有效性,再重新提交复制任务创建流程即可。
内容的提问来源于stack exchange,提问作者Seenu
相关产品推荐
相关产品推荐

