と指摘されている点については覚えておいたほうがよい。(抜粋ですから、これを鵜呑みにしないで下さい)
これはロールがセッションにおいて SET ROLE 文でダイナミックに変更できる点などの理由から
ロール経由で付与された権限が PL/SQL の実行時の権限から除外されていることへの注意であると思われる。
これを知らないと個々のステートメントはコマンドベースでは動作するのにプログラムにすると実行できない…という現象に戸惑うことになる。
CREATE ROLE role_name;
-- オブジェクト権限GRANTSELECT,INSERT,UPDATE,DELETE ON table_name TO role_name WITH GRANT OPTION ;
-- ロールGRANT EXP_FULL_DATABASE TO role_name;
-- システム権限GRANTCREATE TABLE TO role_name;
-- ユーザーへの付与と削除GRANT role_name to user_name;
REVOKE role_name from user_name;