程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle批量賦權的實現

Oracle批量賦權的實現

編輯:Oracle數據庫基礎

Oracle批量賦權的方法可以實現一些特定的功能:兩個用戶,其中一個用戶A 沒有數據結構,實現通過用戶A訪問用戶B的所有數據,只有讀取數據的權限,看不到B用戶數據結構,只能查詢。

一、建立只讀用戶A:

  1. -- Create the user  
  2. create user A  
  3. identifIEd by ""  
  4. default tablespace LMIS  
  5. temporary tablespace LMIS  
  6. profile DEFAULT;  
  7.  

二、授予A相應的權限(在有DBA權限用戶B下執行)

  1. grant create session to A;  
  2. grant create synonym to A; 

三、以擁有者B身份執行下面的語句(commit 窗口)

  1. set heading OFF;  
  2. set feedback OFF;  
  3. SPOOL c:\temp\A.SQL; --放文件的路徑  
  4. SELECT 'create synonym '||tname||' for B.'||tname||';' FROM TAB;  
  5. SPOOL OFF; 

四、轉變為被賦權用戶A的身份,執行

  1. @c:\temp\A.SQL 

五、賦予用戶A權限(在B用戶COMMIT窗口下執行)

  1. set heading OFF;  
  2. set feedback OFF;  
  3. SPOOL c:\grantA.SQL;  
  4. SELECT 'grant select,insert,update,delete,REFERENCES,INDEX on ' ||  
  5.  TNAME || ' to A;'  
  6. FROM TAB WHERE TABTYPE <>'VIEW'  
  7. UNION ALL  
  8. SELECT 'grant select,insert,update,deleteon ' || OBJECT_NAME ||  
  9.  ' to A;'  
  10. FROM USER_OBJECTS  
  11.  WHERE OBJECT_TYPE = 'VIEW' 
  12. UNION ALL  
  13. SELECT 'grant EXECUTEon ' || OBJECT_NAME || ' to A;'  
  14. FROM USER_OBJECTS  
  15.  WHERE OBJECT_TYPE = 'PROCEDURE' 
  16. UNION ALL  
  17. SELECT 'grant EXECUTEon ' || OBJECT_NAME || ' to A;'  
  18. FROM USER_OBJECTS  
  19.  WHERE OBJECT_TYPE = 'FUNCTION' 
  20. UNION ALL  
  21. SELECT 'grant selecton ' || OBJECT_NAME || ' to A;'  
  22. FROM USER_OBJECTS  
  23.  WHERE OBJECT_TYPE = 'SEQUENCE';  
  24.  
  25.  SPOOL OFF;  

六、執行腳本

  1. @c:\grantA.SQL; 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved