如題,在程式執時。呼叫存盤程序報了ora-01031和ora-06512
查了部分資料說是沒有權限,但好像基本權限都已經給足了。各位有什么建議。
uj5u.com熱心網友回復:
存盤程序的呼叫,有兩種權限,一個呼叫者權限,一是所有者權限。你的當前會話的連接用戶,和這個程序的所屬用戶,是同一個嗎?
uj5u.com熱心網友回復:
應該是同一個用戶。
報錯的是:
ORA-01031: insufficient privileges
ORA-06512: at"SYS.DBMS_SESSION", line 108
ORA-06512: at"TMIS3USER.PKG_TMIS_MGMT", line 17
uj5u.com熱心網友回復:
顯式的賦一下權限, grant 這種的。uj5u.com熱心網友回復:
新建的tmis3user,已經用grant賦予了權限。
剛才查了下,sys用戶有的權限都賦予了他了。不過還是出一樣的提示。
uj5u.com熱心網友回復:
新建的tmis3user,已經用grant賦予了權限。
剛才查了下,sys用戶有的權限都賦予了他了。不過還是出一樣的提示。
uj5u.com熱心網友回復:
1、程式呼叫時候報錯,是指用外部的,比如java,.net這種呼叫的?如果是的話檢查一下連接資料庫用的用戶到底是否正確2、用創建該存盤程序的用戶直接test測驗會報錯嗎,試一下,換成這個用戶行不行
3、創建public同義詞,給你需要用的用戶賦權限
uj5u.com熱心網友回復:
連接資料的用戶是沒有問題的。
在應用程式里面呼叫了procedure里面的dbms_session.clear_context()
但執行的時候出現一個錯誤 :
ORA-01031: 權限不足
ORA-06512: 在 "SYS.DBMS_SESSION", line 108
ORA-06512: 在 "GIS.PGGIS_SESSION", line 17
ORA-06512: 在 line 1
我用sys登入,然后grant execute on sys.dbms_session to TMIS3USER.
但是依然是沒有效果。
uj5u.com熱心網友回復:
UP
uj5u.com熱心網友回復:
用這個試試呢:
grant execute on dbms_session to TMIS3USER
uj5u.com熱心網友回復:
UP
你可以參考一下這個:
http://blog.itpub.net/4227/viewspace-630724/
其實就是,如果一開始你在設定背景關系的時候是指定了包,那么就一定要通過包來設定,而不能直接呼叫 clear_context函式了。
需要注意,在建立背景關系的時候指定了PACKAGE,此后設定背景關系或清除背景關系設定都需要通過這個包的程序來完成,如果直接嘗試呼叫SET_CONTEXT或CLEAR_CONTEXT則會報錯權限不足:
SQL> EXEC DBMS_SESSION.SET_CONTEXT('MY_CONTEXT', 'A', '50')
BEGIN DBMS_SESSION.SET_CONTEXT('MY_CONTEXT', 'A', '50'); END;
*
第 1 行出現錯誤:
ORA-01031: 權限不足
ORA-06512: 在 "SYS.DBMS_SESSION", line 101
ORA-06512: 在 line 1
SQL> EXEC DBMS_SESSION.CLEAR_CONTEXT('MY_CONTEXT', NULL, 'ATTR2')
BEGIN DBMS_SESSION.CLEAR_CONTEXT('MY_CONTEXT', NULL, 'ATTR2'); END;
*
第 1 行出現錯誤:
ORA-01031: 權限不足
ORA-06512: 在 "SYS.DBMS_SESSION", line 115
ORA-06512: 在 line 1
uj5u.com熱心網友回復:
1、程式呼叫時候報錯,是指用外部的,比如java,.net這種呼叫的?如果是的話檢查一下連接資料庫用的用戶到底是否正確
2、用創建該存盤程序的用戶直接test測驗會報錯嗎,試一下,換成這個用戶行不行
3、創建public同義詞,給你需要用的用戶賦權限
連接資料的用戶是沒有問題的。
在應用程式里面呼叫了procedure里面的dbms_session.clear_context()
但執行的時候出現一個錯誤 :
ORA-01031: 權限不足
ORA-06512: 在 "SYS.DBMS_SESSION", line 108
ORA-06512: 在 "GIS.PGGIS_SESSION", line 17
ORA-06512: 在 line 1
我用sys登入,然后grant execute on sys.dbms_session to TMIS3USER.
但是依然是沒有效果。
用這個試試呢:
grant execute on dbms_session to TMIS3USER
謝謝,不過這個權限也已經賦予過去了。
uj5u.com熱心網友回復:
UP
你可以參考一下這個:
http://blog.itpub.net/4227/viewspace-630724/
其實就是,如果一開始你在設定背景關系的時候是指定了包,那么就一定要通過包來設定,而不能直接呼叫 clear_context函式了。
需要注意,在建立背景關系的時候指定了PACKAGE,此后設定背景關系或清除背景關系設定都需要通過這個包的程序來完成,如果直接嘗試呼叫SET_CONTEXT或CLEAR_CONTEXT則會報錯權限不足:
SQL> EXEC DBMS_SESSION.SET_CONTEXT('MY_CONTEXT', 'A', '50')
BEGIN DBMS_SESSION.SET_CONTEXT('MY_CONTEXT', 'A', '50'); END;
*
第 1 行出現錯誤:
ORA-01031: 權限不足
ORA-06512: 在 "SYS.DBMS_SESSION", line 101
ORA-06512: 在 line 1
SQL> EXEC DBMS_SESSION.CLEAR_CONTEXT('MY_CONTEXT', NULL, 'ATTR2')
BEGIN DBMS_SESSION.CLEAR_CONTEXT('MY_CONTEXT', NULL, 'ATTR2'); END;
*
第 1 行出現錯誤:
ORA-01031: 權限不足
ORA-06512: 在 "SYS.DBMS_SESSION", line 115
ORA-06512: 在 line 1
抱歉,問題描述的不是夠清晰。
這個不是新建一個DB來使用,而是因為要將舊的DB移植到新的服務器上去。
舊DB在使用上是沒有問題的。所以存盤程序和呼叫應該是沒有問題。
uj5u.com熱心網友回復:
我是在舊的DB用EXP整個資料庫。單用的是SYS用戶來EXP。
匯入的時候是用自己新建的用戶。和這個有沒有關系?
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
你沒有講當前連接用戶給的什么大權限,比如:grant connect,resource,dba,create table,create sequence,create type,create job,drop any table to user_name;
uj5u.com熱心網友回復:
解決方法:用pl/sql登錄DBA用戶給相應的Web所使用的用戶在"Users"中找到該用戶并選擇“System privileges”選項卡中增加“create any table”即可。
uj5u.com熱心網友回復:
建議用select * from dba_sys_privs;
select * from user_sys_privs;
查看一下權限是不是少了
uj5u.com熱心網友回復:
是權限的問題嗎uj5u.com熱心網友回復:
最直接的方法 用戶登錄plsql ,test 程序,看看沒有測驗的權限,沒有賦格權就ok,如果可以,有可你就除錯看看運行到哪行代碼有問題!uj5u.com熱心網友回復:
呼叫存盤程序的這個 oracle用戶 沒有執行存盤程序的權限, 或者 這個用戶的權限太低,給這個加上dba權限和執行存盤程序的權限轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/77979.html
標籤:基礎和管理
下一篇:sql 存盤程序
