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

Oracle 调度程序作业不引发错误

askTom 2017-04-24
289

问题描述

嗨,askTome团队。

我有两个数据库,一个名字是prod,另一个是test。

他们的版本是12.2.0.1

我像这样在db:prod上创建一个调度程序作业

begin
  dbms_scheduler.create_job(
       job_name=>'J_TEST_02',
       job_type=>'SQL_SCRIPT',
       job_action=>,
       credential_name=>'C_OS_ORA12C2_01',
       auto_drop=>false,  
       enabled=>false
  );
end;

v_scripts is my procedure.

I test this job used a invalid job_action which like this
"select 1+2 from dual;".

begin
  dbms_scheduler.run_job(
       job_name=>'J_TEST_02',
       use_current_session=>false
  );
end;

BUT when I check the user_scheduler_job_run_details, I found the record about run this job was SUCCEEDED.
AND the col OUTPUT is 

SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 24 11:10:34 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

SQL> SP2-0640: Not connected
SQL> 


为什么调度程序作业不引发错误,以及如何在使用调度程序作业时引发错误,job_type是 “SQL_SCRIPT” 或 “BACKUP_SCRIPT”。

非常感谢。

专家解答

SQL_SCRIPT作业类型实际上是您将提供给SQLPlus会话的 * content *,该会话以以下方式启动:

sqlplus /nolog

所以 'v_script '需要类似的东西:

连接斯科特/老虎
阀芯输出。lst
从dual中选择1 2;
阀芯关闭

在您的情况下,您从未连接过,但我们确实设法运行了sqlplus,并且没有收到任何数据库错误。

显然,出于安全原因,脚本中的 'connect' 语句通常不是一件好事,因此调度程序也支持凭据,即,您可以创建凭据,然后提交通过预构建的凭据的SQL_SCRIPT作业。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论