Priviégios de objetos dados por roles não vão funcionar nos casos em que estiverem envolvidos códigos PL/SQL ou views…
Pra isso devem ser dados privilégios diretos mesmo!
Leia o segundo item:
To create a view, you must meet the following requirements:
* To create a view in your schema, you must have the CREATE VIEW privilege. To create a view in another user's schema, you must have the CREATE ANY VIEW system privilege. You can acquire these privileges explicitly or through a role.
* The owner of the view (whether it is you or another user) must have been explicitly granted privileges to access all objects referenced in the view definition. The owner cannot have obtained these privileges through roles. Also, the functionality of the view is dependent on the privileges of the view's owner. For example, if the owner of the view has only the INSERT privilege for Scott's emp table, the view can only be used to insert new rows into the emp table, not to SELECT, UPDATE, or DELETE rows.
* If the owner of the view intends to grant access to the view to other users, the owner must have received the object privileges to the base objects with the GRANT OPTION or the system privileges with the ADMIN OPTION.</code>
Fonte: http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/views.htm#303