存儲過程許可權不足
1. oracle 存儲過程 許可權問題 PL/sql: ORA-01031: 許可權不足
許可權不足就是說你還沒有連接到伺服器,或者你連接過了又斷開了,再次連接上了就該不會出現許可權問題。
2. PL/SQL建好存儲過程,編譯也成功了,但是用execute執行的的 提示許可權不足(ora-01031)
用你有dba許可權的用戶執行這個試試。
;
如果還報錯就要看代碼了。
3. oracle 測試存儲過程 是哪個許可權
Oracle規定,在默認的情況下,在調用存儲過程用戶的角色不起作用,即在執行存儲過程時只有Public許可權。所以在調用Create table時,會有許可權不足的提示。
只需要使用IR Procere就能很快解決問題啦,把代碼修改為如下:
CREATE OR REPLACE PROCEDURE TestProc AUTHID current_user
IS
flag number;
BEGIN
select count(*) into flag from all_tables where table_name='TEMP3';
if (flag=0) then
execute immediate 'create global temporary table TEMP3 on commit preserve rows as select * from BUSI_ECONTRACT';
else
execute immediate 'insert into TEMP3 select * from BUSI_ECONTRACT';
end if;
END ;
執行存儲過程,順利通過。
4. 我的插入語句能夠通過,但把它放在存儲過程里就不行了,報錯為ORA-01031: 許可權不足
grant select any catalog to user;
在存儲過程中的有些操作需要顯式地賦予許可權, 即便單獨運行是可以的.
5. oracle 創建存儲過程部分表編譯錯誤是否表空間、許可權不足
你先查看錯誤是什麼啊,好像有個什麼show error的嗎?
有可能是許可權問題,你當前用戶需要獲得該表的使用許可權,你上面列出來的是系統許可權,還有對象的許可權,你針對哪個對象有什麼樣的許可權,需要授權,同樣使用grant 授權,列如:grant select on table to user;記得沒錯就是這樣的。還有就是該用戶也要用相應表空間的使用權,這個就是修改用戶的定義,指定能使用該表空間吧,沒有看參考,提供這些給你參考哈!
6. oracle 在存儲過程中用動態sql創建序列為何會遇到許可權不足的問題呢
create or replace procere
create sequence
都需要許可權。。。
用sysdba給該用戶grant一個吧。。
GRANT EXECUTE ANY PROCEDURE TO 普通用戶 WITH ADMIN OPTION;
GRANT RESOURCE TO 普通用戶; --這個已經包含了序列的許可權
7. 創建存儲過程 老師出現 ORA-01031: 許可權不足
你這個表USER01在system用戶下存在嗎?
不存在的話是要報錯的
用system用戶給你的gong用戶賦權
grantconnect,resource,dbatogong;
這樣應該基本就差不多了
8. ORA-01031: 許可權不足
汗~~
GRANT create any table TO scott;
sequence 是序列,你試著給它創建序列的許可權有毛用啊,你的存儲過程里是要創建表啊。
===============================================
哈,沒研究過這么深,只不過這么用久了,就習慣這么用了。遺憾,你可以去查一些存儲過程的教程,那上邊一般會有這些基礎知識。我只是會用而已。
9. 在存儲過程中,建立臨時表,提示許可權不足,請問需要什麼許可權
創建表的許可權賦給用戶
oracle 賦權語句,用dba用戶執行
grantcreatetabletotest;
10. 錯誤ora 00900 06512
可能是沒有許可權。雖然當前用戶執行語句是有許可權的,但是放到存儲過程中就必須要顯式的賦個許可權給當前用戶。以下參考
【IT168 技術文檔】我們知道,用戶擁有的role許可權在存儲過程是不可用的。如:
SQL> select * from dba_role_privs where grantee='SUK';
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------ ------------ ------------ ------------
SUK DBA NO YES
SUK CONNECT NO YES
SUK RESOURCE NO YES
--用戶SUK擁有DBA這個role
--再創建一個測試存儲過程:
create or replace procere p_create_table
is
begin
Execute Immediate 'create table create_table(id int)';
end p_create_table;
--然後測試
SQL> exec p_create_table;
begin p_create_table; end;
ORA-01031: 許可權不足
ORA-06512: 在"SUK.P_CREATE_TABLE", line 3
ORA-06512: 在line 1
--可以看到,即使擁有DBA role,也不能創建表。role在存儲過程中不可用。
--遇到這種情況,我們一般需要顯式進行系統許可權,如grant create table to suk;
--但這種方法太麻煩,有時候可能需要進行非常多的授權才能執行存儲過程
--實際上,oracle給我們提供了在存儲過程中使用role許可權的方法:
--修改存儲過程,加入Authid Current_User時存儲過程可以使用role許可權。
create or replace procere p_create_table
Authid Current_User is
begin
Execute Immediate 'create table create_table(id int)';
end p_create_table;
--再嘗試執行:
SQL> exec p_create_table;
PL/SQL procere successfully completed
--已經可以執行了。