我遇到了一个可怕的问题,我正在努力解决。我们有两个环境:一个用于开发,一个用于测试。
我刚刚将一些代码迁移到测试环境中,但它不起作用。
为了不涉及细节,我正在运行一个创建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对象所指向的文件夹具有写入权限?