dbms_scheduler 执行shell script

A simple dummy example to validate this:
 

rm /tmp/mylog_*.log
echo '#!/bin/ksh' > /tmp/test.sh
echo 'DATE=`date +%Y%m%d`' >> /tmp/test.sh
echo 'echo "this is a test " > /tmp/mylog_$DATE.log' >> /tmp/test.sh
sqlplus /nolog << EOF

connect / as sysdba
exec dbms_scheduler.drop_job('MY_JOB');
exec dbms_scheduler.drop_credential('MY_CRED');
exec dbms_scheduler.create_credential('MY_CRED','oracle','oracle1');

begin
dbms_scheduler.create_job(
job_name => 'MY_JOB',
job_type => 'EXECUTABLE',
job_action => '/tmp/test.sh',
auto_drop => FALSE,
enabled => false,
comments => 'Run shell-script');
end;
/
exec dbms_scheduler.Set_Attribute('MY_JOB', 'credential_name', 'MY_CRED' );
exec dbms_scheduler.enable('MY_JOB');
-- failure with wrong credentials
exec dbms_scheduler.run_job('MY_JOB');
-- fixing the credentials
exec DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'MY_CRED',attribute=>'password',value=>'oracle');
-- run successfully
exec dbms_scheduler.run_job('MY_JOB');

-----?? 错了也能执行,只能重建不能set

SQL> exec DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'MY_CRED',attribute=>'passfword',value=>'oracle');
begin DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'MY_CRED',attribute=>'passfword',value=>'oracle'); end;

ORA-27469: PASSFWORD is not a valid credential attribute
ORA-06512: at "SYS.DBMS_ISCHED", line 3246
ORA-06512: at "SYS.DBMS_SCHEDULER", line 3150
ORA-06512: at line 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值