<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 175  文章 - 202  trackbacks - 0
    <2010年3月>
    28123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    第一個Blog,記錄哈哈的生活

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    Java links

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    編譯 Trigger 出錯,錯誤的原因是找不到sequence,但是在 sql 里面使用這個sequence非常正常。找了半天原因,另一個同事試了一下給這個sequence授權,就可以編譯通過了。
    疑惑了很久,為什么sql中可以用,編譯trigger就不能用了呢。
    查了一些資料,才明白。
    是因為 Oracle 在編譯Procedu的時候,只檢查當前用戶的權限,而不管角色。所以,即使這個用戶是DBA,也沒有用,必須要對這個用戶授權。這就是顯式授權。
    我在CSDN上找到了一個很好的文章,解釋了顯式授權和隱式授權的區別。
    附在下面。






    來自CSDN博客,http://blog.csdn.net/pashine/archive/2009/12/21/5050060.aspx


    oracle 對象的授權
    Oracle授權

     

    一、授權語法


    GRANT 語法:

    1.顯式授權(直接將對象授權給用戶)
     GRANT privilege [, ...] ON object [, ...]  TO  { Public| Group | Username|role} [WITH GRANT OPTION ] 
      
    2.隱式授權(通過將角色授權給用戶)
     GRANT role TO  { Public| Group | Username|role}

    語法說明:

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

    object 賦予權限的對象名.
        可能的對象是: 
         table (表)
         view (視圖)
         sequence (序列)
         index (索引)
    Public    代表是所有用戶的簡寫.
    Group     將要賦予權限的組GROUP .目前的版本中,組必須是用下面方法顯式創建的.
    Username  將要賦予權限的用戶名.PUBLIC 是代表所有用戶的簡寫.
    role      某個角色,(如DBA)
    WITH GRANT OPTION 允許向別人賦予同樣權限,被授權的用戶可以繼續授權.


    描述
        對象創建后,除了創建者外,除非創建者賦予(GRANT)權限,其他人沒有訪問對象的權限。
        GRANT 允許對象的創建者給某用戶或某組或所有用戶(PUBLIC)某些特定的權限。不需要給創建者賦予(GRANT)對象的權限,創建者自動擁有對象的所有權限,包括刪除它的權限。

    說明

    Oracle不允許在過程中使用未經顯式授權的對象. 要使用另一用戶的對象,必須通過另一用戶給自己顯示授權。

    因為Oracle在編譯存儲過程時并不檢查定義者擁有的角色,只是檢查其被顯式授予的權限,而DBA也是一種角色,所以即使是DBA,也需要顯式授權。

    二、授權方式 (顯式和隱式)


      對象授權有兩種模式,顯式和隱式: 
    顯示授權和隱式授權的區別是:顯示授權是直接把對象授權給用戶,隱式授權是給用戶授予角色的方式來實現授權。

    1. 顯式授權是直接用GRANT語句進行授權。
     語法:GRANT 某種權限 TO 用戶
    如:
      CONN  USER1/Password
      GRANT SELECT  ON TABLE1 TO USER2;    --- 將user1的表TABLE1的select 權限顯示授權給user2
      GRANT UPDATE  ON TABLE1 TO USER2;    --- 將user1的表TABLE1的update權限顯示授權給user2


      注:用system/manager登錄是沒法授權的,要使USER2用戶能在存儲過程里面訪問USER1用戶的表,必須以USER1用戶(該用戶有dba權限)登錄,然后授權就可以了。
      SQL>grant select on USER1.MA_USERINFO to USER2

    2.隱式授權則是通過ROLE來授權。
     語法:GRANT 某個角色 TO 用戶
    如: 
      CONN  USER1 
      GRANT SELECT ON TABLE1 TO ROLE1;     --- 將USER1的表TABLE1的select權限顯示授權給Role1
      CONN  SYSTEM 
      GRANT ROLE1 TO USER2;                --- 給USER2授與Role1的權限。


    三、收回權限


       語法:
           revoke 權限 from 用戶;

       例子:

      revoke select on table1 from User1; 收回查詢select表的權限;
      revoke all    on table1 from User1;
        grant  connect to xujin;
      revoke  connect  from xujin

          revoke  ROLE1    from USER2;

    End

    posted on 2010-03-05 11:25 哈哈的日子 閱讀(1141) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 一个人免费观看www视频在线| av永久免费网站在线观看| 18禁男女爽爽爽午夜网站免费| 国产亚洲精午夜久久久久久| 在线精品自拍亚洲第一区| 日本免费一区二区三区最新vr| 亚洲色欲色欲www在线播放| 成年女人毛片免费播放人| 亚洲午夜精品一区二区麻豆| 成在人线AV无码免费| 亚洲精品无码av中文字幕| 免费观看大片毛片| 老司机福利在线免费观看| 亚洲国产精品成人AV无码久久综合影院| 苍井空亚洲精品AA片在线播放| 国产不卡免费视频| 中文永久免费观看网站| 亚洲国产成人高清在线观看| 日本黄色动图免费在线观看| 亚洲视频一区二区三区| 在线观看无码AV网站永久免费| 亚洲精品美女网站| 免费在线观看视频a| 成人免费午夜视频| 综合偷自拍亚洲乱中文字幕| 亚洲午夜无码片在线观看影院猛| a毛片在线还看免费网站| 亚洲理论在线观看| 在线看片无码永久免费aⅴ| a级毛片免费高清视频| 久久精品国产亚洲av麻| 国产亚洲情侣久久精品| 亚洲中文字幕无码不卡电影| 中文字幕在线观看免费视频| 亚洲国产AV无码一区二区三区| 中文亚洲AV片在线观看不卡| 成人免费的性色视频| 深夜a级毛片免费无码| 亚洲国产精品久久久久网站| 国内精品免费视频自在线| 插鸡网站在线播放免费观看|