Scripts Grant – Oracle

Neste artigo irei mostrar 5 scripts para dar os grants de SELECT, UPDATE, INSERT, DELETE e EXECUTE para qualquer usuário no Oracle respectivamente.

O script cria um arquivo.sql através do comando spool, e neste script é realizado um SELECT para listar os objetos. Estes objetos retornados no SELECT é são concatenados com o comando GRANT. Logo após, o script irá rodar o arquivo.sql criado com os comandos para dar os GRANTS.

Grant para DELETE:

SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF

Spool Temp_Delete.sql

SELECT 'GRANT DELETE ON "' || U.Table_Name || '" TO nome_do_usuario;'
FROM   User_Tables U
WHERE  Not Exists (SELECT '1'
                   FROM   All_Tab_Privs A
                   WHERE  A.Grantee    = UPPER('&1')
                   AND    A.Privilege  = 'DELETE'
                   AND    A.Table_Name = U.Table_Name);

Spool Off

-- Linha comentada para evitar de executar imediatamente
@Temp_Delete.sql

SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON

Grant para SELECT:

SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF

Spool Temp_Select.sql

SELECT 'GRANT SELECT ON "' || u.object_name || '" TO nome_do_usuario;'
FROM   User_Objects U
WHERE  U.Object_Type In ('TABLE','VIEW','SEQUENCE')
AND    Not Exists (SELECT '1'
                   FROM   All_Tab_Privs A
                   WHERE  A.Grantee    = UPPER('&1')
                   AND    A.Privilege  = 'SELECT'
                   AND    A.Table_Name = U.Object_Name);

Spool Off

-- Linha comentada para evitar de executar imediatamente
@Temp_Select.sql

SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON

Grant para EXECUTE:

SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF

Spool Temp_Execute.sql

SELECT 'GRANT EXECUTE ON "' || U.Object_Name || '" TO nome_do_usuario;'
FROM   USer_Objects U
WHERE  U.Object_Type In ('PACKAGE','PROCEDURE','FUNCTION')
AND    Not Exists (SELECT '1'
                   FROM   All_Tab_Privs A
                   WHERE  A.Grantee    = UPPER('&1')
                   AND    A.Privilege  = 'EXECUTE'
                   AND    A.Table_Name = U.Object_Name);

Spool Off

-- Linha comentada para evitar de executar imediatamente
@Temp_Execute.sql

SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON

Grant para UPDATE:

SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF

Spool Temp_Update.sql

SELECT 'GRANT UPDATE ON "' || U.Table_Name || '" TO nome_do_usario;'
FROM   User_Tables U
WHERE  NOT EXISTS (SELECT '1'
                   FROM   All_Tab_Privs A
                   WHERE  A.Grantee    = UPPER('&1')
                   AND    A.Privilege  = 'UPDATE'
                   AND    A.Table_Name = U.Table_Name);

Spool Off

-- Linha comentada para evitar de executar imediatamente
@Temp_Update.sql

SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON

Grant para INSERT:

SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF

Spool Temp_Insert.sql

SELECT 'GRANT INSERT ON "' || u.table_name || '" TO nome_do_usuario;'
FROM   User_Tables U
WHERE  NOT EXISTS (SELECT '1'
                   FROM   All_Tab_Privs A
                   WHERE  A.Grantee    = UPPER('&1')
                   AND    A.Privilege  = 'INSERT'
                   AND    A.Table_Name = U.Table_Name);

Spool Off

-- Linha comentada para evitar de executar imediatamente
@Temp_Insert.sql

SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s