使用USE_CURRENT_SESSION = TRUE无法运行作业

时间:2015-02-10 16:15:40

标签: oracle plsql scheduler jobs

我有一个可怕的问题,我正在努力。 我们有两个环境:一个用于开发,一个用于测试。

我刚刚将一些代码迁移到测试环境中,但它无法正常工作。

为了不进入细节,我正在运行一个创建zip的作业。 开发时一切正常(授予一些权限后),但在测试时崩溃。

错误是这样的:

ERROR at line 1:
ORA-27370: job slave failed to launch a job of type EXECUTABLE
ORA-27300: OS system dependent operation:accessing extjob wrapper failed with status: 13
ORA-27301: OS failure message: Permission denied
ORA-27302: failure occurred at: sjsec 3
ORA-06512: at "SYS.DBMS_ISCHED", line 150
ORA-06512: at "SYS.DBMS_SCHEDULER", line 441
ORA-06512: at line 1

有谁知道如何解决这个问题? 最糟糕的是我必须与管理员一起考虑每个想法。

奇怪的是,当我用USE_CURRENT_SESSION = false运行工作时,它可以工作!

凭证没有帮助。


这里回答所有问题的是重现错误的示例代码:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB(  
    JOB_NAME => 'LS',  
    JOB_TYPE => 'EXECUTABLE',
    NUMBER_OF_ARGUMENTS => 1,
    JOB_ACTION => '/bin/ls',
    ENABLED => FALSE,
    AUTO_DROP => TRUE
  );

  DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('LS', 1, '/tmp');
END;  

BEGIN
  DBMS_SCHEDULER.RUN_JOB('LS', FALSE); -- no error
END;

BEGIN
  DBMS_SCHEDULER.RUN_JOB('LS', TRUE); -- error
END;


SELECT * FROM USER_SCHEDULER_JOB_RUN_DETAILS;

我甚至尝试使用oracle用户凭据运行。它没有帮助。 / tmp也是一个目录对象,但有连接吗?

db version:Oracle Database 11g企业版11.2.0.4.0版 - 64位生产

1 个答案:

答案 0 :(得分:1)

如果USE_CURRENT_SESSION = false,则作业在后台进程中运行,并拥有拥有后台进程的帐户的权限。

USE_CURRENT_SESSION = true - 您的会话,您帐户的权限。

您正在尝试在DIRECTORY对象中创建文件? 您的帐户是否具有DIRECTORY对象指向的文件夹的写权限?