Pular para o conteúdo
  • Este tópico contém 5 respostas, 5 vozes e foi atualizado pela última vez 13 anos, 8 meses atrás por Victor Armbrust.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #103855
    mpungan
    Participante

      Olá, gostaria de uma ajuda. Como eu monto um script para pegar todos os grants que um determinado usuário esta recebendo de outros. Por exemplo, preciso saber quais são os grants que o usuário Contador1 esta recebendo de outros schemas do banco, alguém tem um exemplo ou pode fornecer esse script.

      Desde já agradeço.

      Mpungan

      #103856
      fsitja
      Participante

        Você pode dar uma espiada nas views ALL_TAB_PRIVS_RECD e ALL_TAB_PRIVS.

        (ou variações USER_TAB_PRIVS, DBA_TAB_PRIVS dependendo do que você quer e de qual usuário você estará usando nessa pesquisa)

        Elas contém essas informações todas que você procura.

        http://docs.oracle.com/cd/E11882_01/ser … s_2110.htm

        USER_ROLE_PRIVS também contém informações de roles, mas sem detalhar por objeto.

        Edit:

        privilégios de sistema, diferentemente de privilégios sobre objetos, são vistos por ROLE_SYS_PRIVS e USER_SYS_PRIVS, por exemplo.

        #103859
        marlontk
        Participante

          Opa,
          segue os sqls que tenho para este tipo de coisa, acho que é o que você procura.

          — ATRIBUIÇÃO DAS ROLES AOS USUARIOS
          SELECT ‘GRANT ‘ ||A.GRANTED_ROLE||’ TO ‘||A.GRANTEE||’;’ FROM DBA_ROLE_PRIVS A
          WHERE GRANTEE IN (‘CONTADOR1’)

          — TODOS OS GRANTS DAS ROLES DO USUARIO CONTADOR1
          SELECT ‘GRANT ‘||P.privilege || ‘ TO ‘|| GRANTEE|| ‘ ON ‘ ||OWNER||’.’||TABLE_NAME||’;’
          FROM DBA_TAB_PRIVS P
          WHERE OWNER=’CONTADOR1′;

          –GRANTS DE OBJETOS DE OUTROS USUARIOS PAR AO USUÁRIO
          SELECT ‘GRANT ‘||P.privilege || ‘ TO ‘|| GRANTEE|| ‘ ON ‘ ||OWNER||’.’||TABLE_NAME||’;’
          FROM DBA_TAB_PRIVS P
          WHERE P.GRANTEE IN (‘CONTADOR1’)
          ORDER BY GRANTEE;

          — SYS PRIVILEGES DO USUARIO
          SELECT ‘GRANT ‘|| Y.privilege || ‘ TO ‘ ||GRANTEE
          || CASE WHEN ADMIN_OPTION = ‘YES’ THEN ‘ WITH ADMIN OPTION’
          ELSE ‘ ‘
          END
          ||’;’
          FROM DBA_SYS_PRIVS Y
          WHERE GRANTEE IN (‘CONTADOR1’);

          –GRANT DOS OBJETOS DO USUARIO CONCEDIDO A OUTROS USUARIOS
          SELECT ‘GRANT ‘||P.privilege || ‘ TO ‘|| GRANTEE|| ‘ ON ‘ ||OWNER||’.’||TABLE_NAME||’;’
          FROM DBA_TAB_PRIVS P
          WHERE OWNER=’CONTADOR1′
          ORDER BY GRANTEE;

          #103862
          mpungan
          Participante

            Valeu amizade, erra isso que eu estava precisando. Obrigado pela ajuda.

            #103863
            felipeg
            Participante

              Como o objetivo é compartilhar conhecimento vou dar a minha sugestão:


              SYS@orcl > SELECT dbms_metadata.get_ddl('USER','SCOTT') FROM dual;

              DBMS_METADATA.GET_DDL('USER','SCOTT')

              CREATE USER "SCOTT" IDENTIFIED BY VALUES 'F894844C34402B67'
              DEFAULT TABLESPACE "USERS"
              TEMPORARY TABLESPACE "TEMP"

              SYS@orcl > SELECT DBMS_METADATA.GET_GRANTED_DDL(
              2 'ROLE_GRANT','SCOTT') from dual;

              DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','SCOTT')

              GRANT "CONNECT" TO "SCOTT"
              GRANT "RESOURCE" TO "SCOTT"

              SYS@orcl > SELECT DBMS_METADATA.GET_GRANTED_DDL(
              2 'OBJECT_GRANT','SCOTT') from dual;

              DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT','SCOTT')

              GRANT SELECT ON "HR"."EMPLOYEES" TO "SCOTT"

              SYS@orcl > SELECT DBMS_METADATA.GET_GRANTED_DDL(
              2 'SYSTEM_GRANT','SCOTT') from dual;

              DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','SCOTT')

              GRANT UNLIMITED TABLESPACE TO "SCOTT"

              Eu sempre usei esses.
              Atenciosamente,
              Felipe.[/code]

              #103936
              Victor Armbrust
              Mestre

                Pessoal,

                Este que o @felipeg é muito bom.. EXCELENTE! É nessa linha que eu gero o “DDL” desse tipo de grant. RECOMENDO utilizar esse ai…

                Abs
                Victor

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