Pulse para guardar enlace y compartir esta web. Ayuda para Oracle en Twitter Pulse para guardar enlace y compartir esta web. Ayuda para Oracle en Facebook Pulse para guardar enlace y compartir esta web. Búscanos en Google+ Pulse para guardar enlace y compartir esta web Pulse para generar codigo QR del enlace y compartir esta web

Grant (dar permisos)

Esta sentencia sirve para dar permisos (o privilegios) a un usuario o a un rol.

Un permiso, en oracle, es un derecho a ejecutar un sentencia (system privileges) o a acceder a un objeto de otro usuario (object privileges).

El conjunto de permisos es fijo, esto quiere decir que no se pueden crear nuevos tipos de permisos.

Si un permiso se asigna a rol especial PUBLIC significa que puede ser ejecutado por todos los usuarios.

Permisos para acceder a la base de datos (permiso de sistema):

GRANT CREATE SESSION TO miusuario;
Permisos para usuario de modificación de datos (permiso sobre objeto):

GRANT SELECT, INSERT, UPDATE, DELETE ON T_PEDIDOS TO miusuario;
Permisos de solo lectura para todos:

GRANT SELECT ON T_PEDIDOS TO PUBLIC;

Permisos de sistema (system privileges)

Los permisos de sistema mas importantes son CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE USER, ...

Sintaxis:

   GRANT system_priv(s) TO {user, | role, |PUBLIC} 
                  [IDENTIFIED BY password] [WITH ADMIN OPTION]

   GRANT role TO {user, | role, |PUBLIC} 
                  [IDENTIFIED BY password] [WITH ADMIN OPTION]

   GRANT ALL PRIVILEGES TO {user, | role, |PUBLIC} 
                  [IDENTIFIED BY password] [WITH ADMIN OPTION]
Podemos obtener la lista de permisos del sistema asi:

select * from system_privilege_map;

Los permisos de sistema son auditables.


GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE PROCEDURE,CREATE SYNONYM,
      ALTER TABLE, ALTER VIEW, ALTER PROCEDURE,ALTER SYNONYM,
      DROP TABLE, DROP VIEW, DROP PROCEDURE,DROP SYNONYM TO programador;

Permisos sobre objetos (object privileges)

Los permisos sobre objetos mas importantes son: SELECT, UPDATE, INSERT, DELETE, ALTER, DEBUG, EXECUTE, INDEX, REFERENCES


   GRANT object_priv [(column, column,...)]
      ON [schema.]object
         TO {user, | role, |PUBLIC} [WITH GRANT OPTION] [WITH HIERARCHY OPTION]

   GRANT ALL PRIVILEGES [(column, column,...)]
      ON [schema.]object
         TO {user, | role, |PUBLIC} [WITH GRANT OPTION] [WITH HIERARCHY OPTION]

   GRANT object_priv [(column, column,...)]
      ON DIRECTORY directory_name
         TO {user, | role, |PUBLIC} [WITH GRANT OPTION] [WITH HIERARCHY OPTION]

   GRANT object_priv [(column, column,...)]
      ON JAVA [RE]SOURCE [schema.]object
         TO {user, | role, |PUBLIC} [WITH GRANT OPTION] [WITH HIERARCHY OPTION]

Con la opcion WITH HIERARCHY OPTION damos permisos sobre todos los subojetos, incluso sobre los que se creen despues de ejecutar el GRANT.

Con la opción WITH GRANT OPTION damos permiso para que el que los recibe los pueda a su vez asignar a otros usuarios y roles.

La opción "GRANT ALL PRIVILEGES..." se puede escribir tambien como "GRANT ALL..."

Podemos obtener la lista de permisos de las tablas asi:

select * from all_tab_privs_made;

Notas

Los permisos del sistema pueden ser:

   CREATE SESSION - Permite conectar a la base de datos
   UNLIMITED TABLESPACE  - Uso de espacio ilimitado del tablespace.
   SELECT ANY TABLE - Consultas en tables, views, or mviews en cualquier esquema
   UPDATE ANY TABLE - Actualizar filas en tables and views en cualquier esquema
   INSERT ANY TABLE - Insertar filas en tables and views en cualquier esquema

   Permisos de administrador para CREATE, ALTER o DROP:
     cluster, context, database, link, dimension, directory, index,
     materialized view, operator, outline, procedure, profile, role,
     rollback segment, sequence, session, synonym, table, tablespace,
     trigger, type, user, view. 
Los roles predefindos son:

   SYSDBA, SYSOPER, OSDBA, OSOPER, EXP_FULL_DATABASE, IMP_FULL_DATABASE
   SELECT_CATALOG_ROLE,  EXECUTE_CATALOG_ROLE, DELETE_CATALOG_ROLE
   AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE - manejo de la cola
   SNMPAGENT - Agente inteligente.
   RECOVERY_CATALOG_OWNER - rman
   HS_ADMIN_ROLE - servicios heterogeneos

mas cualquier rol de usuario que halla disponible Los roles CONNECT, RESOURCE y DBA ya no deben usarse (aunque estan soportados).

Es posible asignar varios Object_Privs en un solo comando GRANT.

GRANT SELECT (empno), UPDATE (sal) ON pepe.tabla TO miusuario
Permisos del rol SYSDBA:

    CREATE DATABASE
    CREATE SPFILE
    STARTUP and SHUTDOWN
    ALTER DATABASE: open, mount, back up, or change character set
    ARCHIVELOG and RECOVERY
    Includes the RESTRICTED SESSION privilege
Permisos del rol SYSOPER:

    CREATE SPFILE
    STARTUP and SHUTDOWN
    ALTER DATABASE: open, mount, back up
    ARCHIVELOG and RECOVERY
    Includes the RESTRICTED SESSION privilege

Cada tipo de objeto tiene su propio conjunto de permisos:

Tables: select, insert, update, delete, alter, debug, flashback, on commit refresh, query rewrite, references, all

Views: select, insert, update, delete, under, references, flashback, debug

Sequence: alter, select

Packeges, Procedures, Functions (Java classes, sources...): execute, debug

Materialized Views: delete, flashback, insert, select, update

Directories: read, write

Libraries:execute

User defined types: execute, debug, under

Operators: execute

Indextypes: execute