
通过DBMS_SCHEDULER如何调用SHELL脚本?
可以直接创建JOB来调用SHELL脚本,如下所示:
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:
GRANT CREATE ANY JOB TO LHR;
GRANT CREATE EXTERNAL JOB TO LHR;
赋权之后接着执行就好了:
SQL> EXEC DBMS_SCHEDULER.ENABLE('TEST13');
SQL> EXEC DBMS_SCHEDULER.RUN_JOB('TEST13');
SQL> EXEC DBMS_SCHEDULER.DROP_JOB('TEST13');
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

---------------优质麦课------------

详细内容可以添加麦老师微信或QQ私聊。

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:618766405
● 提供OCP、OCM和高可用部分最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。






