Oracle中给用户NOUR ELKHUZAMA授予INHERIT PRIVILEGES权限报错求助
问题解决:ORA-00905错误与ORDS方案注册权限配置
1. 错误原因
Oracle数据库不支持INHERIT PRIVILEGES语法——这是PostgreSQL专属的权限特性,你执行的语句在Oracle中属于无效语法,因此触发ORA-00905错误。
2. ORDS方案注册的正确权限配置
针对将NOUR ELKHUZAMA方案注册到ORDS的需求,需根据ORDS的访问逻辑配置正确权限:
2.1 授予ORDS用户方案对象访问权限
假设ORDS使用默认用户ORDS_PUBLIC_USER,需授予其访问目标方案下对象的权限:
- 授予现有对象权限:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA "NOUR ELKHUZAMA" TO ORDS_PUBLIC_USER; GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA "NOUR ELKHUZAMA" TO ORDS_PUBLIC_USER; - 自动授权未来创建的对象:
ALTER DEFAULT PRIVILEGES IN SCHEMA "NOUR ELKHUZAMA" GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ORDS_PUBLIC_USER; ALTER DEFAULT PRIVILEGES IN SCHEMA "NOUR ELKHUZAMA" GRANT EXECUTE ON PROCEDURES TO ORDS_PUBLIC_USER;
2.2 确保方案用户具备基础权限
如果ORDS需要以方案用户身份连接,需确保NOUR ELKHUZAMA用户拥有会话创建权限:
GRANT CREATE SESSION TO "NOUR ELKHUZAMA";
2.3 (可选)使用角色统一管理权限
若需批量授权,可创建角色并分配给相关用户:
-- 创建角色 CREATE ROLE NOUR_SCHEMA_ACCESS; -- 授予角色方案对象权限 GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA "NOUR ELKHUZAMA" TO NOUR_SCHEMA_ACCESS; GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA "NOUR ELKHUZAMA" TO NOUR_SCHEMA_ACCESS; -- 将角色授予ORDS用户 GRANT NOUR_SCHEMA_ACCESS TO ORDS_PUBLIC_USER; -- 若需公开访问可授予PUBLIC(按需使用) -- GRANT NOUR_SCHEMA_ACCESS TO PUBLIC;
3. 验证ORDS注册
完成权限配置后,重新尝试ORDS方案注册操作,通常可解决权限不足导致的注册失败问题。
内容的提问来源于stack exchange,提问作者Tayseer
相关产品推荐
相关产品推荐

