创建oracle dblink权限不足,Oracle-存储过程-创建sequence的时候报权限不足
引用自:http://www.cnblogs.com/yhoralce/p/6817010.html
在包體里寫了一個(gè)過程,test執(zhí)行時(shí)報(bào)錯(cuò),但是如果把該過程單獨(dú)拿出來創(chuàng)建一個(gè),就能順利執(zhí)行。
在沒加上調(diào)用者權(quán)??authid current_user之前,報(bào)錯(cuò)如下
ORA-01031: insufficient privileges。ORA-06512: at "RT_ANN_ODS.ODS_EI_WDNEW", line 1720
查了01031,發(fā)現(xiàn)是缺少權(quán)限,那么問題就來了,缺少什么權(quán)限?
過程能編譯完成,只是測(cè)試時(shí)候報(bào)錯(cuò),那么就是缺少調(diào)用者權(quán)限了。
鎖定了這個(gè)問題,就輸入調(diào)用者權(quán)限即可。
在單一的過程中,調(diào)用者權(quán)限是這樣用的:
create or replace procedure p_test
2 Authid Current_User ----寫在過程名稱之后,is之前
3 is
4 begin
5 execute immediate 'create sequence SEQ_TBS minvalue 10001 maxvalue 99999 start with 10001 increment by 1cache 10';6 end;
于是在包體里的過程名稱后邊加上Authid Current_User,編譯,報(bào)錯(cuò)如下:
PLS-00157:?? AUTHID?only allowed on schema-level programs
這句話的意思是說,AUTHID只能用字啊頂級(jí)的項(xiàng)目,也就是在包里使用才能生效。
查了下錯(cuò)誤原因 An AUTHID clause was specified for a subprogram inside a package or type. These clauses are only supported for top-level stored procedures, packages, and types.
大致意思就是authid只能用在頂級(jí)的存儲(chǔ)過程、包、類型上,不能用在包或類型的子程序上。
在包上加入authid,執(zhí)行正常了。
create or replace package p_test
authid current_user
is
……
到此,問題解決。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的创建oracle dblink权限不足,Oracle-存储过程-创建sequence的时候报权限不足的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 实现map,PLSQL实现
- 下一篇: oracle获取父级,如何通过sql获取