【DB筆試面試185】在Oracle中,如何讓普通使用者可以TRUNCATE其他使用者的表?
【DB筆試面試185】在Oracle中,如何讓普通使用者可以TRUNCATE其他使用者的表?
在Oracle中,如何讓普通使用者可以TRUNCATE其他使用者的表?
使用者1若要刪除使用者2的索引,則使用者1需要有DROP ANY INDEX的許可權。使用者1若要TRUNCATE使用者2的表,則使用者1需要有DROP ANY TABLE的許可權。但是,DROP ANY INDEX和DROP ANY TABLE的許可權過大,一般不能賦予普通使用者這2個許可權,那麼可以通過寫儲存過程來實現該功能,如下所示:
CREATE OR REPLACE PROCEDURE PRO_TRUNC_DROP_LHR(COMMAND IN VARCHAR2,
O_TYPE IN VARCHAR2,
OWNER IN VARCHAR2,
O_NAME IN VARCHAR2) AUTHID DEFINER AS
V_SQL VARCHAR2(4000);
BEGIN
IF UPPER(COMMAND) IN ('DROP', 'TRUNCATE') AND
UPPER(O_TYPE) IN ('TABLE', 'INDEX') THEN
V_SQL := COMMAND || ' ' || O_TYPE || ' ' || OWNER || '.' || O_NAME;
EXECUTE IMMEDIATE V_SQL;
END IF;
END PRO_TRUNC_DROP_LHR;
使用示例如下所示:
建立使用者1和使用者2,分別賦予CONNECT和RESOURCE許可權:
SQL> SHOW USER
USER is "SYS"
SQL>
SQL> CREATE USER LHR_U1 IDENTIFIED BY LHR_U1;
User created.
SQL> CREATE USER LHR_U2 IDENTIFIED BY LHR_U2;
User created.
SQL> GRANT CONNECT,RESOURCE TO LHR_U1;
Grant succeeded.
SQL> GRANT CONNECT,RESOURCE TO LHR_U2;
Grant succeeded.
使用者2建立表U2_T_LHR:
SQL> CONN LHR_U2/LHR_U2
Connected.
SQL> CREATE TABLE U2_T_LHR AS SELECT * FROM DUAL;
Table created.
SQL> SELECT * FROM U2_T_LHR;
D
-
X
SQL> CREATE INDEX IDX_U2_T_LHR ON U2_T_LHR(DUMMY);
Index created.
SQL>
SQL> GRANT SELECT,DELETE,UPDATE ON U2_T_LHR TO LHR_U1;
Grant succeeded.
使用者2建立儲存過程並賦予使用者1的執行許可權:
SQL> CREATE OR REPLACE PROCEDURE PRO_TRUNC_DROP_LHR(COMMAND IN VARCHAR2,
2 O_TYPE IN VARCHAR2,
3 OWNER IN VARCHAR2,
4 O_NAME IN VARCHAR2) AUTHID DEFINER AS
5 V_SQL VARCHAR2(4000);
6 BEGIN
7 IF UPPER(COMMAND) IN ('DROP', 'TRUNCATE') AND
8 UPPER(O_TYPE) IN ('TABLE', 'INDEX') THEN
9 V_SQL := COMMAND || ' ' || O_TYPE || ' ' || OWNER || '.' || O_NAME;
10 EXECUTE IMMEDIATE V_SQL;
11 END IF;
12 END PRO_TRUNC_DROP_LHR;
13 /
Procedure created.
SQL> GRANT EXECUTE ON PRO_TRUNC_DROP_LHR TO LHR_U1;
Grant succeeded.
使用者1開始查詢:
SQL> conn LHR_U1/LHR_U1
Connected.
SQL>
SQL> SELECT * FROM LHR_U2.U2_T_LHR;
D
-
X
SQL> TRUNCATE TABLE LHR_U2.U2_T_LHR;
TRUNCATE TABLE LHR_U2.U2_T_LHR
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> DROP INDEX LHR_U2.IDX_U2_T_LHR;
DROP INDEX LHR_U2.IDX_U2_T_LHR
*
ERROR at line 1:
ORA-01418: specified index does not exist
SQL> DROP TABLE LHR_U2.U2_T_LHR;
DROP TABLE LHR_U2.U2_T_LHR
*
ERROR at line 1:
ORA-01031: insufficient privileges
可以看到TRUNCATE、DROP都沒有許可權,下面採用儲存過程刪除:
SQL> EXEC LHR_U2.PRO_TRUNC_DROP_LHR('TRUNCATE','TABLE','LHR_U2','U2_T_LHR');
PL/SQL procedure successfully completed.
SQL> SELECT * FROM LHR_U2.U2_T_LHR;
no rows selected
SQL> EXEC LHR_U2.PRO_TRUNC_DROP_LHR('DROP','INDEX','LHR_U2','IDX_U2_T_LHR');
PL/SQL procedure successfully completed.
SQL> EXEC LHR_U2.PRO_TRUNC_DROP_LHR('DROP','TABLE','LHR_U2','U2_T_LHR');
PL/SQL procedure successfully completed.
SQL> SELECT * FROM LHR_U2.U2_T_LHR;
SELECT * FROM LHR_U2.U2_T_LHR
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> CONN LHR_U2/LHR_U2
Connected.
SQL>
SQL> SELECT * FROM USER_INDEXES;
no rows selected
可以看到已經正常刪除了。
http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w |
About Me
.............................................................................................................................................
● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除
● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● DBA寶典今日頭條號地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826
.............................................................................................................................................
● QQ群號:230161599(滿)、618766405
● 微信群:可加我微信,我拉大家進群,非誠勿擾
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2018-05-01 06:00 ~ 2018-05-31 24:00 在魔都完成
● 最新修改時間:2018-05-01 06:00 ~ 2018-05-31 24:00
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
.............................................................................................................................................
● 小麥苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
● 小麥苗出版的資料庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/
● 小麥苗OCP、OCM、高可用網路班:http://blog.itpub.net/26736162/viewspace-2148098/
.............................................................................................................................................
使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。
小麥苗的微信公眾號 小麥苗的DBA寶典QQ群2 《DBA筆試面試寶典》讀者群 小麥苗的微店
.............................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2155367/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【DB筆試面試164】在Oracle中,如何徹底停止expdp資料泵程式?筆試面試Oracle
- 【DB筆試面試352】在Oracle資料庫中,哪些操作會導致索引失效?--UNUSABLE INDEXES筆試面試Oracle資料庫索引Index
- oracle truncate table recover(oracle 如何拯救誤操作truncate的表)Oracle
- 在Linux中如何登出其他 SSH 使用者Linux
- 如何讓普通使用者獲取root使用者的許可權
- DB 中興通訊面試面試
- 如何讓普通使用者也用上 Laravel-admin 。。Laravel
- 讓使用者幫你做測試(A/B測試)
- Linux中如何禁止普通使用者使用su命令Linux
- DB資料庫面試資料庫面試
- 能select的表,可以exp嗎?有exp_full_database就能exp其他使用者的表嗎?Database
- JAVA面試題 手寫ArrayList的實現,在筆試中過關斬將?Java面試題筆試
- Oracle新建使用者、表空間、表Oracle
- Mysql中的筆試和麵試---20個經典面試題MySql筆試面試題
- 新書出版 |《Oracle程式設計師面試筆試寶典》新書Oracle程式設計師面試筆試
- 效能測試中如何確定併發使用者數
- HTML最新面試題(筆試面試題)HTML面試題筆試
- 如何準備Java的高階技術面試,java基礎面試筆試題Java面試筆試
- JAVA面試輔導(包筆試面試代面)Java面試筆試
- Python 筆試 面試題Python筆試面試題
- Mysql中的筆試和麵試---常見面試題問與答MySql筆試面試題
- Sqlserver 如何truncate linked server的表SQLServer
- 3.1.1 普通使用者和本地使用者
- 【USER】Oracle 一個普通使用者有多少許可權Oracle
- 面試中如何答好:ReentrantLock面試ReentrantLock
- 為何SYSTEM使用者可以將V$SESSION的查詢許可權賦權給其他使用者而SYS使用者卻不可以?Session
- 【面試】社招中級前端筆試面試題總結-答案及擴充前端筆試面試題
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- 社招中級前端筆試面試題總結前端筆試面試題
- Oracle通過scott使用者中的emp練習單表操作Oracle
- 【面試普通人VS高手】Spring 中Bean的作用域有哪些?面試SpringBean
- 效能測試面試題大曝光,讓你如何迅速拿下 offer!面試題
- oracle 建立表空間和使用者Oracle
- Oracle建立表空間和使用者Oracle
- Oracle中新建表空間、使用者Oracle
- 在 javascript 面試中對非同步的理解JavaScript面試非同步
- 儲存過程訪問其他使用者的表的問題儲存過程
- 別再讓你的web頁面在使用者瀏覽器端裸奔Web瀏覽器