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
相关产品推荐
相关产品推荐

