【轉】關於Oracle預存程序執行許可權問題的解決

來源:互聯網
上載者:User

標籤:

原文地址:http://blog.itpub.net/4227/viewspace-69049/

今天晚上升級,有個預存程序死活編譯不過去,提示許可權不足,但是使用者是具有dba許可權的,網上一查才知道,oracle預存程序分兩種,DR(Definer‘s Rights ) Procedure和IR(Invoker‘s Rights ) Procedure。

    1、定義者許可權:定義者許可權PL/SQL程式單元是以這個程式單元擁有者的特權來執行它的,也就是說,任何具有這個PL/SQL程式單元執行權的使用者都可以訪問程式中的對象。所有具有執行權的使用者都有相同的存取權限,在定義者許可權下,執行的使用者操作的schema為定義者,所操作的對象是定義者在編譯時間指定的對象。在定義者(definer)許可權下,目前使用者的許可權為角色無效情況下所擁有的許可權。    2、調用者許可權:調用者許可權是指目前使用者(而不是程式的建立者)執行PL/SQL程式體的許可權。這意味著不同的使用者對於某個對象具有的許可權很可能是不同的,這個思想的提出,解決了不同使用者更新不同表的方法。在調用者許可權下,執行的使用者操作的schema為目前使用者,所操作的對象是當前模式下的對象。在調用者(invoker)許可權下,目前使用者的許可權為當前所擁有的許可權(含角色)。    3、ORACLE預設為定義者許可權,定義者許可權在預存程序中ROLE無效,需要顯示授權,例如在預存程序中調用其他使用者的表,但是定義預存程序的目前使用者沒有顯示訪問該表的許可權,即使目前使用者具有dba角色,編譯過程中也會出現許可權不足的問題,因為role無效。
    定義預存程序時,通過指定AUTHID 屬性,定義DR Procedure 和IR ProcedureDR Procedure 1、定 義    CREATE OR REPLACE procedure DEMO(ID in NUMBER) AUTHID DEFINER as      ...    BEGIN      ...    END DEMO;IR Procedure1、定 義    CREATE OR REPLACE procedure DEMO(ID in NUMBER) AUTHID CURRENT_USER as     ...    BEGIN     ...    END DEMO;

【轉】關於Oracle預存程序執行許可權問題的解決

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.