Puede alguien aconsejarme sobre cómo crear un usuario en Oracle 11g y concederle sólo la capacidad de ejecutar un procedimiento almacenado concreto y las tablas de ese procedimiento.
No estoy muy seguro de cómo hacerlo.
Conectar como SISTEMA.
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
También puede ser necesario:
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
a las tablas que utiliza el procedimiento.
La documentación de Oracle es completa, está en línea y es gratuita. Deberías aprender a usarla. Puedes encontrar la sintaxis para CREATE USER aquí y para GRANT aquí,
Para conectarnos a la base de datos necesitamos conceder a un usuario el privilegio CREATE SESSION.
Para permitir al nuevo usuario derechos sobre un procedimiento almacenado necesitamos conceder el privilegio EXECUTE. El otorgante debe ser uno de estos:
Ten en cuenta que normalmente no necesitaremos conceder derechos sobre los objetos utilizados por un procedimiento almacenado para poder utilizar el procedimiento. El permiso por defecto es que ejecutamos el procedimiento con los mismos derechos que el propietario del procedimiento y, por así decirlo, heredamos sus derechos al ejecutar el procedimiento. Esto está cubierto por la cláusula AUTHID. El valor por defecto es definidor (es decir, propietario del procedimiento). Sólo si el AUTHID se establece como CURRENT_USER (el invocador, es decir, nuestro nuevo usuario) necesitamos conceder derechos sobre los objetos utilizados por el procedimiento. Más información.