Oracle批量賦權(quán)的實(shí)現(xiàn)
Oracle批量賦權(quán)的方法可以實(shí)現(xiàn)一些特定的功能:兩個(gè)用戶,其中一個(gè)用戶A 沒(méi)有數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)通過(guò)用戶A訪問(wèn)用戶B的所有數(shù)據(jù),只有讀取數(shù)據(jù)的權(quán)限,看不到B用戶數(shù)據(jù)結(jié)構(gòu),只能查詢。
一、建立只讀用戶A:
- -- Create the user
- create user A
- identified by ""
- default tablespace LMIS
- temporary tablespace LMIS
- profile DEFAULT;
二、授予A相應(yīng)的權(quán)限(在有DBA權(quán)限用戶B下執(zhí)行)
- grant create session to A;
- grant create synonym to A;
三、以擁有者B身份執(zhí)行下面的語(yǔ)句(commit 窗口)
- set heading OFF;
- set feedback OFF;
- SPOOL c:\temp\A.SQL; --放文件的路徑
- SELECT 'create synonym '||tname||' for B.'||tname||';' FROM TAB;
- SPOOL OFF;
四、轉(zhuǎn)變?yōu)楸毁x權(quán)用戶A的身份,執(zhí)行
- @c:\temp\A.SQL
五、賦予用戶A權(quán)限(在B用戶COMMIT窗口下執(zhí)行)
- set heading OFF;
- set feedback OFF;
- SPOOL c:\grantA.SQL;
- SELECT 'grant select,insert,update,delete,REFERENCES,INDEX on ' ||
- TNAME || ' to A;'
- FROM TAB WHERE TABTYPE <>'VIEW'
- UNION ALL
- SELECT 'grant select,insert,update,deleteon ' || OBJECT_NAME ||
- ' to A;'
- FROM USER_OBJECTS
- WHERE OBJECT_TYPE = 'VIEW'
- UNION ALL
- SELECT 'grant EXECUTEon ' || OBJECT_NAME || ' to A;'
- FROM USER_OBJECTS
- WHERE OBJECT_TYPE = 'PROCEDURE'
- UNION ALL
- SELECT 'grant EXECUTEon ' || OBJECT_NAME || ' to A;'
- FROM USER_OBJECTS
- WHERE OBJECT_TYPE = 'FUNCTION'
- UNION ALL
- SELECT 'grant selecton ' || OBJECT_NAME || ' to A;'
- FROM USER_OBJECTS
- WHERE OBJECT_TYPE = 'SEQUENCE';
- SPOOL OFF;
六、執(zhí)行腳本
- @c:\grantA.SQL;
【編輯推薦】