2013-03-16 75 views
8

我有3和表表1,表2,表3。 我想授予(例如選擇)這些表給用戶user1。授予SELECT多個表上的Oracle

我知道,我可以授予:

grant select on table1 to user1; 
grant select on table2 to user1; 
grant select on table3 to user1; 

我可以給予3分表只使用1查詢爲user1?

感謝

+0

[Oracle SQL privelege授權在多個屬性和一個語句表上的可能重複](http://stackoverflow.com/questions/13106087/oracle-sql-privelege-authorization-on-multiple-attributes-and-tables -with-one-st) – 2013-03-16 18:57:44

回答

5

我的建議是......通過使用該角色的任何用戶創建使用

create role <role_name>; 

然後將權限分配給該角色使用

grant select on <table_name> to <role_name>; 

然後分配給該組的權限在Oracle中的作用

grant <role_name> to <user_name>...; 
6

您可以使用動態查詢來執行此操作,只需在pl-sql或sqlpl中運行以下腳本我們:

select 'grant select on user_name_owner.'||table_name|| 'to user_name1 ;' from dba_tables t where t.owner='user_name_owner' 

然後執行結果。

+0

你應該複製/粘貼結果來執行它嗎? – 2015-01-20 14:59:14

0

這爲我工作我在Oracle數據庫上:

SELECT 'GRANT SELECT, insert, update, delete ON mySchema.' || TABLE_NAME || ' to myUser;' 
FROM  user_tables 
where table_name like 'myTblPrefix%' 

然後,複製結果,並將其粘貼到編輯器,然後像一個腳本來運行它們。

你也可以寫一個腳本,並使用「立即執行」運行生成的SQL如果你不想額外的複製/粘貼步驟。