You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLPlus中授予c##DSLI01 V_$SESSION权限成功但未生效,原因何在?

授权成功但ALL_TAB_PRIVS无记录的原因及解决办法
  • 公共用户的容器权限范围限制
    c##开头的用户是Oracle多租户架构中的公共用户,默认创建在CDB$ROOT容器。你在XEPDB1容器内执行的授权操作,属于给公共用户授予PDB本地权限——这类权限仅在当前PDB内生效,且CDB$ROOT容器的ALL_TAB_PRIVS视图仅展示当前容器内的权限信息,因此在CDB$ROOT中查询不到该权限记录。

  • 动态性能视图的授权与查询注意事项
    V_$SESSION是动态性能视图,若要授予这类视图的查询权限,除了直接授权单个视图,更推荐授予SELECT ANY DICTIONARY系统权限或SELECT_CATALOG_ROLE预定义角色,这两种方式能更全面地覆盖数据字典视图的查询需求。

  • 正确的权限查询方式
    若要查看公共用户的跨容器权限,需查询CDB级视图CDB_TAB_PRIVS:

    SELECT privilege, table_name, con_id FROM CDB_TAB_PRIVS WHERE grantee = 'c##DSLI01';
    

    或者切换到XEPDB1容器后,再查询本地的ALL_TAB_PRIVS,就能看到在该PDB中授予的权限:

    ALTER SESSION SET CONTAINER=XEPDB1;
    SELECT privilege, table_name FROM ALL_TAB_PRIVS WHERE grantee = 'c##DSLI01';
    

内容的提问来源于stack exchange,提问作者user1169587

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:12:08