从模式 A 登录时,我需要获取模式 B 的离线和离线 JOBS。
我可以使用一些赠款来达到这个目的吗?
如果您使用的是 DBMS_JOB,那么您的选择是有限的。根据文档:
“没有与作业相关的数据库权限。DBMS_JOB 不允许用户触摸除他们自己的作业之外的任何作业。”
有一个解决方法:DBMS_IJOB。这是无证的,因为它归 SYS 所有,不应该由真人使用。你要小心这个。由于它没有记录,我们依赖于非官方来源。Adam Donahue 在这个包上写了一篇有用的博客。 在这里阅读。
或者,您可以构建自己的基础架构:模式 B 拥有一个手动包来管理他们的工作,并将该包上的 EXECUTE 授予模式 A。
DBMS_SCHEDULER(在 10g 中引入)提供了更多的灵活性。好吧,实际上更多的灵活性,读作“复杂性”。有多种方法可以通过计划的作业以及权限和角色矩阵来分割和分割职责。 了解更多。
没有办法让模式 A 管理所有模式 B 的工作。有ANY
与 DBMS_SCHEDULER 相关的各种级别的权限,但这些权限非常强大,并且不能仅限于单个模式的权限。在最粗略的级别 B 可以简单地做到这一点:
grant alter on bjob1 to A;
grant alter on bjob2 to A;
等等。这将允许 A 对 B 的作业执行大多数操作,除了停止正在运行的作业。