执行oracle中的job报错:ORA-12011:无法执行作业1

本文介绍了一个在执行存储过程创建新表时遇到的权限错误,并详细解释了解决方案。通过对比不同用户权限设置,揭示了存储过程执行DDL命令时对用户权限的具体需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LZ在做一个job执行每天新增一个表的操作时,存储过程运行没问题,job也创建成功,但运行job时,却报错:


,后又用sys用户登陆创建了同样的存储过程和job,结果可以执行成功。当时就猜测是权限问题。后在网上搜索发现,这是因为存储过程中执行的是DDL命令,

当前用户没有执行DDL的权限,引用另一篇文章中的内容如下:

总结,角色resource里也包括了create table的权限,但是执行过程(该过程为一个创建表的过程)报错,而我们直接给用户hat授予create table权限,执行该过程则成功执行,
此处说明用户的角色权限是不可以继承到存储过程里面的,只有对用户授予直接的系统权限,存储过程才可继承。
最终,执行了赋权限给了当前用户,这样就可以正常执行了这个job了。
总结,存储过程和job在执行DDL命令时,都需要其所有者拥有执行 DDL命令的权限。
关于具体请参见另一篇关于存储过程和权限的文章:http://blog.youkuaiyun.com/majian_1987/article/details/8721332


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值