Dynamic script for grants on a table

--  grants scripts

SPOOL DYNGRANT.OUT
SET HEAD OFF
SET VERIFY OFF
DEFINE TBL='&TABLE_ROLE';
SELECT 'GRANT '
        ||PRIVILEGE||
      ' ON '||
        TABLE_NAME||
      ' TO '||
        GRANTEE||
       ';'
FROM DBA_TAB_PRIVS
WHERE(TABLE_NAME='&&TBL' OR GRANTEE='&&TBL')
ORDER BY TABLE_NAME,GRANTEE
/
SPOOL OFF
SET HEAD ON
SET VERIFY ON
UNDEFINE OWNER
UNDEFINE TABLE
UNDEFINE TBL



-- Revoke script


SPOOL DYNREVOK.OUT
SET HEAD OFF
SET VERIFY OFF
DEFINE TBL='&TABLE_ROLE';
SELECT 'REVOKE '
        ||PRIVILEGE||
      ' ON '||
    OWNER||'.'||
        TABLE_NAME||
      ' FROM '||
        GRANTEE||
       ';'
FROM DBA_TAB_PRIVS
WHERE(TABLE_NAME='&&TBL' OR GRANTEE='&&TBL')
ORDER BY TABLE_NAME,GRANTEE
/
SPOOL OFF
SET HEAD ON
SET VERIFY ON
UNDEFINE OWNER
UNDEFINE TABLE
UNDEFINE TBL

Post a Comment

And that's all there is to it!

If anyone has any other questions or requests for future How To posts, you can either ask them in the comments or email me. Please don't feel shy at all!

I'm certainly not an expert, but I'll try my hardest to explain what I do know and research what I don't know.

Previous Post Next Post