Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: oracle grants/roles v sql server

Re: oracle grants/roles v sql server

From: Jimbo1 <jamestheboarder_at_googlemail.com>
Date: 24 Jul 2006 06:30:37 -0700
Message-ID: <1153747837.565475.313930@h48g2000cwc.googlegroups.com>


archon wrote:
> Hi. I want to grant a user read (select) access to all objects in a schema
> in Oracle. In sql server, I would just give the user a db_datareader role
> for that schema. How is that done in Oracle? I don't want to give access
> on an object-by-object basis one at a time, in case new objects are created
> afterwards.

You could grant the user the SELECT ANY TABLE privilege. That would allow him/her to select from any table in any schema in the database.

This does raise a couple of security issues though; do you want your user to have that much power?

If you just want the user concerned to be able to select from the tables in one particular schema, you'll have to grant him/her the select on each of the tables concerned.

You could write a script to automate this though, and run this script in the schema that owns the tables (THAT IS IMPORTANT!), i.e.

DECLARE
   kc_user_to_receive_privs CONSTANT VARCHAR2(30) := 'usertoreceiveprivs';
BEGIN
   FOR rec IN ( SELECT table_name FROM user_tables )    LOOP
      EXECUTE IMMEDIATE 'GRANT SELECT ON '||rec.table_name||' TO '||kc_user_to_receive_privs;

   END LOOP;
END;
/

I've not tested this script, so there might be some syntax errors in it. It will essentially do what you need it to do though.

Kind Regards.

James Received on Mon Jul 24 2006 - 08:30:37 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US