PDA

查看完整版本 : 10046 诊断job 运行错误. 权限不足


oradbHome
2008-01-02, 02:47 PM
说明: procedure 本身可以执行.但是放到job中执行错误

alert.log

ORA-12012: 自动执行作业 187 出错
ORA-01031: 权限不足
ORA-06512: 在"EMMA.PACK_SMS", line 16
ORA-06512: 在"EMMA.PACK_SMS", line 36




奇怪的就是proc本身能够执行,但是放到job中为什么不能执行了呢,查看proc ,发现里面存在 execute immediate create table ,

说明:在存储过程中使用的到系统权限不能通过rule来授权,需要显示授权,或者使用AUTHID CURRENT_USER

发现次存储过程使用了AUTHID CURRENT_USER ,所以存储过程能够执行.可是在job中就不能执行了.可知job是oracle后台进程启动的.这点就想不通了.

sql>grant create table to user_name;

之后就可以run job了.

这里可以利用10046 , 1031 trace name errorstack 来进行trace

sql>alter session set events '10046 trace name context forever , level 12';
sql>alter session set events '1031 trace name errorstack level 1';
DECLARE
BEGIN
dbms_job.run(187);
END;

/

查看trace ,发现

ksedmp: internal or fatal error
ORA-01031: 权限不足
Current SQL statement for this session:
create table s_tab as select * from stable

由此可知在job中必须显示授权.

shark
2008-01-03, 09:09 AM
摘来的东西,不全面啊。
LZ ,自己看明白了,再转过来拉:D

oradbHome
2008-01-03, 11:11 AM
啊. .
这可是我自己写. ...绝对正版的.:p

zlc158
2008-01-03, 11:20 AM
啊. .
这可是我自己写. ...绝对正版的.:p


呵呵..我好好研究一下
谢谢