Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 7 anos, 9 meses atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #108552
    Avatar de RayolRayol
    Participante

      Boa tarde!

      Amigos, me deparei com uma situação onde não consegue identificar o problema, tenho o seguinte cenário: Tenho um schema “A”, onde o mesmo possui uma view ‘teste_v’, que me traz as informações certinhas, precisei criar um user “B” e o mesmo precisava de grant de select na view do schema “A”, então, realizei o procedimento de permissão “GRANT SELECT ON TESTE_V TO B”, a permissão foi concedida normal, mas na hora que rodo o select “SELECT * FROM A.TESTE_V” não apresentada nenhuma linha quando conectado com user ‘B’, no user ‘A’ traz todas as informações, não apresenta mensagem de erro nem nada, alguém poderia dar uma luz?

      Grato,
      Rayol

      #108553
      Avatar photoJosé Laurindo Chiappa
      Moderador

        Opa : bom, só pra variar vc NÂO NOS DIZ nem versão nem Edição desse RDBMS Oracle que vc tá usando, mas se for algo recente E se realmente *** TODAS *** as tabelas referenciadas no texto da query usada pra criar a view pertencem ao schema/usuário que cria a view, e vc está referenciando corretamente, isso deveria funcionar de boa – automagicamente o GRANT de SELECT na view criada pelo dono das tabelas permite a consulta pela view…

        Exemplo, usando um RDBMS Oracle Express Edition 11gR2 :

        => confirmando que o usuário HR que vai receber o priv de SELECT na view não tem priv de consulta na(s) tabela(s) do SCOTT, que vai criar a view :

        HR@XE:SQL>select * from scott.emp;
        select * from scott.emp
        *
        ERRO na linha 1:
        ORA-00942: a tabela ou view nÒo existe

        HR@XE:SQL>

        ==> o usuário SCOTT, abaixo, cria um view e dá permissão de SELECT nessa view pro usuário HR, sendo que HR *** não tem permissão NENHUMA em NENHUMA das tabelas do SCOTT :

        SCOTT@XE:SQL>create view V_EMP_MENOS_MIL as select empno, ename, sal from emp where sal só pra mostrar que a consulta da view Retorna dados :

        SCOTT@XE:SQL>select * from v_emp_menos_mil;

         EMPNO ENAME             SAL
        

          7369 SMITH             800
          7900 JAMES             950
        

        => o dono da view e das tabelas dá o GRANT de SELECT :

        SCOTT@XE:SQL>grant select on v_emp_menos_mil to HR;

        ConcessÒo bem-sucedida.

        SCOTT@XE:SQL>

        ==> veja o que acontece quando o HR tenta consultar a view :

        HR@XE:SQL>select * from scott.v_emp_menos_mil;

         EMPNO ENAME             SAL
        

          7369 SMITH             800
          7900 JAMES             950
        

        ==> IMPORTANTE : veja que o HR (o receptor) CONTINUA NÃO TENDO ACESSO direto às tabelas :

        HR@XE:SQL>select * from scott.emp;
        select * from scott.emp
        *
        ERRO na linha 1:
        ORA-00942: a tabela ou view nÒo existe

        HR@XE:SQL>

        OK ? Demonstrado ?? Tente repetir esse meu exemplo (especialmente testando com uma view SIMPLES, sem usar NENHUMA função extra, criando-a no mesmo schema ** DONO ** das tabelas, e referenciando o dono ao acessar a view no recpeto, que nem eu fiz – se não funcionar, vc vai ter que acionar teu DBA e confirmar versão/edição desse RDBMS e ver se há algum setting especial nesse banco (talvez PROFILEs de usuários, talvez ROW LEVEL SECURITY) que esteja bloqueando um usuário de acessar objs de outro…

        []s

        Chiappa

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.
      plugins premium WordPress