Oracle 19c中为用户授予特定Schema的调度作业权限咨询
解决方案:Oracle 19c限定用户仅在指定Schema创建调度作业
要限制用户仅能在特定Schema而非整个数据库中创建调度作业,需替换全局系统权限为对象级Schema权限,具体步骤如下:
1. 撤销全局系统权限(若已授予)
如果之前给用户/角色授予了全局的调度相关系统权限,先撤销这些权限以避免全局权限冲突:
REVOKE MANAGE SCHEDULER FROM <user_or_role>; REVOKE CREATE JOB FROM <user_or_role>; REVOKE CREATE PROGRAM FROM <user_or_role>; REVOKE CREATE SCHEDULE FROM <user_or_role>;
2. 授予指定Schema的对象级权限
使用ON SCHEMA子句,将创建调度对象的权限限定到目标Schema(替换<target_schema>为实际Schema名称):
-- 允许在指定Schema创建作业 GRANT CREATE JOB ON SCHEMA <target_schema> TO <user_or_role>; -- 允许在指定Schema创建程序 GRANT CREATE PROGRAM ON SCHEMA <target_schema> TO <user_or_role>; -- 允许在指定Schema创建调度计划 GRANT CREATE SCHEDULE ON SCHEMA <target_schema> TO <user_or_role>;
3. 补充必要的执行权限(可选)
如果调度作业需要执行指定Schema中的存储过程、函数等对象,需额外授予执行权限:
-- 授予单个存储过程的执行权限 GRANT EXECUTE ON <target_schema>.<procedure_name> TO <user_or_role>; -- 或授予该Schema下所有存储过程/函数的执行权限 GRANT EXECUTE ANY PROCEDURE ON SCHEMA <target_schema> TO <user_or_role>;
4. 基础会话权限(若未授予)
确保用户拥有连接数据库的基础权限:
GRANT CREATE SESSION TO <user_or_role>;
权限说明
- 全局系统权限(如
CREATE JOB)允许用户在任意Schema创建调度对象,而CREATE JOB ON SCHEMA <target_schema>仅限定用户在指定Schema内操作。 - 用户默认拥有自己在指定Schema下创建的调度对象的管理权限(如修改、删除),无需额外授予全局
MANAGE SCHEDULER权限。
内容的提问来源于stack exchange,提问作者Kishan
相关产品推荐
相关产品推荐

