2013-03-16 15 views
8

Ho 3 tabelle table1, table2, table3. Voglio concedere (selezionare ad esempio) queste tabelle a un utente, utente1.Concedi SELECT su più tabelle oracle

So che posso concedere con:

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

Posso concedere i 3 tavoli all'Utente1 utilizzando solo 1 domanda?

Grazie

+0

possibile duplicato di [autorizzazione di Oracle Privelege SQL su più attributi e tabelle con una dichiarazione] (http://stackoverflow.com/questions/13106087/oracle-sql-priveleg-authorization-on-multiple-attributes-and-tables -with-one-st) –

risposta

13

No. Come il documentation shows, è possibile concedere l'accesso solo a un oggetto alla volta.

5

il mio suggerimento è ... creare ruolo in Oracle utilizzando

create role <role_name>; 

quindi assegnare i privilegi a tale ruolo utilizzando

grant select on <table_name> to <role_name>; 

quindi assegnare quel gruppo di privilegi tramite quel ruolo a qualsiasi utente tramite

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

è possibile farlo con query dinamica, basta eseguire il seguente script in PL-SQL o sqlpl us:

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

e quindi eseguire il risultato.

+0

dovresti copiare/incollare il risultato per eseguirlo? –

0

questo ha lavorato per me per il mio database Oracle:

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

Poi, copiare i risultati, li incollare nel vostro editor, per poi correre come uno script.

È anche possibile scrivere uno script e utilizzare "Esegui immediato" per eseguire l'SQL generato se non si desidera eseguire i passaggi copia/incolla aggiuntivi.