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