用 ggs_ggsuser_role 角色 + 补充必要系统权限更安全可维护,因 connect/resource 不含 select any dictionary、flashback any table 等 goldengate 必需权限,会导致 ogg-01028、ora-01031 等错误;官方最小权限集包括 create session、alter session、select any dictionary、flashback any table、select any table、execute on dbms_flashback、select on sys.v_$database 及 ggs_ggsuser_role。

直接给结论:用 GGS_GGSUSER_ROLE 角色 + 补充必要系统权限,比手动画一堆 GRANT 更安全、更可维护。
为什么不能只用 CONNECT / RESOURCE?
GoldenGate 抽取(Extract)进程需要读取重做日志和数据字典,复制(Replicat)进程可能要执行 DDL 或闪回查询。仅 CONNECT 和 RESOURCE 连 SELECT ANY DICTIONARY 都不包含,会导致 OGG-01028 或 ORA-01031: insufficient privileges 错误。
常见错误现象包括:
ERROR OGG-01028 Failed to get supplemental log data for table SCOTT.EMP-
WARNING OGG-00869 No minimum supplemental logging is enabled(即使数据库级已开,用户没权限查v$database也会报这个) - 启动
EXTRACT时卡在INITIALIZE状态,VIEW REPORT显示权限拒绝
必须授予的最小权限组合
Oracle 官方推荐且经验证的最小集合如下(以用户 ogg 为例):
-
CREATE SESSION—— 登录基础 -
ALTER SESSION—— 设置 NLS、时区等会话级参数 -
SELECT ANY DICTIONARY—— 查v$log,v$archived_log,dba_log_groups等关键视图 -
FLASHBACK ANY TABLE—— 支持 SCN 查询与初始加载一致性点定位 -
SELECT ANY TABLE—— 抽取表数据(含未授权表,如sys下部分基表) -
EXECUTE ON DBMS_FLASHBACK—— 用于TRANLOGOPTIONS EXCLUDEUSER等高级过滤 -
SELECT ON SYS.V_$DATABASE—— 显式确认supplemental_log_data_min状态(某些版本不被SELECT ANY DICTIONARY覆盖) -
GGS_GGSUSER_ROLE—— Oracle 提供的聚合角色,含LOGMINING权限及 DDL 复制所需能力(如ALTER ANY TABLE)
执行顺序很重要:先建用户,再授角色,最后补单条权限(因为 GGS_GGSUSER_ROLE 不含 SELECT ON SYS.V_$DATABASE):
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
CREATE USER ogg IDENTIFIED BY "ogg" DEFAULT TABLESPACE users QUOTA UNLIMITED ON users; GRANT GGS_GGSUSER_ROLE TO ogg; GRANT CREATE SESSION, ALTER SESSION TO ogg; GRANT SELECT ANY DICTIONARY TO ogg; GRANT FLASHBACK ANY TABLE TO ogg; GRANT SELECT ANY TABLE TO ogg; GRANT EXECUTE ON DBMS_FLASHBACK TO ogg; GRANT SELECT ON SYS.V_$DATABASE TO ogg;
RDS for Oracle 或自治数据库的特殊处理
在托管服务上,你无法直接运行 @ddl_setup.sql 等脚本,也不能授 DBA。必须依赖 RDS/Autonomous Database 提供的封装权限:
- Amazon RDS for Oracle:
EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege('ogg', 'capture') - Oracle Autonomous Database:
GRANT GGS_ADMIN_ROLE TO ogg(注意不是GGS_GGSUSER_ROLE,角色名不同) - 两者都仍需手动补
SELECT ON SYS.V_$DATABASE和FLASHBACK ANY TABLE(后者在某些 ADB 版本中默认不包含)
漏掉 rdsadmin 调用会导致 OGG-01223: Failed to initialize Oracle LogMiner,这是 RDS 环境最常踩的坑。
权限验证不能只靠 dblogin
GGSCI 里 dblogin userid ogg password xxx 成功,只代表能连上,不代表 GoldenGate 进程有足够权限运行。必须验证以下三点:
- 执行
INFO EXTRACT ext1, DETAIL看是否显示Supplemental Logging: Enabled - 运行
SEND EXTRACT ext1, GETUPDATESTATS,检查返回中是否有Log mining server status: RUNNING - 查
SELECT * FROM dba_log_groups WHERE owner = 'SCOTT' AND table_name = 'EMP';—— 如果为空,说明用户没权限查到表级补充日志配置,ADD TRANDATA可能静默失败
很多问题出在“看起来能登录,但 Extract 启动后几秒就 ABEND”,根源往往就是 SELECT ANY DICTIONARY 缺失或 V_$DATABASE 权限没显式赋予。










