无法运行USE_CURRENT_SSION=TRUE的作业



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

我刚刚将一些代码迁移到测试环境中,但它不起作用。

为了不涉及细节,我正在运行一个创建zip的作业。在dev上一切正常(在授予一些权限后),但在测试中崩溃。

错误如下:

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_SSION=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也是一个目录对象,但是有任何连接吗?

数据库版本:Oracle Database 11g Enterprise Edition 11.2.0.4.0-64位生产版

USE_CURRENT_SSION=false时,作业在拥有后台进程的帐户权限的后台进程中运行。

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

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

相关内容