當前位置:首頁 » 存儲配置 » oracle給存儲過程授權

oracle給存儲過程授權

發布時間: 2025-03-19 02:08:26

❶ oracle 存儲過程 許可權問題 PL/SQL: ORA-01031: 許可權不足

許可權不足就是說你還沒有連接到伺服器,或者你連接過了又斷開了,再次連接上了就該不會出現許可權問題。

❷ oracle怎麼只給存儲過程授權執行許可權不給看的許可權

存儲過程的相關許可權一共只有兩個,一個是excute許可權,還有一個是debug許可權。
按照你的說法就是只給excute的許可權,不給debug許可權,因為沒試過這樣能不能查看,所以你要自己試驗下才行。

❸ 如何實現只授予用戶查看存儲過程定義的許可權

如何授予某個用戶只能查看某些存儲過程的定義許可權,而不能讓用戶去修改、執行存儲過程。看似簡單的問題,卻因為從沒有碰到這樣的需求。花了點時間才梳理、總結清楚。

關於ORACLE賬號的許可權問題,一般分為兩種許可權:

系統許可權: 允許用戶執行特定的資料庫動作,如創建表、創建索引、創建存儲過程等

對象許可權: 允許用戶操縱一些特定的對象,如讀取視圖,可更新某些列、執行存儲過程等

像這種查看存儲過程定義的許可權為對象許可權,但是我們還是首先來看看關於存儲過程的系統許可權吧:

PRIVILEGE NAME PROPERTY--------- ---------------------------------------- -----------140 CREATE PROCEDURE 0-141 CREATE ANY PROCEDURE 0-142 ALTER ANY PROCEDURE 0-143 DROP ANY PROCEDURE 0-144 EXECUTE ANY PROCEDURE 0-241 DEBUG ANY PROCEDURE 0

如上所示,關於存儲過程的系統許可權一般有六種: CREATE PROCEDURE、CREATE ANY PROCEDURE、 ALTER ANY PROCEDURE、DROP ANY PROCEDURE、 EXECUTE ANY PROCEDURE、DEBUG ANY PROCEDURE. 那麼關於存儲過程的對象許可權又有那些呢? 如下例子所示,在用戶ESCMUSER下創建存儲過程PROC_TEST

CREATE OR REPLACE PROCEDURE ESCMUSER.PROC_TESTASBEGINDBMS_OUTPUT.PUT_LINE('It is only test');END;

使用system用戶創建用戶TEMP,如下所示

SQL> create user temp identified by temp;User created.SQL> grant connect,resource to temp;Grant succeeded.

在用戶ESCMUSER下將存儲過程PROC_TEST的所有許可權授予給用戶TEMP。 那麼我們發現存儲過程的對象許可權只有EXECUTE、DEBUG許可權

SQL> COL GRANTEE FOR A12;SQL> COL TABLE_NAME FOR A30;SQL> COL GRANTOR FOR A12;SQL> COL PRIVILEGE FOR A8;SQL> SELECT * FROM USER_TAB_PRIVS_MADE WHERE GRANTEE='TEMP';GRANTEE TABLE_NAME GRANTOR PRIVILEGE GRA HIE---------- --------------------- ------------ --------------------------- --- ---TEMP PROC_TEST ESCMUSER DEBUG NO NOTEMP PROC_TEST ESCMUSER EXECUTE NO NOSQL>

將存儲過程PORC_TEST的許可權從TEMP用戶收回,然後授予用戶TEMP關於存儲過程PROC_TEST的DEBUG許可權

SQL>REVOKE ALL ON PROC_TEST FROM TEMP;SQL>GRANT DEBUG ON PROC_TEST TO TEMP;

那麼TEMP用戶此時執行存儲過程報許可權不足

SQL> SET SERVEROUT ON;SQL> EXEC escmuser.proc_test;begin escmuser.proc_test; end;ORA-06550: line 2, column 16:PLS-00904: insufficient privilege to access object ESCMUSER.PROC_TESTORA-06550: line 2, column 7:PL/SQL: Statement ignored

此時,如果修改存儲過程PROC_TEST就會ORA-01031許可權不足問題。但是你可以在PL/SQL Developer工具或使用下面視圖查看存儲過程的定義。如下所示。

SELECT * FROM ALL_SOURCE WHERE NAME='PROC_TEST'

所以,只需要授予存儲過程的DEBUG許可權給某個用戶,就可以實現只授予用戶查看存儲過程定義的許可權,而限制用戶修改、執行存儲過程。從而達到只授權用戶查看存儲過程定義的許可權。不過這樣實現,總讓我感覺有點怪怪的。

❹ oracle怎麼給存儲過程賦增加表的許可權

GRANT說明:

名稱
GRANT — 賦予一個用戶,一個組或所有用戶訪問許可權
GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }

輸入
privilege 可能的許可權有:
SELECT:訪問聲明的表/視圖的所有列/欄位.
INSERT:向聲明的表中插入所有列欄位.
UPDATE:更新聲明的所有列/欄位.
DELETE:從聲明的表中刪除所有行.
RULE: 在表/視圖上定義規則 (參見 CREATE RULE 語句).
ALL: 賦予所有許可權.

object 賦予許可權的對象名.可能的對象是:
* table (表)
* view (視圖)
* sequence (序列)
* index (索引)

PUBLIC:
代表是所有用戶的簡寫.

GROUP group:
將要賦予許可權的組 group .目前的版本中,組必須是用下面方法顯式創建的.

username:
將要賦予許可權的用戶名.PUBLIC 是代表所有用戶的簡寫.

輸出
CHANGE: 如果成功,返回此信息.
ERROR: ChangeAcl: class "object" not found
如果所聲明的對象不可用或不可能對聲明的組或用戶賦予許可權.

熱點內容
安卓和unity哪個累 發布:2025-03-19 14:31:39 瀏覽:677
雅閣電動座椅怎麼配置 發布:2025-03-19 14:28:30 瀏覽:635
探月編程課 發布:2025-03-19 14:22:34 瀏覽:311
62腳本怎麼安裝 發布:2025-03-19 14:04:25 瀏覽:573
php傳值給html 發布:2025-03-19 14:02:05 瀏覽:608
windowsmedia緩存 發布:2025-03-19 14:02:00 瀏覽:765
百變圖標安卓為什麼有2個應用 發布:2025-03-19 14:00:28 瀏覽:52
數控機床編程指令 發布:2025-03-19 13:52:31 瀏覽:369
c語言與程序設計大學教程 發布:2025-03-19 13:15:25 瀏覽:846
雲時客演算法 發布:2025-03-19 13:07:37 瀏覽:675