Oracle视图权限授予疑问:是否自动同步至底层表及未存对象?
Oracle权限常见问题解答
问题1:给用户授予不存在的表/视图权限,后续创建同名对象后权限会自动生效吗?
- 不行。Oracle不支持对不存在的对象执行对象权限授予操作,执行类似
GRANT SELECT ON non_existent_table TO test_user;的语句时,会直接抛出ORA-00942: table or view does not exist错误,不会生成任何待激活的权限规则。后续创建同名表/视图后,用户不会自动获得对应权限,必须重新执行GRANT语句。
问题2:授予用户视图权限后,会自动赋予其视图底层表的对应权限吗?
- 不会。视图的权限和底层表的权限是完全独立的:
- 拥有视图权限的用户只能通过视图访问或操作数据,无法直接对底层表执行对应操作;
- 若需要让用户直接访问底层表,必须单独为其授予底层表的对象权限;
- 举个实际场景:假设用户
APP_USER被授予视图V_CUSTOMER的SELECT权限,但未获得底层表CUSTOMER的SELECT权限,那么APP_USER可以正常查询V_CUSTOMER,但直接查询CUSTOMER表会触发权限不足的报错。
内容的提问来源于stack exchange,提问作者Basavaraj Pn
相关产品推荐
相关产品推荐

