ここで簡単に推測させてください。問題は、オブジェクト名で大文字と小文字が区別されることです。簡単な修正は、このようにオブジェクト名を二重引用符で囲むことです。
GRANT EXECUTE ON SYS."/1005bd30_LnkdConstant" TO mynewpublicrole;
ロールに「[EXECUTEON]SYS./1005bd30_LnkdConstantを付与できなかった」ことを示します。
これは、GRANTステートメントを実行したときに、Oracleが例外を発生させたことを意味します。
ORA-00903: invalid table name
オブジェクト名を二重引用符で囲むと(例に示すように)、その問題が解決するはずです。
新しい役割にこれらのオブジェクトに対するEXECUTE特権が必要かどうかという質問に答えることはできません。まあ、役割は必ずしもそれらを必要としません。問題は、ユーザーがそれらを必要としているかどうか(直接付与されているか、ロールを介して間接的に付与されているか)です。これは、徹底的なテストによって判断できます。
他のいくつかのコメント。
新しい役割を作成し、その役割をすべてのユーザーに付与することを意図している場合、セキュリティが変更または改善されているとは思いません。ですから、そうではないと思います。
「最小特権」の原則を適用しようとしているように見えます。その努力に拍手を送ります。
アプリケーション開発者が従う最も一般的なパターンの1つは、スキーマオブジェクトの所有者としてアプリケーションをデータベースに接続させることです。つまり、アプリケーションには、DROP TABLE、ALTER PROCEDUREなど、おそらく必要のないあらゆる種類の特権があります。
使用するパターンは、スキーマオブジェクトを所有する「OWNER」ユーザーと、「OWNER」オブジェクトに対して必要な特定の権限を持つ別の「APP」ユーザー、および「OWNER」オブジェクトの同義語を使用することです。(同義語を使用すると、OWNER.objectをOWNERで修飾せずに参照できます。)言うまでもなく、PUBLICには特権を付与せず、必要に応じてロールに付与します。
これは、「最小特権」の原則を実装するために使用するパターンであるためです。
その他のセキュリティ上の懸念については、「Oracleセキュリティチェックリスト」ホワイトペーパーを確認することをお勧めします。
http://www.oracle.com/technology/deploy/security/database-security/pdf/twp_security_checklist_database.pdf
GRANTステートメントの実行時に発生した可能性のあるその他の例外:
ORA-01031: insufficient privileges
また
ORA-04042: procedure, function, package, or package body does not exist.
いずれの場合も、必ずSYS(SYSDBA)としてデータベースに接続し、特権を付与してください。ほとんどの場合、GRANTEEとして他のユーザーを使用するのではなく、オブジェクトの所有者として特権を付与します。オブジェクト特権で「WITHGRANTOPTION」を使用することはほとんどありません。これはより単純なモデルであり、依存関係ツリーに関する潜在的な問題を回避します。