Oracle: otorgar permisos a un usuario sobre un schema específico

Recientemente me he encontrado con la necesidad de tener que acceder a un schema “ajeno” desde un usuario en Oracle. El problema es que no me pasaron los scripts que otorgaban los privilegios apropiados para ello… Como se trataba de un trabajo de desarrollo y prueba en local, decidí “saltarme” las normas y entrar a lo duro en el schema ajeno.

Os explico cómo, no es demasiado difícil, y no es necesario ser sysdba para conseguirlo: el usuario propietario del schema al que se desea acceder otorga los privilegios deseados al otro usuario, símplemente. La única necesidad, y esa si es importante, es que el usuario del schema que se va a compartir, debe tener suficientes privilegios para otorgarlos.

Veamos el código (debe ejecutarlo el usuario propietario del schema que se desea compartir):

BEGIN
    FOR t IN (SELECT * FROM user_tables) 
    LOOP   
        EXECUTE IMMEDIATE 'GRANT SELECT ON ' || t.table_name || ' TO DEST_USER';    
    END LOOP;
END;

Rápidamente, lo que este código hace es, mediante un bucle, recorre todas las tablas del usuario que comparte el schema y otorga los privilegios seleccionados (en este caso solo SELECT) a cada tabla para el usuario DEST_USER (sustituir por el nombre del usuario al que deseamos otorgar los permisos).

Y esto es todo.

Espero haberos sido de ayuda.

Jordi

Share Button

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.