實現ORACLE如何去除某些使用者的DROP許可權!

來源:互聯網
上載者:User

有時在進行項目開發過程中,由於一些誤操作會導致資料庫的表給誤刪除掉,為了避免這一情況的發生,如何嚴格控制某使用者不能對自己的庫進行DROP許可權,需要進行相關設定,由於預設connect的許可權也是具有drop自己使用者的表結構,通過product_user_profile只能限制sql*plus的操作,而不能限制其它第三方oracle串連工具,最有效方法就是通過在system使用者下建立觸發器來限制。

具體如下:

這個trigger建到了system使用者下,TEMP幾個使用者都無法Dop自己的對象,你可以參照進行修改。

CREATE OR REPLACE TRIGGER "TRG_DENY_DROP_UBISP" BEFORE
DROP ON DATABASE
BEGIN
  IF (ORA_DICT_OBJ_OWNER='TEMP_ODS' OR
      ORA_DICT_OBJ_OWNER='TEMP_MID' OR
      ORA_DICT_OBJ_OWNER='TEMP_DW' OR
      ORA_DICT_OBJ_OWNER='TEMP_REPORT' OR
      ORA_DICT_OBJ_OWNER='TEMP_WEB' OR
      ORA_DICT_OBJ_OWNER='TEMP_REPORT_NEW')
     AND ORA_LOGIN_USER<>'TEMP_ADMIN'---排除的使用者
     AND ORA_DICT_OBJ_TYPE='TABLE' AND ORA_DICT_OBJ_NAME NOT LIKE '%OLD' THEN--可以讓被限制的使用者刪除的表
     RAISE_APPLICATION_ERROR(-20010,'你不能建立/刪除TEMP_%使用者下的任何錶.');
  END IF;
END TRG_DENY_DROP_UBISP;

註:如果要對目前使用者限制所有對象的DROP操作,可將觸發器中的ORA_DICT_OBJ_TYPE和ORA_DICT_OBJ_NAME的屬性去掉即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.