ORA-06512 問題解決
在執行儲存過程時,有動態執行SQL時,有時報錯ORA-06512。
SQL> select * from dba_role_privs where grantee='dev';
SQL> select * from dba_role_privs where grantee='dev';
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------ ------------ ------------ ------------
DEV CONNECT NO YES
DEV RESOURCE NO YES
--再建立一個測試儲存過程:
create or replace procedure p_create_table
is
begin
Execute Immediate 'create table test(id int)';
end p_create_table;
--然後測試
SQL> exec p_create_table;
begin p_create_table; end;
ORA-01031: 許可權不足
ORA-06512: 在"DEV.P_CREATE_TABLE", line 3
ORA-06512: 在line 1
--可以看到,即使擁有CONNECT,RESOURCE role,也不能建立表。role在儲存過程中不可用。
--遇到這種情況,我們一般需要顯式進行系統許可權,如grant create table to DEV;
--但這種方法太麻煩,有時候可能需要進行非常多的授權才能執行儲存過程
--實際上,oracle給我們提供了在儲存過程中使用role許可權的方法:
--修改儲存過程,加入Authid Current_User時儲存過程可以使用role許可權。
create or replace procedure p_create_table
Authid Current_User is
begin
Execute Immediate 'create table test(id int)';
end p_create_table;
--再嘗試執行:
SQL> exec p_create_table;
PL/SQL procedure successfully completed
--已經可以執行了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-2145425/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解決「問題」,不要解決問題
- 資料泵匯出時報ORA-31623、ORA-06512問題的解決
- 解決問題
- 發現問題,解決問題
- yum問題解決
- sqlitedabaseislocked問題解決SQLite
- dump 解決問題
- 提問題比解決問題更重要
- SERVICE問題解決方法
- 解決高度塌陷問題
- qeephp 解決跨越問題PHP
- bg配置問題解決
- git ssl 問題解決Git
- AIX問題解決思路AI
- WAS startnode hang問題解決
- 解決grub rescue問題
- 解決跨域問題跨域
- Ubuntu 16.04 Vysor 破解 和黑屏問題解決+ 閃屏問題解決Ubuntu
- 【問題解決】單機搭建dataguard的問題
- 解決 Github 國內訪問問題Github
- 解決github訪問慢的問題Github
- 解決 github 訪問不了的問題Github
- 黑蘋果的問題解決蘋果
- thinkphp-queue問題解決PHP
- CROS 解決跨域問題ROS跨域
- MySQL 中文 like 問題解決MySql
- 解決問題通用方法論
- cors解決跨域問題CORS跨域
- No module named MYSQLdb 問題解決MySql
- As常見問題解決方法
- git常見問題解決Git
- WebSocket跨域問題解決Web跨域
- 解決高度塌陷、定位問題
- rabbitmq解決erlang版本問題MQ
- sql多參問題解決SQL
- OOM問題解決實踐OOM
- mysql大小寫問題解決MySql
- Flask解決跨域問題Flask跨域