【问题标题】:Oracle Scheduler Job Executor, or who is the USER during Job RuntimeOracle Scheduler Job Executor,或 Job Runtime 期间的 USER
【发布时间】:2014-02-01 05:18:50
【问题描述】:

当 USER = SYS. 我在调度程序中安排了一个每天执行的作业。由于奇怪的原因,我在某些数据库实例上遇到错误,表明 USER 不是真正的 SYS,而是 。 我使用的是 Oracle SQL 数据库 11g 版本。

从我的测试中,我发现了一种如何在作业中拥有不同用户的方法。它是由用户 USER= 直接安排作业的时间。问题是,这不太可能发生,因为通常所有脚本都在 SYS 下执行。

请问,你能解释一下工作“执行者”的决心是如何起作用的吗?有没有办法通过 PL/SQL 脚本确定 Job 执行者是谁?你能指导我看一份描述它的文档吗?

【问题讨论】:

    标签: sql oracle plsql oracle11g oracle-sqldeveloper


    【解决方案1】:

    1) ALL_SCHEDULER_JOB_LOG / DBA_SCHEDULER_JOB_LOG。

    http://docs.oracle.com/cd/B12037_01/server.101/b10755/statviews_1139.htm#i1587038

    2) 您真的需要 SYS 帐户来执行作业吗?在大多数生产系统中,这会引起很多 DBA 的担忧,他们几乎不允许在 SYS 下执行用户定义的作业。

    另一个有用的链接:

    http://docs.oracle.com/cd/B19306_01/server.102/b14231/schedover.htm#i1106753

    " 您可以通过指定 schema.job_name 在另一个模式中创建作业。因此,作业的创建者不一定是作业所有者。作业所有者是在其架构中创建作业的用户,而作业创建者是正在创建作业的用户。作业以创建作业的模式的权限执行。作业运行时的 NLS 环境是创建作业时存在的环境。

    创建作业后,可以使用 *_SCHEDULER_JOBS 视图对其进行查询。作业创建时默认禁用,需要启用才能运行。 "

    【讨论】:

    • 非常感谢您这么快的回复!如果我现在正确理解了,那么当我在 SCHEMA1 下有一个由 USER=SYS 创建的 Job1 时,执行者是 SYS。当 SCHEMA1 下的 USER=SCHEMA1 创建 Job2 时,执行程序是 SCHEMA1(当 Job2 JOB_ACTION='DBMS_OUTPUT.PUT_LINE('Logged in user: '|| USER);' 它将返回 SCHEMA1) 问题是,我没有有机会查询 USER。因为对于 OPERATION=RUN 是 ALL_SCHEDULER_JOB_LOG.USER_NAME=null。对于 OPERATIONRUN 是 USER_NAME 不再为空,但这些值早已不复存在,这是自动处理日志的原因。
    • 刚找到有JOB_CREATOR的ALL_SCHEDULER_JOBS
    猜你喜欢
    • 2014-01-17
    • 2019-02-17
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多