暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 通过dbms_调度器作业以编程方式运行:导入已完成,但作业以失败结束

askTom 2016-09-02
404

问题描述

嗨,

我正在尝试通过在Windows 10机器上的Oracle 11.2中的dbms_调度器作业中调用im来运行经典的转储导入。导入本身已成功完成,但遗憾的是,根据user_调度器__作业_run_详细信息,作业失败(系统找不到指定的路径)。

下面是一个示例代码:

conn系统/密码
exec DBMS_SCHEDULER.CREATE_JOB (作业_NAME =>'sorin',作业类型=>'Executable',作业_操作=>'im',编号_OF_ARGUS => 4 );
exec DBMS_SCHEDULER.SET_JOB_ARGUM_VALUE ('sorin', 1 ,'sorin/test') ;
exec DBMS_SCHEDULER.SET_JOB_ARGUM_VALUE ('sorin', 2 ,'file="c:\1\dump.dmp"') ;
exec DBMS_SCHEDULER.SET_JOB_ARGUM_VALUE ('sorin', 3 ,'全=Y') ;
exec DBMS_SCHEDULER.SET_JOB_ARGUM_VALUE ('sorin', 4,'log="c:\1\sorin.log"') ;
Exec DBMS_SCHEDULER.RUN_JOB (作业名称=>'sorin',使用当前_SESSION => TRUE ) ;

返回一段时间后:

第1行出错:
ORA-27369 :类型为Executable的作业失败,退出代码为:系统找不到
指定的路径。
ORA-06512 : "SYS.DBMS_ISCHED" ,第196行
ORA-06512 : "SYS.DBMS_SCHEDULER" ,第486行
ORA-06512 :在第1行

但是,导入是进行的,并且在c:\1下创建了带有普通导入日志的sorin.log ,以“导入成功终止,但出现警告。
". And状态=此作业运行的表user_调度器_作业_运行详细信息中的失败。

我尝试过各种各样的方法,比如:
-创建凭据并将其传递给CREATE_JOB过程
-作业=>'?/INB/Imp',并显式提供到sim.exe的完整路径
-作业=>'c:\Windows\System32\cmd.exe'并作为参数传递一个.bat文件,该文件设置当前目录,然后调用

但结果都一样。我还没有尝试使用dbms_Sscheuler.Cream_程序创建程序,但我认为这并不是必要的。如果我应该试试,请告诉我。

虽然脚本基本上完成了它的工作是好的,但它在某种程度上是令人困惑和误导的,工作结束是失败的。您是否知道为什么会发生这种情况,以及应该如何修改代码,使dbms_调度器作业在这种情况下不会失败:导入是在所有运行和完成之后,因此它可以找到导入可执行文件、转储文件并创建导入日志文件。

提前感谢您的帮助。

专家解答

有几件事
-使用完全限定的路径
-确保OracleJobSscheulerSID服务正在运行。

我的计算机上的示例

--上面的服务已停止

SQL> exec DBMS_SCHEDULER.DROP_JOB(JOB_NAME => 'sorin');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'sorin',JOB_TYPE => 'EXECUTABLE',JOB_ACTION =>'c:\oracle\product\12.1.0.2\bin\exp.exe', NUMBER_OF_ARGUMENTS => 4);

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('sorin', 1, 'userid=mcdonac/xxxxxx@np12');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('sorin', 2, 'file="c:\temp\dump.dmp"');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('sorin', 3, 'owner=scott');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('sorin', 4, 'log="c:\temp\sorin.log"');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.RUN_JOB(JOB_NAME => 'sorin', USE_CURRENT_SESSION => TRUE);
BEGIN DBMS_SCHEDULER.RUN_JOB(JOB_NAME => 'sorin', USE_CURRENT_SESSION => TRUE); END;

*
ERROR at line 1:
ORA-27370: job slave failed to launch a job of type EXECUTABLE
ORA-27300: OS system dependent operation:accessing job scheduler service failed with status: 2
ORA-27301: OS failure message: The system cannot find the file specified.
ORA-27302: failure occurred at: sjsec 5
ORA-27303: additional information: The system cannot find the file specified.
ORA-06512: at "SYS.DBMS_ISCHED", line 209
ORA-06512: at "SYS.DBMS_SCHEDULER", line 594
ORA-06512: at line 1


然后我启用并启动了服务

SQL> exec DBMS_SCHEDULER.DROP_JOB(JOB_NAME => 'sorin');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'sorin',JOB_TYPE => 'EXECUTABLE',JOB_ACTION =>'c:\oracle\product\12.1.0.2\bin\exp.exe', NUMBER_OF_ARGUMENTS => 4);

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('sorin', 1, 'userid=mcdonac/******@np12');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('sorin', 2, 'file="c:\temp\dump.dmp"');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('sorin', 3, 'owner=scott');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('sorin', 4, 'log="c:\temp\sorin.log"');

PL/SQL procedure successfully completed.

SQL> exec DBMS_SCHEDULER.RUN_JOB(JOB_NAME => 'sorin', USE_CURRENT_SESSION => TRUE);

PL/SQL procedure successfully completed.

SQL> col job_name format a30
SQL> select job_name, status from user_scheduler_job_run_details order by log_date;

JOB_NAME                       STATUS
------------------------------ ------------------------------
SORIN                          FAILED
SORIN                          SUCCEEDED


希望这个能帮上忙。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论