- Este tópico contém 5 respostas, 5 vozes e foi atualizado pela última vez 13 anos, 8 meses atrás por
Victor Armbrust.
-
AutorPosts
-
15 de junho de 2012 às 12:19 am #103855
mpungan
ParticipanteOlá, 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
15 de junho de 2012 às 12:34 am #103856fsitja
ParticipanteVocê 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.
15 de junho de 2012 às 3:51 pm #103859marlontk
ParticipanteOpa,
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;15 de junho de 2012 às 10:22 pm #103862mpungan
ParticipanteValeu amizade, erra isso que eu estava precisando. Obrigado pela ajuda.
15 de junho de 2012 às 10:29 pm #103863felipeg
ParticipanteComo 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]25 de junho de 2012 às 8:19 am #103936Victor Armbrust
MestrePessoal,
Este que o @felipeg é muito bom.. EXCELENTE! É nessa linha que eu gero o “DDL” desse tipo de grant. RECOMENDO utilizar esse ai…
Abs
Victor -
AutorPosts
- Você deve fazer login para responder a este tópico.