Pode consultar na Documentação Oracle, que ** ABSOLUTAMENTE NÂO EXISTE isso ** no RDBMS Oracle não : ou vc dá GRANT um UMA tabela de UM owner ou dá GRANT de SELECT ANY TABLE, não há outra opção… A segunda alternativa é a PIOR,pois cfrme documentado ANY significar QUALQUER (tabela, no caso) de QUALQUER usuário, horroroso para a segurança….
Então se vc quer dar GRANT de SELECT nas tabelas A,B,C,D,E do usuário X para o usuário Y, vc TERIA SIM que executar os comandos :
GRANT SELECT ON X.A TO Y;
GRANT SELECT ON X.B TO Y;
GRANT SELECT ON X.C TO Y;
GRANT SELECT ON X.D TO Y;
GRANT SELECT ON X.E TO Y;
Sim ?? O que vc ** PODE ** fazer seria SIM criar um script que te gere os GRANTs todos pra vc não os ter que escrever na mão, OU então (numa variação da técnica) escrever um programinha PL/SQL que gere os GRANTs necessários num cursor e execute cada um deles via EXECUTE IMMEDIATE ou DBMS_SQL…. SEM ESCAPATÓRIA AQUI….
[]s
Chiappa
OBS :
a. lembrando, o GRANT pode ser para um USUÀRIO ou para uma ROLE : normalmente vc tem MUITOS usuários que precisam receber privilégios, então via de regra vc faz os GRANTs para uma ROLE e depois só precisa executar um único comando de GRANT ROLE pra cada usuário
b. há ** OUTROS ** quebra-galhos e gambiarras que podem ser aplicados (tais como setar a ROLE que recebeu as perms com SET ROLE, ou criar triggers de DDL em comandos CREATE TABLE no database que já faria os GRANTs necessários, ou dar o privilégio para os usuários de se conectar via PROXY, herdando as mesmas permissões do usuário owner OU de um usuário que tem o SELECT nas tabelas em questão, mas tudo isso imho é GAMBI, e gambi COMPLEXA de fazer : o que RECOMENDO que vc faça é mesmo aplicar os GRANTs necessários