前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试483】通过DBMS_SCHEDULER如何调用SHELL脚本?

【DB笔试面试483】通过DBMS_SCHEDULER如何调用SHELL脚本?

作者头像
AiDBA宝典
发布2019-09-30 16:23:15
7790
发布2019-09-30 16:23:15
举报
文章被收录于专栏:小麦苗的DB宝专栏

题目部分

通过DBMS_SCHEDULER如何调用SHELL脚本?

答案部分

可以直接创建JOB来调用SHELL脚本,如下所示:

代码语言:javascript
复制
BEGIN DBMS_SCHEDULER.CREATE_JOB(JOB_NAME=>'TEST13',
JOB_TYPE=>'EXECUTABLE',
ENABLED =>FALSE,
AUTO_DROP =>FALSE,
JOB_ACTION=>'/u01/dw/regain/test1.sh',
NUMBER_OF_ARGUMENTS => 1);
END;
/
BEGIN DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(JOB_NAME=>'TEST13',
ARGUMENT_POSITION => 1,
ARGUMENT_VALUE => 'AAAA');
END;
/

若是以普通用户执行上述代码的话,在执行过程中会遇到ORA-27486: insufficient privileges和ORA-27399: job type EXECUTABLE requires the CREATE EXTERNAL JOB privilege的错误,这是由于权限不足的缘故导致的。

解决方法:以SYSDBA连接,然后执行上述代码,或者用SYS用户进行赋权操作,这里假设普通用户的用户名为LHR:

代码语言:javascript
复制
GRANT CREATE ANY JOB TO LHR;
GRANT CREATE EXTERNAL JOB TO LHR;

赋权之后接着执行就好了:

代码语言:javascript
复制
SQL> EXEC DBMS_SCHEDULER.ENABLE('TEST13');
SQL> EXEC DBMS_SCHEDULER.RUN_JOB('TEST13');
SQL> EXEC DBMS_SCHEDULER.DROP_JOB('TEST13');

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档