Question:
I need to grant SELECT, UPDATE privilege on all tables owned by schema XXVMX to users MSUBBU, SMARTIN. Is there a command in Oracle to grant a privilege on all objects in schema to user?
Answer:
No such privilege in Oracle. You will have to write a script to grant the privilege on individual objects to the users.
If you have to repeat the same to more users, it may be better to create a role and grant the privileges to the role. Then assign the role to the users that need the privilege. Thus when new tables are created under XXVMX, the privilege need to be added to the role once only, do not have to do grant to all the individual users.
Create Role:
CREATE ROLE XXVMX_UPDATE;
Grant Role to Users:
GRANT XXVMX_UPDATE to MSUBBU, SMARTIN;
SQL Script:
set pages 0
set lines 300 trims on feedback on echo off
spool grants.sql
SELECT ‘grant select, update on ‘ || owner ||’.’||table_name|| ‘ to XXVMX_UPDATE;’
FROM dba_tables
WHERE owner = ‘XXVMX’;
spool off
set pages 99 lines 80
set feedback on echo on
Execute the script file created to grant the privileges.
@grants.sql
You may replace the “dba_tables” in the query with “dba_objects” and change the WHERE clause appropriately to filter different sets of objects…