web-dev-qa-db-fra.com

Accorder SELECT sur plusieurs tables Oracle

J'ai 3 tables table1, table2, table3 ..__ Je veux accorder (sélectionner par exemple) ces tables à un utilisateur, utilisateur1.

Je sais que je peux accorder avec: 

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

Puis-je accorder les 3 tables à user1 en utilisant une seule requête?

Merci

11
Sergio Martinez

Comme le montre la documentation , vous ne pouvez accorder l'accès qu'à un seul objet à la fois.

15
Chris Saxon

Vous pouvez le faire avec une requête dynamique, il suffit d’exécuter le script suivant dans pl-sql ou sqlplus:

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

puis exécutez result.

8
m_abr

ma suggestion est ... créer un rôle dans Oracle en utilisant 

create role <role_name>;

puis attribuer des privilèges à ce rôle en utilisant 

grant select on <table_name> to <role_name>;

puis attribuez ce groupe de privilèges via ce rôle à n’importe quel utilisateur en utilisant 

grant  <role_name> to <user_name>...;
5
Thiyagu ATR

Si vous souhaitez accorder aux deux tables et vues, essayez:

SELECT DISTINCT
    || OWNER
    || '.'
    || TABLE_NAME
    || ' to db_user;'
FROM
    ALL_TAB_COLS 
WHERE
    TABLE_NAME LIKE 'TABLE_NAME_%';

Pour seulement des vues, essayez:

SELECT
    'grant select on '
    || OWNER
    || '.'
    || VIEW_NAME
    || ' to REPORT_DW;'
FROM
    ALL_VIEWS
WHERE
    VIEW_NAME LIKE 'VIEW_NAME_%';

Copier les résultats et les exécuter. 

0
Aba

Cela a fonctionné pour moi sur ma base de données Oracle:

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

Copiez ensuite les résultats, collez-les dans votre éditeur, puis exécutez-les comme un script.

Vous pouvez également écrire un script et utiliser "Exécuter immédiatement" pour exécuter le code SQL généré si vous ne souhaitez pas utiliser les étapes supplémentaires copier/coller.

0
mang