我有一个可怕的问题,我正在努力。 我们有两个环境:一个用于开发,一个用于测试。
我刚刚将一些代码迁移到测试环境中,但它无法正常工作。
为了不进入细节,我正在运行一个创建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位生产
答案 0 :(得分:1)
如果USE_CURRENT_SESSION = false,则作业在后台进程中运行,并拥有拥有后台进程的帐户的权限。
USE_CURRENT_SESSION = true - 您的会话,您帐户的权限。
您正在尝试在DIRECTORY对象中创建文件? 您的帐户是否具有DIRECTORY对象指向的文件夹的写权限?